实验四:图像的锐化处理

目录

 

一、实验目的

二、实验原理

1. 拉普拉斯算子

2. Sobel算子

3. 模板大小对滤波的影响

三、实验内容

四、源程序和结果

(1) 主程序(matlab)

(2) 函数GrayscaleFilter  

(3) 函数MatrixAbs

五、结果分析 

1. 拉普拉斯滤波

2. Sobel滤波

3. 不同大小模板的滤波


 

一、实验目的

  1. 学习如何用锐化处理技术来加强图像的目标边界和图像细节,对图像进行梯度算子、拉普拉斯算子、Sobel算子设计,使图像的某些特征(如边缘、轮廓等)得以进一步的增强及突出。
  2. 分析模板大小对空域锐化滤波的影响,比较不同滤波器的处理效果,分析其优缺点。

二、实验原理

        锐化处理技术可以加强图像的目标边界和图像细节。具体来说,锐化处理的原理是通过突出图像中像素值的不连续性,即对图像的局部变化进行增强,从而增强图像的边缘、纹理和细节,使图像看起来更加清晰和锐利。通过锐化处理,可以突出图像中的细微特征,提高图像的视觉质量。对图像进行锐化处理的算子有很多,实验中用到的锐化处理算子有拉普拉斯算子,Sobel算子。

1. 拉普拉斯算子

        拉普拉斯算子是一种二阶微分算子,可以高亮显示图像中的高频变化,即边缘、纹理等细节部分。具体来说,拉普拉斯算子对边缘像素进行了正负变化,使得边缘区域更加突出,对整幅图像的锐化效果更为明显,但是拉普拉斯算子在锐化处理中可能会引入更多的噪声,需要与其他滤波器结合使用以达到更好的平衡。

2. Sobel算子

        Sobel算子是一种基于梯度计算的边缘检测算子,主要用于提取图像中水平和垂直方向上的梯度信息。对于每个像素点,Sobel算子计算其水平和垂直梯度,最后根据这两个梯度值来确定像素最终的梯度强度和方向,其在锐化处理中类似于边缘检测,能够准确地提取图像中的边缘信息,使得边缘更为清晰和突出。

3. 模板大小对滤波的影响

        模板大小决定了滤波器在计算像素差异或梯度时所考虑的邻域范围。较小的模板可能无法捕捉到图像中较大的细节和边缘信息,造成细节丢失。相反,较大的模板能够涵盖更广泛的像素范围,更好地捕捉到图像中的细节和边缘,但可能引入更多的噪声和副作用。

三、实验内容

  1. 任意选择一幅灰度图像,使用拉普拉斯算子对图像进行锐化滤波,并和原图像叠加,实现对图像的增强。
  2. 任意选择一幅图像,使用sobel算子对图像进行锐化滤波,观察滤波效果。
  3. 任意选择一幅图像,构造一个中心系数为-24的5×5的类似于拉普拉斯模板对图像进行锐化,与中心系数为-8的3×3拉普拉斯算子的结果相比,是否能得到更加清晰的结果?

四、源程序和结果

(1) 主程序(matlab)

clear;close;
 
% 读取图片
img = imread('i_camera.bmp');
grayscale = img(:,:,1);
 
% 显示原始图片
subplot(1, 3, 1);
imshow(grayscale);
title('原始图片');
 
% 1) 使用拉普拉斯算子对图像进行锐化滤波
laplacian_filter = [0, 1, 0; 1, -4, 1; 0, 1, 0];
lap_filtered_grayscale = GrayscaleFilter(grayscale, laplacian_filter);
sharpened_grayscale1 = grayscale + lap_filtered_grayscale;
subplot(1, 3, 2);
imshow(lap_filtered_grayscale);
title('拉普拉斯滤波');
subplot(1, 3, 3);
imshow(sharpened_grayscale1);
title('拉普拉斯滤波叠加图像');
 
% 2) 使用Sobel算子对图像进行滤波
sobel_filter_x = [-1, 0, 1; -2, 0, 2; -1, 0, 1];
sobel_filter_y = [1, 2, 1; 0, 0, 0; -1, -2, -1];
 
sobel_filtered_x = GrayscaleFilter(grayscale, sobel_filter_x);
sobel_filtered_x_abs = MatrixAbs(sobel_filtered_x); % 元素绝对值化
 
sobel_filtered_y = GrayscaleFilter(grayscale, sobel_filter_y);
sobel_filtered_y_abs = MatrixAbs(sobel_filtered_y); % 元素绝对值化
 
sobel_filtered_grayscale = sobel_filtered_x_abs + sobel_filtered_y_abs;
 
figure;
subplot(2, 2, 1);
imshow(sobel_filtered_x_abs);
title('Sobel滤波x方向');
 
subplot(2, 2, 2);
imshow(sobel_filtered_y_abs);
title('Sobel滤波y方向');
 
subplot(2, 2, 3);
imshow(sobel_filtered_grayscale);
title('Sobel滤波叠加');
 
subplot(2, 2, 4);
imshow(sobel_filtered_grayscale + grayscale);
title('Sobel滤波叠加图像');
 
% 3) 自定义中心系数为-24的5×5锐化模板
custom_filter5 = [1 1 1 1 1; 1 1 1 1 1; 1 1 -24 1 1; 1 1 1 1 1; 1 1 1 1 1];
custom_filtered_grayscale5 = GrayscaleFilter(grayscale, custom_filter5);
figure;
subplot(2, 2, 1);
imshow(custom_filtered_grayscale5);
title('5x5拉普拉斯锐化(中心系数-24) ');
 
subplot(2, 2, 2);
imshow(custom_filtered_grayscale5  + grayscale);
title('5x5拉普拉斯锐化叠加图像 ');
 
% 4) 中心系数为-8的3×3拉普拉斯算子
laplacian_filter3 = [1, 1, 1; 1, -8, 1; 1, 1, 1];
lap_filtered_grayscale3 = GrayscaleFilter(grayscale, laplacian_filter3);
subplot(2, 2, 3);
imshow(lap_filtered_grayscale3);
title('3x3拉普拉斯锐化(中心系数-8)');
 
subplot(2, 2, 4);
imshow(lap_filtered_grayscale3 + grayscale);
title('3x3拉普拉斯锐化图像');

(2) 函数GrayscaleFilter  

% 功能:输入灰度图和滤波核,输出滤波图像
function filtered_image = GrayscaleFilter(gray_image, filter_kernel)
    % 读取行列值
    [rows, cols] = size(gray_image);
    [krows, kcols] = size(filter_kernel);
    
    % 计算边界填充(零填充)
    pad_rows = floor(krows/2);
    pad_cols = floor(kcols/2);
    
    padded_image = zeros(rows + 2*pad_rows, cols + 2*pad_cols);
    padded_image(pad_rows+1:end-pad_rows, pad_cols+1:end-pad_cols) = gray_image;
    
    % 对图像进行滤波
    filtered_image = zeros(rows, cols);
    
    for i = 1:rows
        for j = 1:cols
            patch = padded_image(i:i+krows-1, j:j+kcols-1);
            filtered_image(i, j) = sum(patch(:) .* filter_kernel(:)); % 卷积运算
        end
    end
    
    % 还原到0~255的灰度像素范围
    filtered_image = uint8(filtered_image);
End

(3) 函数MatrixAbs

% 功能:对矩阵中的每个值求绝对值
function Out_abs = MatrixAbs(Matrix)
[rows, cols] = size(Matrix);
 
for  i = 1:rows
    for j = 1:cols
        Matrix(i, j) = abs(Matrix(i, j));
    end
end
Out_abs = Matrix;

五、结果分析 

1. 拉普拉斯滤波

        如图一所示,经拉普拉斯滤波后的图像其图像边缘有了一定的突出(即变白),起到了锐化的作用,但是不难发现,滤波后的图像出现了较明显的失真,尤其是摄像机那块,锐化的边缘反而盖住了一些细节。

e936d072ada747b0a5bd30f4e41da019.png

图一 拉普拉斯滤波

2. Sobel滤波

        Sobel滤波会对图像的x轴和y轴两个方向分别滤波。如图二所示,不同方向滤波后的边界图其中的白条纹方向一个是横向的,一个是纵向的。经过Sobel滤波后的图像边缘很突出,即锐化效果很明显,但是也引入了一定的噪声。

b8544f92df0148ac971f11e3af5e5aa1.png

图二 Sobel滤波

3. 不同大小模板的滤波

        观察图三,可以看到模板大小为5×5的拉普拉斯滤波器滤波后图像的边缘特别明显,但是相对的引入的噪声也是特别的明显。而3×3的拉普拉斯滤波器滤波后的图像边缘虽然相较之下有些逊色,但是毋庸置疑,噪声少了很多。

        因此,正如前面实验原理中说的那样,大的模板锐化效果好,但是其带来的噪声也比较多,实际使用上还是要综合考虑。

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智珂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值