中值滤波器原理

如果不在边缘区域,图像的数据是平缓的,没有太大的差值。因此,一个噪声点的值要么过大,要么过小。比如下图,左图是没有处理的原图,250在该区域由为突出,通过对3*3的9个数据进行排序,将中间值150重新填入,即滤波完成,原本的噪声点被去掉,该区域恢复平缓。同理,在边缘区域中,对于边界来说,高频不会影响,而过低数值将会突出,中值的选择将不会受到影响,除非3*3的整块区域都被污染,这时我们可以考虑更大的核来处理。

java 实现

/**

*

Title: medfilt2

*

Description:中值滤波

* @param imagesPos

* @param tmp 模板矩阵 2*2

* @return

*/

public static Matrix medfilt2(Matrix imagesPos, Matrix tmp) {

/**imagesPos 计算矩阵外围追加数值为0外围,以防矩阵下表越界*/

Matrix appendPos=DenseMatrix.Factory.emptyMatrix();

appendPos=appendPos.appendVertically(Ret.NEW, imagesPos);

Matrix v= DenseMatrix.Factory.zeros(1,imagesPos.getColumnCount());

appendPos=appendPos.appendVertically(Ret.NEW, v);

Matrix h= DenseMatrix.Factory.zeros(imagesPos.getRowCount()+1,1);

appendPos=appendPos.appendHorizontally(Ret.NEW, h);

Matrix matRt= DenseMatrix.Factory.zeros(imagesPos.getRowCount(),imagesPos.getColumnCount());

for(int i=0;i

Matrix matTmp= DenseMatrix.Factory.zeros(tmp.getColumnCount(), tmp.getColumnCount());

for(int j=0;j

/**求和*/

double [] d= {appendPos.getAsDouble(i,j),appendPos.getAsDouble(i,j+1),

appendPos.getAsDouble(i+1,j),appendPos.getAsDouble(i+1,j+1)};

Arrays.sort(d);

/**依据模板矩阵2*2 计算中值*/

double dbMid=(d[1]+d[2])/2;

matRt.setAsDouble(dbMid, i,j);

}

}

return matRt;

}

java中值滤波_中值滤波 java实现相关推荐

  1. java list sublist方法_(转)Java 中 List.subList() 方法的使用陷阱

    原文:http://blog.csdn.net/cleverGump/article/details/51105235 前言 本文原先发表在我的 iteye博客: http://clevergump. ...

  2. java byte 判断相等_你真的了解Java中quot;==quot;和equals()的区别?

    部分面试资料链接:https://pan.baidu.com/s/1qDb2YoCopCHoQXH15jiLhA 密码:jsam 想获得全部面试必看资料,关注公众号,大家可以在公众号后台回复" ...

  3. java json 修改字段_我们如何使用Java中的Jackson来更改JSON中的字段名称?

    杰克逊注释@JsonProperty上使用期间的属性或方法的序列或反串行化的JSON.它带有一个可选的' name '参数,当属性名称与JSON中的' key '名称不同时,该参数很有用.默认情况下, ...

  4. 中软国际java开发面试题_中软国际java面试题及参考答案

    面试题是中软国际java个人求职者在面试过程中的敲门砖,以下是小编为大家收集到的,希望对大家有帮助! :填空题 1Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制的特点? B ...

  5. java包装和引用_回顾值传递和引用传递关于Java是值传递还是引用传递,网上有不一样的说法。1、基本类型或基本类型的包装类以及String是值传递,引用类型是引用传递。2...

    回顾值传递和引用传递 关于Java是值传递还是引用传递,网上有不一样的说法. 1.基本类型或基本类型的包装类以及String是值传递,引用类型是引用传递. 2.Java中只有值传递. 关于这个问题应该 ...

  6. java中char类型_【考点】JAVA中的char类型

    写在前面: 本周,在我们同学的刷题群里,一位同学上传了一道关于char的题,引起的不少同学的热议.热议的同时,我们也发现近乎一半的同学对char的基础知识一知半解,今天我们给大家一个浅显易懂的解释,赶 ...

  7. java 数字 下划线_为什么要在Java SE 7的数字中使用下划线-在数字文字中使用下划线...

    java 数字 下划线 JDK 1.7发行版引入了几个有用的功能,尽管其中大多数都是语法糖,但使用该功能可以大大提高可读性和代码质量. 这样的功能之一是在数字文字中引入下划线 . 从Java 7开始, ...

  8. java菱形乱码 编码_【分享】Java开发过程中中文乱码问题总结

    一.文件乱码处理 1.文件默认编码:默认使用项目的默认编码 右击文件->Properties->Resource->Text file encoding 2.JSP文件编码:由于JS ...

  9. java读取csv文件_使用扫描仪读取Java中的CSV文件

    java读取csv文件 We can use Java Scanner Class to read CSV File in java. 我们可以使用Java扫描程序类在Java中读取CSV文件. 读取 ...

最新文章

  1. 怎么样才能快速的把淘宝店铺推广出去
  2. 限制HTTP数据包发送Referer
  3. aspx页面事件执行顺序
  4. 日期setHours()方法以及JavaScript中的示例
  5. Java中的堆和栈的区别
  6. 高质量代码才能最快投入生产
  7. 【JAVA】接口中的default和static方法
  8. JavaScript的简单复习
  9. 一款保险系统架构设计图
  10. php md5校验工具下载,md5校验工具下载_md5校验工具下载「最新|免费」-太平洋下载中心...
  11. 【vuejs】有关UI框架“ydui”中的tabbar底部导航的应用以及tabbar切换激活状态的现实
  12. 高并发下的秒杀系统设计
  13. epson LQ 600KIIH 针式打印机走纸问题
  14. 秩和检验的概念及python实现
  15. mysql中dint,请教一下Dint和Real型变量在使用过程中出现的问题
  16. 线上编程学院codecademy
  17. 正则表达式测试工具使用说明
  18. android 框架搭建养成的良好习惯(一)
  19. 购买服务器不显示d盘,购买云服务器后d盘
  20. codeforces 545 Round #303 (Div. 2) E Paths and Trees

热门文章

  1. Zotero和word关联保姆级教程
  2. PHP 多个远程图片打包下载
  3. 22:求两个给定正整数的最大公约数和最小公倍数
  4. dds:subscribe:DataReader
  5. [飞腾]Trace32使用概述
  6. 超市消费系统管理E-R图
  7. post导出excel
  8. matlab缺陷检测程序,MATLAB缺陷检测系统
  9. java 动态日历的实现
  10. 学校机房计算机安全使用制度,学校规章制度之计算机机房安全管理制度.doc