Tra*_*man 1 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
Run Code Online (Sandbox Code Playgroud)
我没有得到一个锐化的图像.相反,我在图像的一个小区域上得到了一些带有一些颜色的白色图像.有人可以帮忙吗?谢谢.
让我们g成为gaussian核心,f成为形象。然后f * g(卷积)给出图像的模糊版本。这意味着low-passed图像的版本。
然后考虑
. 这意味着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
Run Code Online (Sandbox Code Playgroud)
有时,您需要控制图像细节的亮度。你可以这样做
锐化图像 = 图像 + alpha(图像细节)
试试这个:
H = padarray(2,[2 2]) - fspecial('gaussian' ,[5 5],2); % create unsharp mask
Run Code Online (Sandbox Code Playgroud)
1是标量.您需要一个5x5阵列,其中一个位于中心.此外,如果您想节省亮度,滤镜元素必须总和为1,因此您需要将中心值加倍以计算您减去的数量.