1. 图像锐化
图像锐化与图像平滑是相反的操作,锐化是通过增强高频分量来减少图像中的模糊,增强图像细节边缘和轮廓,增强灰度反差,便于后期对目标的识别和处理。锐化处理在增强图像边缘的同时也增加了图像的噪声。方法通常有微分法和高通滤波法。
2. 锐化处理方法
2.1.1. 梯度法
梯度的方向是图像中最大变化率的方向,梯度的幅度比例于相邻像素的灰度级差值
对图像F ( x , y ),在点( x , y ) 处的梯度定义为矢量:
2.2. 拉普拉斯算子法
2.3. 高通滤波法
2.4. 模板匹配法
将具有8个方向、大小为3×3的模板顺序作用于同一图像窗口,并对结果进行排序,将最大的结果值会加权平均值作为窗口中心元素的锐化进行输出。
模板匹配法除了能增强图像边缘外还具有平滑噪声的优点,总体上效果优于梯度法
下面介绍两种模板匹配算子:
2.4.1. Sobel算子
2.4.2. Prewitt算子
3.相关代码
%梯度法锐化方法、边缘增强算子和高斯-拉普拉斯方法
clc;close all;
[img1, map]=imread('lenna.bmp');
figure;subplot(2,2,1);imshow(img1);title('原图');
[ROW, COL] = size(img1);
img = double(img1);
%梯度法锐化法
for i = 1:ROW-1
for j =1: COL-1
new_imgGradient(i,j) = sqrt((img(i,j)-img(i+1,j))*(img(i,j)-img(i+1,j))+(img(i,j)-img(i,j+1))*(img(i,j)-img(i,j+1)));
img_imgGradient(i,j) = new_imgGradient(i,j) + img(i,j);
end
end
subplot(2,2,2);imshow(uint8(img_imgGradient));
title('梯度法锐化法');
%定义sobel算子
sobel_x = [-1,0,1;-2,0,2;-1,0,1];
sobel_y = [-1,-2,-1;0,0,0;1,2,1];
for i = 1:ROW - 2
for j = 1:COL - 2
funBox = img(i:i+2, j:j+2);
G_x = sobel_x .* funBox;
G_x = abs(sum(G_x(:))); %矩阵中所有元素求和,在取绝对值
G_y = sobel_y .* funBox;
G_y = abs(sum(G_y(:)));
sobelxy = G_x * 0.5+ G_y *0.5;%边缘增强
new_img(i+1,j+1) = sobelxy+img(i+1,j+1);%锐化
end
end
subplot(2,2,3);
imshow(new_img/255),title("sobel锐化后");
%高斯-拉普拉斯算子锐化
model=[0,0,1,0,0;
0,1,2,1,0;
1,2,-16,2,1;
0,1,2,1,0;
0,0,1,0,0;];
for i=3:ROW-2
for j=3:COL-2
tem = double(img1(i-2:i+2,j-2:j+2)).*model;
x = sum(sum(tem));
t_1(i,j) = x;%log提取边缘
img_log(i,j) = x+img(i,j);%锐化
end
end
subplot(2,2,4);imshow(uint8(img_log)),title('log锐化后')
figure,imshow(t_1),title('log提取边缘后')