如何计算和显示拉普拉斯滤波图像

时间:2014-07-27 05:34:19

标签: java image-processing

我想知道如何计算和显示拉普拉斯过滤图像,如下拉普拉斯滤波器示例..

-1    6   -1
 6  -20    6
-1    6   -1

请帮我解决这个问题。谢谢。我感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

你问过Java,但如果你的意思更基本,我会尝试更广泛地回答。

给定滤波器系数(你有一个拉普拉斯滤波器的近似值),将它应用于图像的方法是Convolution(假设滤波器是LSI - 线性空间不变)。

卷积可以在频域中直接计算(循环)(使用Convolution Theorem)。

有几件事需要考虑(真实世界问题):

  1. 卷积“询问”图像之外的像素。因此应该施加边界条件(图像之外的“像素”是零,常数,最近邻等...)。
  2. 由于“滤波器瞬态”,卷积的结果大于输入图像。同样,应该做出合理的决定。
  3. 如果您仅限于定点数学,则应在操作后进行适当的缩放(经验法则,为保持图像均值而构建,表示所有滤波器系数的总和应为1,因此您需要缩放)
  4. 祝你好运。

答案 1 :(得分:0)

假设您能够逐像素扫描图像。

Original_Image(size) =  Result_Image (size) 

for( int i=1; i<Result_Image.rows-1;i++)  // ignore first and last rows to avoid going out of range
{
  for( int i=1;i<Result_Image.cols-1;i++)
{
     Result_Image(i,j)= -20*Result_Image(i,j)+6*(Result_Image(i-1,j)+Result_Image(i+1,j)+Result_Image(i,j-1)+Result_Image(i,j+1))-1*(Result_Image(i-1,j-1)+Result_Image(i+1,j+1)+Result_Image(i+1,j-1)+Result_Image(i-1,j+1));
}

}

如果Java本身不支持逐像素扫描图像,则可以通过使用OpenCv for Java或类似的Java图像处理库来实现此目的。

注意=此算法可能无效,库具有一些用于过滤图像的有用功能