1

我正在尝试通过设计高斯高通滤波器来锐化图像。我想使用高通滤波器等效于单位矩阵减去低通滤波器这一事实来做到这一点,所以我做了以下事情:

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

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

4

3 回答 3

6

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

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

图像细节

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

锐化图像

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

您可以2e从 matlab 使用padarray(2,[2 2])g使用fspecial('gaussian' ,[5 5],2).

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

有时,您需要控制图像细节的亮度。你可以这样做

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

控制图像细节的亮度

于 2015-12-19T09:45:40.047 回答
5

试试这个:

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

1 是一个标量。您需要一个 5x5 阵列,其中一个位于中心。此外,如果您想保存亮度,过滤器元素的总和必须为 1,因此您需要将中心值加倍以抵消您要减去的量。

于 2013-04-06T18:46:18.853 回答
-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
于 2016-11-04T19:09:12.177 回答