數字影像處理實驗(四)影像銳化

Super-fei發表於2020-11-05

數字影像處理實驗(四)影像銳化

實驗目的

進一步加深理解和掌握影像銳化的的概念,掌握常用空域銳化增強技術。觀
察和理解影像銳化處理對加強影像中的目標邊緣和影像細節的作用。理解圖象銳
化增強的處理過程和特點。

實驗器材

MATLAB 2018b

實驗內容

1、一階微分銳化增強
設計程式,分別實現 Roberts、Sobel、Priwitt 運算元的銳化處理。觀察處理前
後圖象效果,分析實驗結果和演算法特點。
2、拉普拉斯銳化增強
設計程式,實現拉普拉斯影像和原始影像疊加的增強處理,即

在這裡插入圖片描述
觀察處理前後影像效果,分析實驗結果和演算法特點。

實驗原理

影像銳化技術的基本方法是對影像進行微商處理,並且將運算結果與原影像
疊加。影像的梯度模值反映了影像灰度變化的速率,它包含了邊緣及細節資訊。
我們可以梯度模值的計算作為運算元,這個運算元稱為梯度運算元。常用的有 Roberts、
Sobel、Priwitt、Laplace 等運算元。

實驗記錄

imsharpening.m

function B = imsharpening(filename,type)
%%輸入引數
R = imread(filename);
if strcmp(type,'Roberts')                    
    B1 = [0,0,0;0,-1,0;0,0,1];
    B2 = [0,0,0;0,0,-1;0,1,0];
elseif strcmp(type,'Sobel')
    B1 = [-1,-2,-1;0,0,0;1,2,1];
    B2 = [-1,0,1;-2,0,2;-1,0,1];
elseif strcmp(type,'Priwitt')
    B1 = [-1,0,1;-1,0,1;-1,0,1];
    B2 = [1,1,1;0,0,0;-1,-1,-1];
elseif strcmp(type,'Laplacian')
    B1 = [-1,0,1;-1,0,1;-1,0,1];
    B2 = [0,0,0;0,0,0;0,0,0];
else
    error('請輸入正確的運算元型別:Roberts、Sobel、Priwitt或Laplacian');
end

%% 彩色影像轉換為灰度影像
image_size=size(R);
dimension=numel(image_size);
if dimension==2              %灰度影像
    R1 = R;
elseif dimension==3              %彩色影像
    R1 = rgb2gray(R);
end 

%% 邊緣擴充套件
[m,n] = size(R1);
R2 = zeros(m+2,n+2);
R2(2:m+1,2:n+1) = R1(1:m,1:n);
R2(1,1) = R1(1,1);
R2(1,n+2) = R1(1,n);
R2(m+2,1) = R1(m,1);
R2(m+2,n+2) = R1(m,n);
R2(1,2:n+1) = R1(1,1:n);
R2(m+2,2:n+1) = R1(m,1:n);
R2(2:m+1,1) = R1(1:m,1);
R2(2:m+1,n+2) = R1(1:m,n);

%% diff
%D0 = zeros(3,3);
D1 = zeros(m,n);

for i =1:m 
    for j = 1:n
        D0 = R2(i:i+2,j:j+2);
        C1 = B1.*D0;
        C2 = B2.*D0;
        if strcmp(type,'Laplacian')
            D1(i,j) = sum(sum(C1));
            D1(i,j) = R1(i,j) - D1(i,j);
        else
            D1(i,j) = abs(sum(sum(C1)))+abs(sum(sum(C2)));
        end
    end
end

%% 資料型別轉換
B = uint8(D1);
end

sharpening.m

clc;
clear;

I0 = imread('實驗4原圖1(一階微分空域銳化實驗).jpg');
I1 = imsharpening('實驗4原圖1(一階微分空域銳化實驗).jpg','Roberts');
I2 = imsharpening('實驗4原圖1(一階微分空域銳化實驗).jpg','Sobel');
I3 = imsharpening('實驗4原圖1(一階微分空域銳化實驗).jpg','Priwitt');

I4 = imread('實驗4原圖2(拉普拉斯銳化實驗).jpg');
I5 = imsharpening('實驗4原圖2(拉普拉斯銳化實驗).jpg','Laplacian');

figure,imshow(I0),title('{\fontsize{18} Original}');
figure,imshow(I1),title('{\fontsize{18} Roberts}');
figure,imshow(I2),title('{\fontsize{18} Priwitt}');
figure,imshow(I3),title('{\fontsize{18} Priwitt}');
figure,imshow(I4),title('{\fontsize{18} Original}');
figure,imshow(I5),title('{\fontsize{18} Laplacian}');

實驗結果

在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述

相關文章