MATLAB图像锐化 - 使用(1-高斯低通滤波器)的高斯高通滤波器

时间:2013-04-06 17:59:31

标签: matlab image-processing gaussian

我试图通过设计高斯高通滤波器来锐化图像。我想这样做是因为高通滤波器相当于单位矩阵减去低通滤波器,所以我做了以下几点:

image= imread('Question3_Data-Cats.jpg'); % read image

H = 1 - fspecial('gaussian' ,[5 5],2); % create unsharp mask
sharpened = imfilter(image,H);  % create a sharpened version of the image using that mask

imshow([image sharpened]); %showing input & output images

我没有得到锐化的图像。相反,我在图像的一个小区域上得到了一些带有一些颜色的白色图像。有人可以帮忙吗?谢谢。

3 个答案:

答案 0 :(得分:5)

试试这个:

H = padarray(2,[2 2]) - fspecial('gaussian' ,[5 5],2); % create unsharp mask

1是标量。您需要一个5x5阵列,其中一个位于中心。此外,如果您想节省亮度,滤镜元素必须总和为1,因此您需要将中心值加倍以计算您减去的数量。

答案 1 :(得分:4)

g成为gaussian内核,f成为图片。然后f * g(卷积)给出图像的模糊版本。这意味着low-passed版本的图片。

然后考虑f - f \ast g。这意味着image - lowpass image。这给出了high-passed版本的图像。它仅包含图像细节。细节在黑色背景上是白色的。我认为这就是你现在所获得的形象。

image detail

从图像中提取图像细节后,您必须将它们添加回图像以获得锐化的图像。

Sharpen Image

这意味着您可以通过2e - g与图像的卷积来获得锐化的图像(这是非锐化的蒙版)。

您可以使用2epadarray(2,[2 2])使用g从matlab获取fspecial('gaussian' ,[5 5],2)

H = padarray(2,[2 2]) - fspecial('gaussian' ,[5 5],2); %create unsharp mask

有时,您需要控制图像细节的亮度。你可以通过

来做到这一点
  

锐化图像=图像+ alpha(图像细节)

control brightness of image details

答案 2 :(得分:-1)

I= imread('peppers.png'); % read image
H = padarray(2,[2 2]) - fspecial('gaussian' ,[5 5],2); % create unsharp mask % create unsharp mask
figure,imshow(I);
K = imfilter(I,H);  % create a sharpened version of the image using that mask
figure,imshow(K); %showing input & output images