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实现图像中值滤波相关推荐

  1. java 数字图片识别_java – 识别图像中的数字

    您很可能需要执行以下操作: >在整个页面上应用Hough Transform算法,这应该会产生一系列页面部分. >对于您获得的每个部分,请再次应用.如果当前部分产生2个元素,那么你应该处理 ...

  2. C#中的bitmap类和图像像素值获取方法

     private void button1_Click_1(object sender, EventArgs e)         {             // 画直线 //Bitmap bitM ...

  3. java字符串去掉中文_Java——去除字符串中的中文

    import java.util.regex.Matcher; import java.util.regex.Pattern; public class RemoveStrChinese { priv ...

  4. java中正则表达式函数_java正则表达式PHP中的正则表达式函数介绍

    java正则表达式PHP中的正则表达式函数介绍 正则表达式(Regular Expression) 正则表达式系统: 1.POSIX 2.Perl PHP中使用的regex是PCRE: NOTE:PC ...

  5. java和Mysql数据一致性_java web开发中数据一致性的问题

    在java web开发中,数据存储介质有如下几种数据库(rdms,nosql) 缓存系统(redis,memcached,ehcache) java内部数据结构(map,list) 文件存储(fast ...

  6. java ocr技术原理_Java OCR 图像智能字符识别技术,可识别中文

    几天一直在研究OCR技术,据我了解的情况,国内最专业的OCR软件只有2家,清华TH-OCR和汉王OCR,看了很多的OCR技术发现好多对英文与数字的支持都很好,可惜很多都不支持中文字符.Asprise- ...

  7. c语言如何框出视频或图像中的车辆,[转载]视频图像中的车辆检测跟踪和分类

    摘要:介绍了一种在固定的单摄像头拍摄的交通图像序列中检测.跟踪.分类车辆的方法.该方法大致可分为三部分:抽取背景图像和图像分割:基于针孔模型的摄像机定标,计算透视投影矩阵:利用区域特性进行匹配跟踪,建 ...

  8. java integer的范围_java integer的取值范围是什么?

    Java Integer取值范围 Integer类取值和 int 类型取值一致,取值范围是从-2147483648 至 2147483647 ,包括-2147483648 和 2147483647. ...

  9. 信号中的卷积积分与图像中的卷积运算

    https://www.zhihu.com/question/22298352 对卷积的困惑 卷积这个概念,很早以前就学过,但是一直没有搞懂.教科书上通常会给出定义,给出很多性质,也会用实例和图形进行 ...

最新文章

  1. 【经验】网络加速:pip
  2. 使用pinchzoom实现头像剪裁
  3. 序列处理工具|Seqkit
  4. MIT自动驾驶船下水!可乘坐5人,阿姆斯特丹运河航行3小时误差不到0.17米
  5. 基于单个xml的数据库
  6. 完美解答35K月薪的MySQL面试题(四)MySQL是如何加行锁的?
  7. ML之LiR:基于编程实现简单线性回归案例
  8. 大健康产业里的巨头身影:格局已定但业务创新才刚刚开始
  9. mysql修改密码后phpmyadmin 出现#1045
  10. 事务连接中断_一文搞懂分布式事务-CAP理论
  11. 什么是IDE(集成开发环境)?
  12. Nginx 指令目录(中文版)
  13. 关于spring mvc时间类型绑定失败解决方法
  14. Unity,基于layer的碰撞配置
  15. 元气骑士机器人的成就皮肤_元气骑士:5把特殊“红武”,想要机器人的皮肤,用它就对了!...
  16. 软件测试面试题【2021模拟面试整理版(含答案)】
  17. mac:通过鼠标右键 新建文本文档
  18. 成功解决 MDK5中No ST-LINK detected的问题
  19. 【Python】基础语法之一:变量、字符串、数、注释
  20. 后端学习 - 操作系统

热门文章

  1. MacPE+WinPE-黑苹果之路
  2. Ubuntu学习之路2
  3. 刚刚创业的你 这几点让你的公司不断前进
  4. php安全篇值过滤用户输入的人参数
  5. 第8章 数据库实例与操作模式
  6. .NET性能优化方面的总结(转)
  7. 如何修改Window系统下PATH路径
  8. x86 服务器常见问题和故障诊断流程
  9. 常用Linux网络/内存/磁盘分析工具
  10. dpkg和apt-get命令的用法