8 つのテンプレートの Sobel オペレーターを使用してエッジ検出と画像鮮明化を実現するプログラムを作成します (デジタル画像処理用の Matlab コード)

 1. トピック:  

8 つのテンプレートの Sobel オペレーターを使用してエッジ検出と画像鮮明化を実現するプログラムを作成します (デジタル画像処理用の Matlab コード)

2. 注釈付きの Matlab コード:

%读入彩色图像后,转为灰度图像,再将图像数据类型转化为double
Image = im2double(rgb2gray(imread('C:\Users\HUAWEI\Desktop\A计协\1大三重点\数字图像处理\lena_color_256.tif')));
subplot(221);imshow(Image);title('原图像');

%构造5*5的均值平滑滤波器
HFilter = fspecial('average',[5,5]);
%使用均值滤波器对图像进行平滑
ImageF = imfilter(Image,HFilter); 
subplot(222);imshow(ImageF);title('5*5模板均值滤波后图像');

%构造Sobel算子的8个模板,旋转得来
H1 = [-1 -2 -1;0 0 0;1 2 1];H2 = [0 -1 -2;1 0 -1;2 1 0];
H3 = [1 0 -1;2 0 -2;1 0 -1];H4 = [2 1 0;1 0 -1;0 -1 -2];
H5 = [1 2 1;0 0 0;-1 -2 -1];H6 = [0 1 2;-1 0 1;-2 -1 0];
H7 = [-1 0 1;-2 0 2;-1 0 1];H8 = [-2 -1 0;-1 0 1;0 1 2];
%使用Sobel各个模板进行过滤
R1 = imfilter(ImageF,H1);R2 = imfilter(ImageF,H2);
R3 = imfilter(ImageF,H3);R4 = imfilter(ImageF,H4);
R5 = imfilter(ImageF,H5);R6 = imfilter(ImageF,H6);
R7 = imfilter(ImageF,H7);R8 = imfilter(ImageF,H8);

%通过两两取最大的方式构造综合八个模板,得到梯度图像
f1 = max(max(R1,R2),max(R3,R4));
f2 = max(max(R5,R6),max(R7,R8));
edgeImage = max(f1,f2);
subplot(223);imshow(edgeImage);title('八个模板的Sobel梯度图像');

%梯度图像与被平滑的图像合并,得到对被平滑图像的锐化处理结果
sharpImage = edgeImage+ImageF;
subplot(224);imshow(sharpImage);title('八个模板的Sobel锐化图像');

3. 操作の結果:

おすすめ

転載: blog.csdn.net/zhan_qian/article/details/127985486