首页 > 编程语言 >均值滤波及中值滤波(Java)

均值滤波及中值滤波(Java)

时间:2022-11-29 16:36:09浏览次数:42  
标签:Java img int 滤波 height BMPImage 中值 img2

既然要滤波,先添加点噪点:

public static BMPImage AddNoise(BMPImage img){
        BMPImage img2=new BMPImage(img.width,img.height);
        for(int i=1;i<img.height-1;i++){
            for(int j=1;j<img.width-1;j++){
                img2.red[i][j]=img.red[i][j];
                img2.green[i][j]=img.green[i][j];
                img2.blue[i][j]=img.blue[i][j];
            }
        }
        for(int i=1;i<img.height-1;i++){
            for(int j=1;j<img.width-1;j++){
                double flag= Math.random();
                if(flag>0.98) {
                    img2.red[i][j] = 0;
                    img2.green[i][j] = 0;
                    img2.blue[i][j] = 0;
                }
            }
        }
        return img2;
    }
View Code

均值滤波:

public static BMPImage MeanFiltering(BMPImage img){
        BMPImage img2=new BMPImage(img.width,img.height);
        for(int i=1;i<img.height-1;i++){
            for(int j=1;j<img.width-1;j++){
                int r=0,g=0,b=0;
                for(int m=-1;m<=1;m++){
                    for(int n=-1;n<=1;n++){
                        r+=img.red[i+m][j+n];
                        g+=img.green[i+m][j+n];
                        b+=img.blue[i+m][j+n];
                    }
                }
                img2.red[i][j]=(int)(r/9.0);
                img2.green[i][j]=(int)(g/9.0);
                img2.blue[i][j]=(int)(b/9.0);
            }
        }
        return img2;
    }
View Code

 

 中值滤波:

public static BMPImage MidFiltering(BMPImage img){
        BMPImage img2=new BMPImage(img.width,img.height);
        for(int i=1;i<img.height-1;i++){
            for(int j=1;j<img.width-1;j++){
                int[] r=new int[9];
                int[] g=new int[9];
                int[] b=new int[9];
                int cnt=0;
                for(int m=-1;m<=1;m++){
                    for(int n=-1;n<=1;n++){
                        r[cnt]=img.red[i+m][j+n];
                        g[cnt]=img.green[i+m][j+n];
                        b[cnt]=img.blue[i+m][j+n];
                        cnt++;
                    }
                }
                Arrays.sort(r);
                Arrays.sort(g);
                Arrays.sort(b);
                img2.red[i][j]=r[4];
                img2.green[i][j]=g[4];
                img2.blue[i][j]=b[4];
            }
        }
        return img2;
    }
View Code

 

标签:Java,img,int,滤波,height,BMPImage,中值,img2
From: https://www.cnblogs.com/capterlliar/p/16935751.html

相关文章

  • java小工具util系列8:JSONObject获取key
    场景问题:JSONObject获取所有的key解决方案技巧:JSONObject获取key:↓JSONObjectobj;for(Map.Entry<String,Object>entry:cutReceiveAlarmMessageObject.entrySet......
  • 1、引入Javascript的几种方式
    <scripttype="text/javascript">window.alert("hellojs");//alert函数会阻塞整个页面加载的作用,当我们把script放到最前面//当alert按......
  • 幂等——Java基础api设计
    幂等什么是幂等幂等性:****多次调用方法或者接口不会改变业务状态,可以保证重复调用的结果和单次调用的结果一致。使用幂等的场景1.前端重复提交在用户注册、用户创建商......
  • java selenium
    selenium是一种web自动化测试的工具,可以控制浏览器,进行网页操作准备首先,下载谷歌驱动,下载地址http://npm.taobao.org/mirrors/chromedriver/查看自己的谷歌浏览器版......
  • JavaScript笔记
    JavaScript合集学完HTML5+CSS3的小伙伴,学习JS时,要多敲多练多想多拓展刚开始入门JS的时候,我们不需要纠结那么多,有些需要先记住,后面会慢慢明白为什么是这样的JS基础部分......
  • 【JAVA基础】String处理
    String处理字符串查找子串及截取//保存的头像文件的文件名Stringsuffix="";StringoriginalFilename=file.getOriginalFilename();......
  • 【JAVA基础】List处理
    List处理List使用Lists.partition()分片publicstatic<T>List<List<T>>partition(List<T>list,intsize)参数:该方法接受两个参数:list:该列表将根据分区大小分为......
  • Java的ExecutorService的shutdownNow()方法并不能保证一定会结束线程的解决办法
    这几天使用ExecutorService的时候遇到了在Task内部进行读取文件操作而导致死循环的问题,当我试图调用shutdownNow()方法的时候,发现并不是像我预想的一样会理解结束线程。我......
  • day07_java_数组
    d07Java数组(p51-p59)1.什么是数组?数组就是一组数的集合。数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后顺序排列组合而成。......
  • Java8新特性
    1.利用distinct去重 并保持数组的顺序ArrayList<Integer>list=newArrayList();list.add(7);list.add(5);list.add(9);list.a......