java中值滤波_Java实现图像中值滤波
pixel是通过标准jdk或android bitmap获取的图像32位像素数组
这个方法的滤波器尺寸是3*3,需要更大尺寸滤波器可以依此类推,ColorModel可根据各平台变化调整
private int[] medianFiltering(int[] pixel, int w, int h) {
int[] newPixel = new int[w * h];
int[] tempR = new int[9];
int[] tempG = new int[9];
int[] tempB = new int[9];
ColorModel cm = ColorModel.getRGBdefault();
// median values of the matrix
int r;
int g;
int b;
for (int y = 0; y < h; y++) {
for (int x = 0; x < w; x++) {
if (x == 0 || x == w - 1 || y == 0 || y == h - 1) {
newPixel[y * w + x] = pixel[y * w + x];
continue;
}
tempR[0] = cm.getRed(pixel[x - 1 + (y - 1) * w]);
tempR[1] = cm.getRed(pixel[x + (y - 1) * w]);
tempR[2] = cm.getRed(pixel[x + 1 + (y - 1) * w]);
tempR[3] = cm.getRed(pixel[x - 1 + y * w]);
tempR[4] = cm.getRed(pixel[x + y * w]);
tempR[5] = cm.getRed(pixel[x + 1 + y * w]);
tempR[6] = cm.getRed(pixel[x - 1 + (y + 1) * w]);
tempR[7] = cm.getRed(pixel[x + (y + 1) * w]);
tempR[8] = cm.getRed(pixel[x + 1 + (y + 1) * w]);
r = getMedianValue(tempR);
tempG[0] = cm.getGreen(pixel[x - 1 + (y - 1) * w]);
tempG[1] = cm.getGreen(pixel[x + (y - 1) * w]);
tempG[2] = cm.getGreen(pixel[x + 1 + (y - 1) * w]);
tempG[3] = cm.getGreen(pixel[x - 1 + y * w]);
tempG[4] = cm.getGreen(pixel[x + y * w]);
tempG[5] = cm.getGreen(pixel[x + 1 + y * w]);
tempG[6] = cm.getGreen(pixel[x - 1 + (y + 1) * w]);
tempG[7] = cm.getGreen(pixel[x + (y + 1) * w]);
tempG[8] = cm.getGreen(pixel[x + 1 + (y + 1) * w]);
g = getMedianValue(tempG);
tempB[0] = cm.getBlue(pixel[x - 1 + (y - 1) * w]);
tempB[1] = cm.getBlue(pixel[x + (y - 1) * w]);
tempB[2] = cm.getBlue(pixel[x + 1 + (y - 1) * w]);
tempB[3] = cm.getBlue(pixel[x - 1 + y * w]);
tempB[4] = cm.getBlue(pixel[x + y * w]);
tempB[5] = cm.getBlue(pixel[x + 1 + y * w]);
tempB[6] = cm.getBlue(pixel[x - 1 + (y + 1) * w]);
tempB[7] = cm.getBlue(pixel[x + (y + 1) * w]);
tempB[8] = cm.getBlue(pixel[x + 1 + (y + 1) * w]);
// median value
b = getMedianValue(tempB);
newPixel[y * w + x] = 255 << 24 | r << 16 | g << 8 | b;
}
}
return newPixel;
}
java中值滤波_Java实现图像中值滤波相关推荐
- java 数字图片识别_java – 识别图像中的数字
您很可能需要执行以下操作: >在整个页面上应用Hough Transform算法,这应该会产生一系列页面部分. >对于您获得的每个部分,请再次应用.如果当前部分产生2个元素,那么你应该处理 ...
- C#中的bitmap类和图像像素值获取方法
private void button1_Click_1(object sender, EventArgs e) { // 画直线 //Bitmap bitM ...
- java字符串去掉中文_Java——去除字符串中的中文
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RemoveStrChinese { priv ...
- java中正则表达式函数_java正则表达式PHP中的正则表达式函数介绍
java正则表达式PHP中的正则表达式函数介绍 正则表达式(Regular Expression) 正则表达式系统: 1.POSIX 2.Perl PHP中使用的regex是PCRE: NOTE:PC ...
- java和Mysql数据一致性_java web开发中数据一致性的问题
在java web开发中,数据存储介质有如下几种数据库(rdms,nosql) 缓存系统(redis,memcached,ehcache) java内部数据结构(map,list) 文件存储(fast ...
- java ocr技术原理_Java OCR 图像智能字符识别技术,可识别中文
几天一直在研究OCR技术,据我了解的情况,国内最专业的OCR软件只有2家,清华TH-OCR和汉王OCR,看了很多的OCR技术发现好多对英文与数字的支持都很好,可惜很多都不支持中文字符.Asprise- ...
- c语言如何框出视频或图像中的车辆,[转载]视频图像中的车辆检测跟踪和分类
摘要:介绍了一种在固定的单摄像头拍摄的交通图像序列中检测.跟踪.分类车辆的方法.该方法大致可分为三部分:抽取背景图像和图像分割:基于针孔模型的摄像机定标,计算透视投影矩阵:利用区域特性进行匹配跟踪,建 ...
- java integer的范围_java integer的取值范围是什么?
Java Integer取值范围 Integer类取值和 int 类型取值一致,取值范围是从-2147483648 至 2147483647 ,包括-2147483648 和 2147483647. ...
- 信号中的卷积积分与图像中的卷积运算
https://www.zhihu.com/question/22298352 对卷积的困惑 卷积这个概念,很早以前就学过,但是一直没有搞懂.教科书上通常会给出定义,给出很多性质,也会用实例和图形进行 ...
最新文章
- 【经验】网络加速:pip
- 使用pinchzoom实现头像剪裁
- 序列处理工具|Seqkit
- MIT自动驾驶船下水!可乘坐5人,阿姆斯特丹运河航行3小时误差不到0.17米
- 基于单个xml的数据库
- 完美解答35K月薪的MySQL面试题(四)MySQL是如何加行锁的?
- ML之LiR:基于编程实现简单线性回归案例
- 大健康产业里的巨头身影:格局已定但业务创新才刚刚开始
- mysql修改密码后phpmyadmin 出现#1045
- 事务连接中断_一文搞懂分布式事务-CAP理论
- 什么是IDE(集成开发环境)?
- Nginx 指令目录(中文版)
- 关于spring mvc时间类型绑定失败解决方法
- Unity,基于layer的碰撞配置
- 元气骑士机器人的成就皮肤_元气骑士:5把特殊“红武”,想要机器人的皮肤,用它就对了!...
- 软件测试面试题【2021模拟面试整理版(含答案)】
- mac:通过鼠标右键 新建文本文档
- 成功解决 MDK5中No ST-LINK detected的问题
- 【Python】基础语法之一:变量、字符串、数、注释
- 后端学习 - 操作系统