【发布时间】:2013-12-27 22:54:17
【问题描述】:
我想知道将滤镜应用于图像的正确方法是什么。我正在阅读的图像处理教科书仅讨论了过滤器的数学和理论方面,而没有过多讨论其中的编程部分!
我想出了这个伪代码,有人可以告诉我它是否正确,因为我将 sobel 边缘过滤器应用于图像并且我对输出不满意。我认为它检测到许多不必要的点作为边缘,并错过了沿边缘的几个点。
int filter[][] = {{0d,-1d,0d},{-1d,8d,-1d},{0d,-1d,0d}};// I dont exactly remember the //sobel filter
int total = 0;
for(int i = 2;i<image.getWidth()-2;i++)
for(int j = 2;j<image.getHeight()-2;j++)
{
total = 0;
for(int k = 0;k<3;k++)
for(int l = 0;l<3;l++)
{
total += intensity(image.getRGB(i,j)) * filter[i+k][j+l];
}
if(total >= threshold){
image.setRGB(i,j,WHITE);
}
}
int intensity(int color)
{
return (((color >> 16) & 0xFF) + ((color >> 8) & 0xFF) + color)/3;
}
【问题讨论】:
标签: image-processing imagefilter