科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件java数字图像处理常用算法

java数字图像处理常用算法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

前些时候做毕业设计,用java做的数字图像处理方面的东西,这方面的资料ms比较少,发点东西上来大家共享一下,主要就是些算法,有自己写的,有人家的,还有改人家的,有的算法写的不好,大家不要见笑。

作者:中国IT实验室 来源:中国IT实验室 2007年8月23日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

八  垂直边缘检测,sobel算子

    public int[] verticleEdgeCheck(int []data,int width,int height,int sobelCoefficients) throws Exception{
     int filterData[]=new int[data.length];
     int min=10000;
     int max=-10000;
     if(data.length!=width*height)
      return filterData;
     
     try{
     
       for(int i=0;i<height;i++){
       for(int j=0;j<width;j++){
        if(i==0 || i==1 || i==height-1 || i==height-2
           ||j==0 || j==1 || j==width-1 || j==width-2){
               filterData[i*width+j]=data[i*width+j];
         }
         else{
          double average;
            //中心的九个像素点
             //average=data[i*width+j]-Math.sqrt(2)*data[i*width+j-1]+Math.sqrt(2)*data[i*width+j+1]
          average=data[i*width+j]-sobelCoefficients*data[i*width+j-1]+sobelCoefficients*data[i*width+j+1]      
                  -data[(i-1)*width+j-1]+data[(i-1)*width+j+1]
                     -data[(i+1)*width+j-1]+data[(i+1)*width+j+1];
             filterData[i*width+j]=(int)(average);
         }      
        if(filterData[i*width+j]<min)
         min=filterData[i*width+j];
         if(filterData[i*width+j]>max)
         max=filterData[i*width+j];
        }
        }
       for(int i=0;i<width*height;i++){
        filterData[i]=(filterData[i]-min)*255/(max-min);
         }
     
     }
     catch (Exception e)
     {
            e.printStackTrace();
            throw new Exception(e);
        } 
     
     return filterData;
    } 


九  图像平滑:3*3掩模处理(平均处理),降低噪声   

    public int[] filter(int []data,int width,int height) throws Exception{
     
     int filterData[]=new int[data.length];
     int min=10000;
     int max=-10000;
     if(data.length!=width*height)
      return filterData;
     
     try{
     
       for(int i=0;i<height;i++){
       for(int j=0;j<width;j++){
        if(i==0 || i==1 || i==height-1 || i==height-2
           ||j==0 || j==1 || j==width-1 || j==width-2){
               filterData[i*width+j]=data[i*width+j];
         }
         else{
          double average;
            //中心的九个像素点
             average=(data[i*width+j]+data[i*width+j-1]+data[i*width+j+1]
                     +data[(i-1)*width+j]+data[(i-1)*width+j-1]+data[(i-1)*width+j+1]
                     +data[(i+1)*width+j]+data[(i+1)*width+j-1]+data[(i+1)*width+j+1])/9;
             filterData[i*width+j]=(int)(average);
         }      
        if(filterData[i*width+j]<min)
         min=filterData[i*width+j];
         if(filterData[i*width+j]>max)
         max=filterData[i*width+j];
        }
        }
       for(int i=0;i<width*height;i++){
        filterData[i]=(filterData[i]-min)*255/(max-min);
         }
     
     }
     catch (Exception e)
     {
            e.printStackTrace();
            throw new Exception(e);
        } 
     
     return filterData;
    } 

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章