• 数字图像处理实验记录五(图像的空间域增强-锐化处理)


    前言:

    一、基础知识

    1,什么是锐化?

    百度到:图像锐化(image sharpening)是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰,分为空间域处理和频域处理两类。
    在我看来,锐化就是将图像的边缘进行增强。

    2,为什么要锐化?

    既然锐化是将图像边缘增强,那么我认为往往是图像边缘模糊的时候需要进行锐化。在上一个实验中我们学到了平滑处理滤波器,不难发现滤波器往往会在清除噪声的时候让我们的图像变得模糊,所以我认为在我们处理完噪声以后就可以通过锐化来增强边缘。如下:
    在这里插入图片描述
    虽然锐化后不是很清晰,但至少边缘明显了很多

    3,怎么进行锐化?

    锐化是增强边缘,那么首先我们就要找到边缘,接下来关键的部分就是怎么找边缘了。
    什么是边缘?在图像的一个区域内,出现了灰度的突变,突然变小或突然变大,这里突变的中间区域就是边缘。
    在这里插入图片描述
    怎么找边缘?
    在计算机里是一个像素一个像素进行处理,怎么处理?这里就提到了几种算子(在我看来就是一种计算的模板方法):
    在这里插入图片描述
    以4领域的Laplacian算子为例:对于一个像素f(i,j),我们就使用它的上下左右四个像素和它自身进行运算得到g(i,j):
    在这里插入图片描述
    如果4领域的像素值都和中心差不多,那么g(i,j)最后的值就是0,显示是黑色,g(i,j)越大,就越白,最后处理完得到的g,就是边缘图像。
    在这里插入图片描述
    边缘检测函数sharpen_value():

    function [Ig] = sharpen_value(S,kind)
    % 锐化函数 输入S,锐化算子 kind
    if(~exist('kind','var'))
        kind = -1;  % 如果未出现该变量,则对其进行赋值
    end
    [m,n] = size(S);
    
    if(kind == -1)%拉普拉斯4
        H = [0,-1,0;
             -1,4,-1;
             0,-1,0];
    elseif(kind == 0)%拉普拉斯8
        H = [-1,-1,-1;
             -1,8,-1;
             -1,-1,-1];
    elseif(kind == 1)%prewitt 横
        H = [1,1,1;
            0,0,0;
            -1,-1,-1];
    elseif(kind == 2)%prewitt 竖
        H = [1,0,-1;
            1,0,-1;
            1,0,-1];
    elseif(kind == 3)%Sobel 竖
        H= [1,2,1;
            0,0,0;
            -1,-2,-1];
    elseif(kind == 4)%Sobel 竖
        H= [1,0,-1;
            2,0,-2;
            1,0,-1];
    elseif(kind == 5)
        H= [1,0,0;
            0,-1,0;
            0,0,0];
    
    end
    a=1;
    S = im2double(S);
    Ig =S;
    
    for i=2:m-1
        for j=2:n-1
            if(kind == 5)
                Ig(i,j) = abs(S(i,j)-S(i+1,j+1))+abs(S(i+1,j)-S(i,j+1));
            else
                Ig(i,j) = 0;
                for a = -1:1
                    for b = -1:1
                        Ig(i,j) = Ig(i,j)+H(a+2,b+2)*S(i+a,j+b);     
                    end
                end
                if(Ig(i,j)<0)
                    Ig(i,j) = 0;
                end
            end
            Ig(i,j) = uint8(Ig(i,j)*255);
        end
    end
    Ig = uint8(Ig);
    
    
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    最后将边缘图和原图相加,就可以实现边缘增强了。

    二、实验要求

    任务1:

    利用Laplacian 锐化算子(α=-1)对256 级灰度的数字图像进行锐化处理,显示处理前、后图像。

    任务2:

    在添加了噪声的图像上进行拉普拉斯锐化处理,和未添加噪声图像的处理结果进行比较。

    任务3:

    分别利用Roberts、Prewitt 和Sobel 边缘检测算子,对数字图像进行边缘检测,计算图像梯度图。显示图像x和y方向偏导图像和梯度幅值图像。

    三、实验记录:

    任务1:

    利用Laplacian 锐化算子(α=-1)对256 级灰度的数字图像进行锐化处理,显示处理前、后图像。

    figure('NumberTitle','off','Name','任务1');
    I = imread('stone.jpg');
    I2 = sharpen_value(I,-1);
    I2 = I2+I;
    subplot(1,2,1);imshow(I);title('原图');
    subplot(1,2,2);imshow(I2);title('增强后');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    任务2:

    在添加了噪声的图像上进行拉普拉斯锐化处理,和未添加噪声图像的处理结果进行比较。

    figure('NumberTitle','off','Name','任务2');
    Ib = imnoise(I,'salt',0.02);%添加椒盐噪声
    I3 = sharpen_value(Ib,-1);
    I3 = I3+Ib;
    subplot(1,2,1);imshow(I2);title('原图增强图');
    subplot(1,2,2);imshow(I3);title('噪声增强图');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    任务3:

    分别利用Roberts、Prewitt 和Sobel 边缘检测算子,对数字图像进行边缘检测,计算图像梯度图。显示图像x和y方向偏导图像和梯度幅值图像。

    figure('NumberTitle','off','Name','任务3');
    I = rgb2gray(I);
    H1 = sharpen_value(I,5);
    H2 = sharpen_value(I,2);
    H3 = sharpen_value(I,3);
    subplot(2,2,1.5);imshow(H1);title('Roberts图像梯度图');
    subplot(2,2,3);imshow(H2);title('Prewitt x方向偏导');
    subplot(2,2,4);imshow(H3);title('Sobel y方向偏导');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    四、结果展示

    任务1:

    利用Laplacian 锐化算子(α=-1)对256 级灰度的数字图像进行锐化处理,显示处理前、后图像。
    在这里插入图片描述

    任务2:

    在添加了噪声的图像上进行拉普拉斯锐化处理,和未添加噪声图像的处理结果进行比较。
    可以明显看出噪声对锐化的影响很大。
    椒盐噪声:
    在这里插入图片描述
    高斯噪声:
    在这里插入图片描述

    任务3:

    分别利用Roberts、Prewitt 和Sobel 边缘检测算子,对数字图像进行边缘检测,计算图像梯度图。显示图像x和y方向偏导图像和梯度幅值图像。
    在这里插入图片描述

    五、反思总结与收获

    对Laplacian锐化算子的处理结果中,对小于0的部分,采用不同的方法标准化到[0,255]时,图像的显示效果有什么不同?为什么?
    在我看来有两种方法来标准化:1,取绝对值。2,取0。
    改了改函数,让我们看看效果:

    1,取绝对值:

    在这里插入图片描述
    边缘:
    在这里插入图片描述

    2,取0:

    在这里插入图片描述
    边缘:
    在这里插入图片描述

    总结:

    取绝对值:负值转正值,会增加对比度,但可能导致某些细节过度增强,看起来更加锐利。会引入图像中的一些噪声或产生不自然的效果。
    取0:负值保持为零,因此对比度不会显著增加。这种方法可以保留一些图像细节,但可能不会产生像绝对值标准化那样强烈的锐化效果。

  • 相关阅读:
    SpringBoot集成neo4j实战
    AnythingLLM 的 Docker 使用
    十八、【模糊工具组】
    Ubuntu空间不足,如何扩容
    Qt——QString 只保留数字
    关系型数据库(SQL)默认值操作
    图的学习,深度和广度遍历
    电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析)
    自己动手写操作系统系列第4篇,完结篇之实现系统调用
    QT QThread 多线程操作
  • 原文地址:https://blog.csdn.net/qq_62791684/article/details/133964402