用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实现一些简单的图像锐化)