java中高斯滤波器不影响输入图像
因此,我尝试将高斯滤波器应用到使用Java的图像中。但是,图像根本不受过滤器的影响。我正在使用内置的卷积运算符。有人能告诉我出了什么问题吗java中高斯滤波器不影响输入图像,java,filter,java-2d,gaussian,convolution,Java,Filter,Java 2d,Gaussian,Convolution,因此,我尝试将高斯滤波器应用到使用Java的图像中。但是,图像根本不受过滤器的影响。我正在使用内置的卷积运算符。有人能告诉我出了什么问题吗 public static void main(String[] args) { File img = new File( "C:\\Users\\Aditya\\Pictures\\20130729_140153.jpg" ); BufferedImage a = null; try{ a= ImageIO.read( img )
public static void main(String[] args) {
File img = new File( "C:\\Users\\Aditya\\Pictures\\20130729_140153.jpg" );
BufferedImage a = null;
try{
a= ImageIO.read( img );
}
catch( Exception e ){
System.out.print( e.toString() );
return;
}
BufferedImage a9 = new BufferedImage( a.getWidth() , a.getHeight() , a.getType() );
float[] matrix = {
1f/273,4f/273,7f/273,4f/273,1f/273,
4f/273,16f/273,26f/273,16f/273,4f/273,
7f/273,26f/273,41f/273,26f/273,7f/273,
4f/273,16f/273,26f/273,16f/273,4f/273,
1f/273,4f/273,7f/273,4f/273,1f/273
};
BufferedImageOp op = new ConvolveOp( new Kernel( 5, 5, matrix ) );
a9 = op.filter( a, a9 );
try{
ImageIO.write( a9 , "jpg" ,new File( "C:\\Users\\Aditya\\Pictures\\jim.jpg" ));
}catch( Exception e ){
System.out.println( e );
}
}
}
不工作的意思是a和a9的图像没有任何区别。就像他们被复制了一样 您的代码没有问题,我运行了它,在输出图像中看到一点模糊。 如果希望看到更明显的效果,请将其更改为边缘检测内核,例如使用
float[] matrix = {
1, 0, -1,
0, 0, 0,
-1, 0, 1
};
BufferedImageOp op = new ConvolveOp(new Kernel(3, 3, matrix));
当我用它运行时,我得到了一个完整的黑色图像!!好的,如果你的图像有边缘,你会看到那些边缘用非黑线勾勒出来(这不是一个模糊的内核,而是一个边缘检测)。无论如何,你的代码是有效的,卷积是有效果的,你可以通过将标准偏差从1增加到5来了解更多!此外,边缘检测器工作正常,太微妙了,我想我以为它们是我屏幕上的斑点,我一直在擦拭它们!