📄 czbyjc.java
字号:
package image;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.awt.image.MemoryImageSource;
import java.awt.image.PixelGrabber;
import java.awt.image.Raster;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
//***************************************垂直边缘检测
public class Czbyjc extends BasicImage{
int sobelCoefficients=0;
public Czbyjc() {
super();
// TODO 自动生成构造函数存根
}
public Czbyjc(String fileName,int sobelCoefficients ) {
super(fileName);
this.sobelCoefficients=sobelCoefficients;
// TODO 自动生成构造函数存根
}
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;
}
public Image imageProcess()
{
System.out.println("-------------imageProcess()");
try{
int [] dataProcessed=this.verticleEdgeCheck(this.imageData,this.wideth,this.height,this.sobelCoefficients);
imageProcessed=this.createImage(dataProcessed);
}catch(Exception e)
{
e.printStackTrace();
}
return imageProcessed;
}
public void saveImageAfterProcess()
{
System.out.println("-------------imageProcess()");
this.saveImage("d:\\006.bmp");
}
public void showImageAfterProcess()
{}
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
Czbyjc zyy=new Czbyjc("003.jpg",1);
zyy.imageProcess();
zyy.saveImage("d:\\zyyCzbycl.jpg");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -