关于卷积的理论这里就不啰嗦了。最近初步学习图像处理,使用java写了点对图像进项卷积操作的代码,实验的过程中感觉颇为惊奇,原来觉得高深的图像的锐化、浮雕、边缘检测等技术,使用简单的卷积就可以轻松实现。
我首先将一副彩色的图像使用photoshop将其转换为灰度的raw格式,这简化了程序。转化后的图像如图所示:
接下来要对该图像做卷积操作,下面的类中只有一个静态方法,它能对raw格式灰度图像数据做卷积操作:
public class Convolution {
public static byte[][] valide(byte[][] src,int[][] filter){
if(src[0].length<filter[0].length || src.length<filter.length){
return null;
}
if(filter.length%2==0 || filter[0].length%2==0){
return null;
}
int[][]tem = new int[filter.length][filter[0].length];
int valideWidth = src[0].length - filter[0].length+1;
int valideheight = src.length - filter.length+1;
byte[][] valide = new byte[valideheight][valideWidth];
for(int i=0;i<valideheight;i++){
for(int j=