基于matlab的图像锐化,用Matlab实现一些简单的图像锐化

用Matlab实现一些简单的图像锐化,仅是写一写基本原理,不追求锐化效果。

在入门级的图像处理课上,往往会讲一些高通滤波/图像锐化的方法,然后用Matlab或其他什么实现。

然而让人感到蛋疼的是,说是锐化并增强图像,却只得到一个模糊的轮廓。

Laplacian-sharp.png

或是下面这样。

Prewitt-sharp.png

其实上面的图像是提取出来的高频信息,将高频信息加回原始图像,才能得到锐化后的图像。

Laplacian-sharpen.png

Prewitt-sharped.png

对比一下原始图像。

如果感觉没什么区别,点击图片查看原图。

Original.png

上面两种锐化分别使用了Laplacian算子和Prewitt算子提取高频信息,对应的Matlab代码如下。

% Laplacian

i = imread(‘Original.png’);

I = double(i);

N = [-1 -1 -1 ; -1 8 -1 ; -1 -1 -1];

sharp = conv2(I,f,'same');

sharp = uint8(sharp);

sharped = i + sharp;

imshow(sharp);

% Prewitt

i = imread(‘Original.png’);

I = double(i);

N = [1 1 1 ; 0 0 0 ; -1 -1 -1];

sharp = conv2(I,f,'same');

sharp = uint8(sharp);

sharped = i + sharp;

imshow(sharp);

当然,上述锐化效果并不能使人满意,Ringing尤其让人讨厌(线条周围的白边),后续再调整。

你可能感兴趣的:(基于matlab的图像锐化)