图像处理pic1.0版

原创 2004年07月11日 21:59:00

package graphics;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.Image.*;
import java.io.*;
import java.awt.image.*;
import java.awt.*;
import java.util.*;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import javax.imageio.*;
public class Frame1 extends JFrame {
  final static int  R=2;
  final static int  G=1;
  final static int  B=0;
  final static int  ALPHA=3;
  JPanel contentPane;
  BorderLayout borderLayout1 = new BorderLayout();
  MenuBar menuBar1 = new MenuBar();
  Menu menu1 = new Menu();
  MenuItem menuItem1 = new MenuItem();
  Menu menu2 = new Menu();
  MenuItem menuItem2 = new MenuItem();
  JLabel lb=new JLabel();
  JPanel pl=new JPanel();
  MenuItem menuItem3 = new MenuItem();
  //主图像路径
  String strFile=null;
  String dir=null;
  //印章图像路径
  String strSealFile=null;
  String sealDir=null;
  MenuItem menuItem4 = new MenuItem();
  //主图像的像素数组
  int pixArray[]=null;
  int rArray[][]=null;
  int gArray[][]=null;
  int bArray[][]=null;
  int alpArray[][]=null;
  //定义印章图像的像素数组
  int sealPixArray[]=null;
  int sealRArray[][]=null;
  int sealGArray[][]=null;
  int sealBArray[][]=null;
  //主图像高、宽
  int h,w;
  //印章图像高、宽
  int sealH,sealW;

  MenuItem menuItem5 = new MenuItem();
  MenuItem menuItem6 = new MenuItem();
  MenuItem menuItem7 = new MenuItem();
  MenuItem menuItem8 = new MenuItem();
  MenuItem menuItem9 = new MenuItem();
  MenuItem menuItem10 = new MenuItem();
  Menu menu3 = new Menu();
  MenuItem menuItem11 = new MenuItem();
  public Frame1() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }


  private void jbInit() throws Exception  {
    contentPane = (JPanel) this.getContentPane();
    contentPane.setLayout(borderLayout1);
    this.setSize(new Dimension(400, 300));
    this.setTitle("Pic");
    menu1.setLabel("File");
    menuItem1.setLabel("open");
    menuItem1.addActionListener(new Frame1_menuItem1_actionAdapter(this));
    menu2.setLabel("Edit");
    menuItem2.setLabel("toBandW");
    menuItem2.addActionListener(new Frame1_menuItem2_actionAdapter(this));
   // menuItem2.addActionListener(new Frame1_menuItem2_actionAdapter(this));
    menuItem3.setLabel("zhifangtujunyun");
    menuItem3.addActionListener(new Frame1_menuItem3_actionAdapter(this));
    //menuItem3.addActionListener(new Frame1_menuItem3_actionAdapter(this));
    menuItem4.setLabel("RGBtoGray");
    menuItem4.addActionListener(new Frame1_menuItem4_actionAdapter(this));
    menuItem5.setLabel("linearRange");
    menuItem5.addActionListener(new Frame1_menuItem5_actionAdapter(this));
    menuItem6.setLabel("addSeal");
    menuItem6.addActionListener(new Frame1_menuItem6_actionAdapter(this));
    menuItem7.setLabel("addSeals");
    menuItem7.addActionListener(new Frame1_menuItem7_actionAdapter(this));
    menuItem8.setLabel("toHalf");
    menuItem8.addActionListener(new Frame1_menuItem8_actionAdapter(this));
    menuItem9.setLabel("save");
    menuItem9.addActionListener(new Frame1_menuItem9_actionAdapter(this));
    menuItem10.setLabel("exit");
    menuItem10.addActionListener(new Frame1_menuItem10_actionAdapter(this));
    menu3.setLabel("Help");
    menuItem11.setLabel("about");
    menuItem11.addActionListener(new Frame1_menuItem11_actionAdapter(this));
    menuBar1.add(menu1);
    menuBar1.add(menu2);
    menuBar1.add(menu3);
    menu1.add(menuItem1);
    menu1.add(menuItem9);
    menu1.add(menuItem10);
    menu2.add(menuItem2);
    menu2.add(menuItem3);
    menu2.add(menuItem4);
    menu2.add(menuItem5);
    menu2.add(menuItem6);
    menu2.add(menuItem7);
    menu2.add(menuItem8);
    setMenuBar(menuBar1);
    contentPane.add(pl,BorderLayout.CENTER);
    pl.add(lb);
    menu3.add(menuItem11);
  }

   protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }


  void menuItem1_actionPerformed(ActionEvent e) {


   FileDialog fd=new FileDialog(this,"Open");
    fd.show();
    if(fd.getFile()!=null){
      strFile = fd.getFile();
      dir=fd.getDirectory();
    }
    ImageIcon source=new ImageIcon(dir+strFile);
    h=source.getIconHeight();
    w=source.getIconWidth();
        lb.setIcon(source);
        lb.repaint();
    //为什么下面的代码,需要对rgb,alp数组进行初始化,而不需要对pixArray进行初始化?
    rArray=new int[h][w];
    gArray=new int[h][w];
    bArray=new int[h][w];
    alpArray=new int[h][w];

    pixArray=getPixArray(dir+strFile,w,h);
    rArray=getColorArray(pixArray,w,h,R);
    gArray=getColorArray(pixArray,w,h,G);
    bArray=getColorArray(pixArray,w,h,B);
    alpArray=getColorArray(pixArray,w,h,ALPHA);

  }

 

  void menuItem4_actionPerformed(ActionEvent e) {
            Image im=Toolkit.getDefaultToolkit().getImage(dir+strFile);
            //int h=im.getHeight(null);
            //int w=im.getWidth(null);
            int[][] graArray=new int[h][w];
      //getPixArray(dir+strFile);
      //getRArray(pixArray);
      ///getGArray(pixArray);
      //getBArray(pixArray);
      //getAlpArray(pixArray);
      graArray=RGBtoGray(rArray,gArray,bArray,w,h);
      Image pic=createImage(new MemoryImageSource(w,h,arrayTransform(graArray,w,h),0,w));
      ImageIcon ic=new ImageIcon(pic);
      lb.setIcon(ic);
      lb.repaint();

  }

  public static void main(String args[])
  {
          new Frame1().show();
  }
  public int[][] getGrayArray(int[][] r,int[][] g,int[][] b,int w,int h)
  {
          int gray[][];
          gray=new int[h][w];
          for(int i=0;i<h;i++)
          {
            for(int j=0;j<w;j++)
            {
              gray[i][j] = (int) (r[i][j] * 0.3 + g[i][j] * 0.59 + b[i][j] * 0.11);
            }
          }
          return  gray;

  }
  public int[]getPixArray(String path,int w,int h)
  {
    Image im=Toolkit.getDefaultToolkit().getImage(path);
    int[] pix=new int[w*h];
    PixelGrabber pg=null;
    try{
      pg = new PixelGrabber(im, 0, 0, w, h, pix, 0,
                            w);
      if(pg.grabPixels()!=true)
        try{
          throw new java.awt.AWTException("pg error"+pg.status());
        }catch(Exception eq)
        {
                eq.printStackTrace();
                }
    } catch(Exception ex){
            ex.printStackTrace();

      }
   return pix;
  }
public int[][] getColorArray(int[] sourceArray,int w,int h,int  color)
{
       int index=0;

       int[][] array=new int[h][w];
        for(int i=0;i<h;i++)
        {
          for(int j=0;j<w;j++)
          {
            array[i][j] = (sourceArray[index] >>color*8) & 0xff;
            index++;
          }
        }
      return array;
}

public int[] linearRange(int[] grayArray,double a,double b)
{
        int[] grArray=new int[grayArray.length];
        for(int i=0;i<grayArray.length;i++)
        {
                grArray[i]=(int)(grayArray[i]*a-b);
                if(grArray[i]<0)
                grArray[i]=0;
                if(grArray[i]>255)
                grArray[i]=255;

        }
        return grArray;
}
public int[][] RGBtoGray(int[][] r,int[][] g,int[][] b,int w,int h)
{
  int[][] gray=new int[h][w];
  gray=getGrayArray(r,g,b,w,h);
  for(int i=0;i<h;i++)
  {
    for(int j=0;j<w;j++)
    {
      gray[i][j] = (255 << 24) | gray[i][j] << 16 | gray[i][j] << 8 | gray[i][j];
    }
  }
  return gray;
}
public int[] RGBtoBW(int[][] r,int[][]g,int[][]b,int p)
{
  int[][] gray=new int[h][w];
  gray=getGrayArray(r,g,b,w,h);
  for(int i=0;i<h;i++)
  {
    for (int j = 0; j < w; j++) {
      if (gray[i][j] < p) gray[i][j] = 0;
      else
        gray[i][j] = 255;
    }
  }

  return  arrayTransform(gray,w,h);
}
//直方图均匀化
public int[] zftjy(int[] gr)
{
  double[] v=new double[256];
  int pixel=w*h;
  double[] hs=new double[256];//计算每个灰度级的像素个数在整个图像中所占的百分比
  double[] hp=new double[256];//计算图像各灰度级的累计分布hp
  int[] gray=new int[gr.length];//直方图匀化后的像素矩阵
  //求出原图f的灰度直方图,
  for(int i=0;i<gr.length;i++)
  {
    v[gr[i]]++;
  }
  for(int i=0;i<256;i++)
  {
    hs[i]=v[i]/pixel;
  }
  for(int i=0;i<256;i++)
  {
    for(int j=0;j<=i;j++)
    {
      hp[i] = hp[i] + hs[j];
    }
  }
  hp[0]=0;
  for(int i=0;i<gr.length;i++)
  {
    gray[i]=(int)(255*hp[gr[i]]);
  }
  return gray;
}
  void menuItem5_actionPerformed(ActionEvent e) {
    int[] gray=arrayTransform(getGrayArray(rArray,gArray,bArray,w,h),w,h);
    gray=linearRange(gray,1.2,20);
    for(int i=0;i<gray.length;i++)
    {
      gray[i]=(255<<24)|(gray[i]<<16)|(gray[i]<<8)|gray[i];
    }
    Image im=createImage(new MemoryImageSource(w,h,gray,0,w));
    lb.setIcon(new ImageIcon(im));
    lb.repaint();
  }
 /* public void  arrayInit(String path)
  {
    pixArray=getPixArray(path,w,h);
    getRArray(pixArray,w,h);
    getGArray(pixArray,w,h);
    getBArray(pixArray,w,h);
    getAlpArray(pixArray,w,h);
  }*/

  void menuItem2_actionPerformed(ActionEvent e) {
    int[] gray=RGBtoBW(rArray,gArray,bArray,150);
    for(int i=0;i<gray.length;i++)
    {
      gray[i]=(255<<24)|(gray[i]<<16)|(gray[i]<<8)|gray[i];
    }
    Image im=createImage(new MemoryImageSource(w,h,gray,0,w));
    lb.setIcon(new ImageIcon(im));
    lb.repaint();

  }

  void menuItem3_actionPerformed(ActionEvent e) {
    int[] gray=zftjy(arrayTransform(getGrayArray(rArray,gArray,bArray,w,h),w,h));
       // gray=linearRange(gray,1.2,20);
        for(int i=0;i<gray.length;i++)
        {
          gray[i]=(255<<24)|(gray[i]<<16)|(gray[i]<<8)|gray[i];
        }
        Image im=createImage(new MemoryImageSource(w,h,gray,0,w));
        lb.setIcon(new ImageIcon(im));
        lb.repaint();

  }
 public void getSealDimension(String path)
 {
   ImageIcon source=new ImageIcon(path);
    sealH=source.getIconHeight();
    sealW=source.getIconWidth();
 }
 public void  sealImgInit()
 {

 }
 public int[] arrayTransform(int[][] original,int w,int h)
 {
   int[] array=new int[w*h];
   int index=0;
   for(int i=0;i<h;i++)
   {
     for(int j=0;j<w;j++)
     {
       array[index]=original[i][j];
       index++;
     }
   }
   return array;
 }
 public int[][] arrayTransform(int[] original,int w,int h)
 {
   int[][] array=new int[h][w];
   int index=0;
   for(int i=0;i<h;i++)
   {
     for(int j=0;j<w;j++)
     {
       array[i][j]=original[index];
       index++;
     }
   }
   return array;
 }
public int[][] addSeal(int[][] source,int[][] seal,int srcW,int srcH,int sealW,
                      int sealH,int Xoffset,int Yoffset)
 {
   int[][] des=new int[srcH][srcW];
   //分五个部分处理印章和原图像的像素 上,左 印章 右 下
   //处理印章上面部分的原图像像素数组
   for(int i=0;i<Yoffset;i++)
   {
     for(int j=0;j<srcW;j++)
     {
       des[i][j]=source[i][j];
     }
   }
   //处理印章左边部分的原图像像素
  /* for(int i=Yoffset;i<Yoffset+sealH;i++)
   {
     for(int j=0;j<Xoffset;j++)
     {
       des[i][j]=source[i][j];
     }
   }
   //处理印章右边部分原图像的像素
   for(int i=Yoffset;i<Yoffset+sealH;i++)
   {
     for(int j=Xoffset+sealW;j<srcW;j++)
     {
       des[i][j]=source[i][j];
     }
   }*/
   //处理印章下面原图像的像素数组
   for(int i=Yoffset+sealH;i<srcH;i++)
  {
    for(int j=0;j<srcW;j++)
    {
      des[i][j]=source[i][j];
    }
  }
  //处理印章部分的像素
  int indexH=0;
  //System.out.print(seal[10][133]);
  for(int i=Yoffset;i<Yoffset+sealH;i++)
  {
    int indexW=0;
    for(int j=Xoffset;j<Xoffset+sealW;j++)
    {
      des[i][j]=seal[indexH][indexW];
      indexW++;
    }
    indexH++;
  }
  int width=Xoffset+sealW/2;
  boolean sign=false;

  //在印章图像上得到圆形轨迹
  //处理印章图像左边
  int[] traceX1=new int[sealH];
  int[] traceX2=new int[sealH];

  for(int i=0;i<sealH;i++)
  {

    traceX1[i]=(int)(Xoffset+sealW/2-Math.pow((Math.pow(sealH/2,2)-Math.pow(sealH/2-i,2)),0.5));
    traceX2[i]=(int)(Xoffset+sealW/2+Math.pow((Math.pow(sealH/2,2)-Math.pow(sealH/2-i,2)),0.5));
    //System.out.println(traceX[i]);
  }
  int index=0;
  for(int i=Yoffset;i<Yoffset+sealH;i++)
  {
    for(int j=0;j<traceX1[index];j++)
    {
      des[i][j]=source[i][j];

    }
    for(int k=traceX2[index];k<srcW;k++)
    {
      des[i][k]=source[i][k];
    }
    index++;
   }
   //处理印章右边部分(得到圆形印章)

 return des;
 }
  void menuItem6_actionPerformed(ActionEvent e) {
        FileDialog fd=new FileDialog(this,"open seal");
        //fd.setFilenameFilter(new dirFilter());
        fd.show();
        if(fd.getFile()!=null){
          strSealFile = fd.getFile();
         sealDir=fd.getDirectory();
          }
        ImageIcon source=new ImageIcon(sealDir+strSealFile);
        sealH=source.getIconHeight();
        sealW=source.getIconWidth();

        sealRArray=new int[sealH][sealW];
        sealGArray=new int[sealH][sealW];
        sealBArray=new int[sealH][sealW];

        System.out.print(sealH+":"+sealW);

        sealPixArray=getPixArray(sealDir+strSealFile,sealW,sealH);

        System.out.println(sealPixArray.length);

        sealRArray=getColorArray(sealPixArray,sealW,sealH,R);
        sealGArray=getColorArray(sealPixArray,sealW,sealH,G);
        sealBArray=getColorArray(sealPixArray,sealW,sealH,B);
        int[][] src=new int[h][w];
        int[][] sel=new int[sealH][sealW];
        int[] des=new int[h*w];

        src=arrayTransform(pixArray,w,h);
        sel=arrayTransform(sealPixArray,sealW,sealH);
        System.out.println(sealPixArray[0]);
        System.out.print(sel[0][0]);
        des=arrayTransform(addSeal(src,sel,w,h,sealW,sealH,300,400),w,h);
        Image im=createImage(new MemoryImageSource(w,h,des,0,w));
        //lb.setSize(w/2,h/2);
        lb.setIcon(new ImageIcon(im));
        lb.repaint();

  }

  void menuItem7_actionPerformed(ActionEvent e) {
        String[] srcFiles=null;
        JFileChooser fc=new JFileChooser();
        fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        fc.showDialog(this,"open");
        System.out.print(fc.getCurrentDirectory());
        String temp=fc.getCurrentDirectory().toString();
        sort(temp);
       }
       public ArrayList getDirectory(String directory)
       {
         File file=new File(directory);
         if (!file.isDirectory()) return null;
         ArrayList files=new ArrayList();
         files.add(directory);
         String[] _files=file.list();
         String tmp=null;
         for (int i=0; i<_files.length; i++)
         {
           tmp=directory+"//"+_files[i];
           if (getDirectory(tmp)!=null) files.addAll(getDirectory(tmp));
         }
         return files;
       }
     public void sort(String directory)
       {
         ArrayList arr=getDirectory(directory);
         Object[] files=arr.toArray();
         Arrays.sort(files,new Comparator(){public int compare(Object obj1,Object obj2) { return ((String)obj1).length()-((String)obj2).length();}});
         for (int i=0; i<files.length; i++)
           System.out.println(files[i]);
       }

  void menuItem8_actionPerformed(ActionEvent e) {
   int hh=h/2;
   int ww=w/2;
   int[][] rr=new int[hh][ww];
   int[][] gg=new int[hh][ww];
   int[][] bb=new int[hh][ww];
   int[] pp=new int[hh*ww];
   for(int i=0;i<hh;i++)
   {
     for(int j=0;j<ww;j++)
     {
       rr[i][j]=rArray[i*2][j*2];
       gg[i][j]=gArray[i*2][j*2];
       bb[i][j]=bArray[i*2][j*2];
     }
     /*
     rr[i]=rArray[i*2];
     gg[i]=gArray[i*2];
     bb[i]=bArray[i*2];*/
   }
   int[] r=arrayTransform(rr,ww,hh);
   int[] g=arrayTransform(gg,ww,hh);
   int[] b=arrayTransform(bb,ww,hh);
   for(int i=0;i<hh*ww;i++)
   {
     pp[i]=(255<<24)|(r[i]<<16)|(g[i]<<8)|b[i];
   }
   Image im=createImage(new MemoryImageSource(ww,hh,pp,0,ww));
   lb.setIcon(new ImageIcon(im));
   lb.repaint();
  }

  void menuItem9_actionPerformed(ActionEvent e) {
    Icon ic=lb.getIcon();
    //lb.getGraphics().copyArea(0,0);
    //ImageIO.
    //lb.getGraphics().
    /*Image img=lb.createImage(w,h);
    Graphics gr=img.getGraphics();
    gr.drawImage(lb.getIcon(),0,0,null);
    RepaintManager rm=RepaintManager.currentManager(this);
    lb.setBackground(Color.red);
    lb.setForeground(Color.BLUE);
    lb.repaint();*/
    ImageIcon ii=(ImageIcon)ic;
    Image src=ii.getImage();
    //Image src=rm.getOffscreenBuffer(lb,w,h);
    //Image src=(Image)ic;
    int ww=src.getWidth(null);
    int hh=src.getHeight(null);
    BufferedImage bi=new BufferedImage(ww,hh,BufferedImage.TYPE_INT_BGR);
    bi.getGraphics().drawImage(src,0,0,ww,hh,null);
    try{
      FileOutputStream out = new FileOutputStream(dir + "newfile.jpg");
      JPEGImageEncoder je = JPEGCodec.createJPEGEncoder(out);
      je.encode(bi);
    }catch(Exception ex){}

  }

  void menuItem10_actionPerformed(ActionEvent e) {
//this.exi
    System.exit(0);
  }

  void menuItem11_actionPerformed(ActionEvent e) {
  about ab=new about();
  ab.setSize(200,200);
  ab.show();
 
  }
}


class Frame1_menuItem1_actionAdapter implements java.awt.event.ActionListener {
  Frame1 adaptee;

  Frame1_menuItem1_actionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.menuItem1_actionPerformed(e);
  }
}
class Frame1_menuItem4_actionAdapter implements java.awt.event.ActionListener {
  Frame1 adaptee;

  Frame1_menuItem4_actionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.menuItem4_actionPerformed(e);
  }
}

class Frame1_menuItem5_actionAdapter implements java.awt.event.ActionListener {
  Frame1 adaptee;

  Frame1_menuItem5_actionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.menuItem5_actionPerformed(e);
  }
}

class Frame1_menuItem2_actionAdapter implements java.awt.event.ActionListener {
  Frame1 adaptee;

  Frame1_menuItem2_actionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.menuItem2_actionPerformed(e);
  }
}

class Frame1_menuItem3_actionAdapter implements java.awt.event.ActionListener {
  Frame1 adaptee;

  Frame1_menuItem3_actionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.menuItem3_actionPerformed(e);
  }
}

class Frame1_menuItem6_actionAdapter implements java.awt.event.ActionListener {
  Frame1 adaptee;

  Frame1_menuItem6_actionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.menuItem6_actionPerformed(e);
  }
}
class dirFilter implements FilenameFilter {

//private String extension;

/*public dirFilter(String extension) {
this.extension = extension;
} */

public boolean accept(File file,String str) {
if(file.isFile()) {
return false;
}
return true;
}
}

class Frame1_menuItem7_actionAdapter implements java.awt.event.ActionListener {
  Frame1 adaptee;

  Frame1_menuItem7_actionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.menuItem7_actionPerformed(e);
  }
}

class Frame1_menuItem8_actionAdapter implements java.awt.event.ActionListener {
  Frame1 adaptee;

  Frame1_menuItem8_actionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.menuItem8_actionPerformed(e);
  }
}

class Frame1_menuItem9_actionAdapter implements java.awt.event.ActionListener {
  Frame1 adaptee;

  Frame1_menuItem9_actionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.menuItem9_actionPerformed(e);
  }
}

class Frame1_menuItem10_actionAdapter implements java.awt.event.ActionListener {
  Frame1 adaptee;

  Frame1_menuItem10_actionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.menuItem10_actionPerformed(e);
  }
}
class about extends JFrame
{
  public about()
  {
    super("about pic");
    JLabel lb = new JLabel("<html>Pic1.0 write by tomcatlee 2004.7"+
                           "<p Color=red>tomcatlee2003@yahoo.com.cn</p></html");
    JPanel contentPane = (JPanel)this.getContentPane();
    contentPane.add(lb);
  }
}

class Frame1_menuItem11_actionAdapter implements java.awt.event.ActionListener {
  Frame1 adaptee;

  Frame1_menuItem11_actionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.menuItem11_actionPerformed(e);
  }
}

【OpenCV归纳】5 图像处理

一、综述 本节我们将来探讨关于图像处理方面的诸多技术和应用。在学完了第一个常用的工具包之后,学习这一节将更加轻松。废话不多说,切入正题。 二、平滑处理和图像形态学 1、滤波器 "平滑处理“或者...
  • NoMasp
  • NoMasp
  • 2015年02月07日 12:17
  • 4044

数字图像处理,Matlab常用图像处理函数汇总

原文地址:Matlab图像处理函数汇总 作者:mimi 图像的变换  ① fft2:fft2函数用于数字图像的二维傅立叶变换,如:i=imread('104_8.tif'); j=fft2(...
  • EbowTang
  • EbowTang
  • 2016年03月03日 14:39
  • 3284

MATLAB数字图像处理(一)图像的基本操作

写在前头:说到数字图像处理,不得不提起MATLAB。这是一款非常方便的仿真软件,绝大多数的图像处理可以用MATLAB完成。   有人问,处理图片,用PS岂不是更好。两者各有优点,如果需要将10000...
  • zxc024000
  • zxc024000
  • 2015年10月12日 19:47
  • 27583

《数字图像处理原理与实践(MATLAB版)》一书之代码Part2

本文系《数字图像处理原理与实践(MATLAB版)》一书之代码系列的Part2,涉及该书大致40~135页所覆盖之代码,后续代码将陆续发布,供有需求读者参阅学习...
  • baimafujinji
  • baimafujinji
  • 2014年11月15日 15:48
  • 4062

CPU和GPU的区别、工作原理、及如何tensorflow-GPU安装等操作

最近深度学习CPU根本不够用,老板配置了GPU 怎么能不会用呢? 原来从来没有关注过的底层东西,于是乎痛下决心搞清楚原理和操作先来看看第一部分为什么GPU比CPU更diao呢? 这里就需要从他么的...
  • sinat_36458870
  • sinat_36458870
  • 2017年12月12日 21:33
  • 156

数字图像处理原理与实践(MATLAB版)勘误表

《数字图像处理原理与实践(MATLAB版)》一书全面系统地介绍了数字图像处理技术的理论与方法,内容涉及图像分割、图像去噪、形态学处理、多尺度融合、偏微分方程应用、正交变换与图像压缩、图像去雾、多尺度空...
  • baimafujinji
  • baimafujinji
  • 2016年02月17日 15:22
  • 5583

数字图像处理(Matlab)读书笔记

数字图像处理(Matlab)读书笔记,把图书中的主要内容提取出来,供大家参考!
  • jade_mysunshine
  • jade_mysunshine
  • 2016年05月11日 18:31
  • 739

Matlab 图像处理工具箱

转自:http://cvnote.info/matlab-cv-ip-toolbox/ 计算机视觉/图像处理研究中经常要用到Matlab,虽然其自带了图像处理和计算机视觉的许...
  • zy122121cs
  • zy122121cs
  • 2015年04月08日 21:49
  • 3430

图片处理开源项目

一:GRire GRire是Golden Retriever-Image Retrieval Engine的简写,是一套Java的开源图像检索引擎。GRire基于BoVW(Bag of Vi...
  • shanzhizi
  • shanzhizi
  • 2015年11月07日 18:25
  • 2155

visual C++数字图像处理类

由于现在手头的学习是关于图像处理的,有些技能肯定迟早要用上,于是决定利用假期学习Visual C++的相关知识。 今天是第一天,主要学习使用visual c++进行面向对象编程的基本方法。并给出数字...
  • a1154761720
  • a1154761720
  • 2015年01月21日 22:53
  • 1712
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图像处理pic1.0版
举报原因:
原因补充:

(最多只允许输入30个字)