科技行者

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

知识库

知识库 安全导航

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

java数字图像处理常用算法

  • 扫一扫
    分享文章到微信

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

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

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

关键字:

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

二 由r g b 获取灰度数组

    public  int[] getBrightnessData(int rData[],int gData[],int bData[]){
     
     int brightnessData[]=new int[rData.length];
     if(rData.length!=gData.length || rData.length!=bData.length
       || bData.length!=gData.length){
      return brightnessData;
     }
     else {
      for(int i=0;i<bData.length;i++){
       double temp=0.3*rData[i]+0.59*gData[i]+0.11*bData[i];
       brightnessData[i]=(int)(temp)+((temp-(int)(temp))>0.5?1:0);
      }
      return brightnessData;
     }
     
    } 


三 直方图均衡化

    public int [] equilibrateGray(int[] PixelsGray,int width,int height)
    {         
         int gray;
         int length=PixelsGray.length;
         int FrequenceGray[]=new int[length];
         int SumGray[]=new int[256];
         int ImageDestination[]=new int[length];
         for(int i = 0; i <length ;i++)
        {
           gray=PixelsGray[i];
              FrequenceGray[gray]++;
        }
          //    灰度均衡化
         SumGray[0]=FrequenceGray[0];
         for(int i=1;i<256;i++){
               SumGray[i]=SumGray[i-1]+FrequenceGray[i]; 
         }
         for(int i=0;i<256;i++) {
               SumGray[i]=(int)(SumGray[i]*255/length); 
         }
         for(int i=0;i<height;i++)
         {
               for(int j=0;j<width;j++)
              {
                  int k=i*width+j;
                  ImageDestination[k]=0xFF000000 | ((SumGray[PixelsGray[k]]<<
                            16 ) | (SumGray[PixelsGray[k]]<< 8 ) | SumGray[PixelsGray[k]]);
               }
          }
         return ImageDestination;
      } 


四 laplace2阶滤波,增强边缘,图像锐化

    public int[] laplace2DFileter(int []data,int width,int height){
   
     int filterData[]=new int[data.length];
     int min=10000;
     int max=-10000;
     for(int i=0;i<height;i++){
      for(int j=0;j<width;j++){
       if(i==0 || i==height-1 || j==0 || j==width-1)
               filterData[i*width+j]=data[i*width+j];
       else
        filterData[i*width+j]=9*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];       
       if(filterData[i*width+j]<min)
        min=filterData[i*width+j];
       if(filterData[i*width+j]>max)
        max=filterData[i*width+j];
      }  
     }
//     System.out.println("max: "+max);
//     System.out.println("min: "+min);
     
     for(int i=0;i<width*height;i++){
      filterData[i]=(filterData[i]-min)*255/(max-min);
     }
     return filterData;
    } 

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

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

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