【数字图像处理】MATLAB实现图像的锐化

您所在的位置:网站首页 matlab提高图片清晰度的程序代码 【数字图像处理】MATLAB实现图像的锐化

【数字图像处理】MATLAB实现图像的锐化

2024-07-11 18:21| 来源: 网络整理| 查看: 265

图像锐化处理的MATLAB实现

目录 1、关于一阶微分锐化1)单方向一阶锐化👉 水平方向的一阶锐化👉 垂直方向的一阶锐化 2)无方向一阶锐化👉 交叉微分锐化👉 Sobel锐化👉 Priwitt锐化 2、关于二阶微分锐化👉 Laplacian 算法👉 Wallis算法

1、关于一阶微分锐化 1)单方向一阶锐化 👉 水平方向的一阶锐化

代码实现:

% 水平方向一阶微分锐化 im = imread('img\Grayblur6.png');imshow(im);title('原始图像'); im = double(im); H = [1 2 1;0 0 0; -1 -2 -1]; im1 = filter2(H,im); % filter2 - 二维数字滤波器 figure,imshow(im1);title('直接滤波所得图像'); figure,imshow(uint8(im1+im));title('直接滤波并叠加原图所得图像'); maxV = max(max(im1)); minV = min(min(im1)); im2 = (im1-minV)*(255/(maxV-minV)); figure,imshow(uint8(im2));title('滤波结果归一化所得图像'); im3 = abs(im1); figure,imshow(uint8(im3));title('滤波结果取绝对值所得图像');

代码执行结果: 在这里插入图片描述 在这里插入图片描述

👉 垂直方向的一阶锐化

代码实现:

% 垂直方向一阶微分锐化 im = imread('img\Grayblur6.png');imshow(im);title('原始图像'); im = double(im); H = [1 0 -1;2 0 -2; 1 0 -1]; im1 = filter2(H,im); % filter2 - 二维数字滤波器 figure,imshow(im1);title('直接滤波所得图像'); figure,imshow(uint8(im1+im));title('直接滤波并叠加原图所得图像'); maxV = max(max(im1)); minV = min(min(im1)); im2 = (im1-minV)*(255/(maxV-minV)); figure,imshow(uint8(im2));title('滤波结果归一化所得图像'); im3 = abs(im1); figure,imshow(uint8(im3));title('滤波结果取绝对值所得图像');

代码执行结果: 在这里插入图片描述 在这里插入图片描述

2)无方向一阶锐化 👉 交叉微分锐化

代码实现:

% 交叉微分算法(Roberts算法) % g( i, j)= |f(i+1,j+1)-f(i,j)|+ |f(i+1,j)-f(i,j+1)| % 输入原始图像 im = imread('img\Grayblur6.png');imshow(im);title('原始图像'); f = double(im); [h,l,c] = size(f); g = zeros(h,l); for i=1:h-1 for j=1:l-1 % 交叉微分 g(i,j) = abs(f(i+1,j+1)-f(i,j)) + abs(f(i+1,j)-f(i,j+1)); end end im2 = uint8(g); figure,imshow(im2);title('交叉微分/Roberts锐化所得的图像'); figure,imshow(uint8(g+f));title('交叉微分/Roberts锐化并叠加原图所得的图像');

代码执行结果: 在这里插入图片描述

👉 Sobel锐化

代码实现:

% Sobel锐化 % g(i,j)=[dx(i,j)^2+dy(i,j)^2]^(1/2); % dx = [-1 -2 -1;0 0 0;1 2 1]; dy = [-1 0 1;-2 0 2;-1 0 1]; % 输入原始图像 im = imread('img\Grayblur6.png');imshow(im);title('原始图像'); im = double(im); H1 = [-1 -2 -1;0 0 0;1 2 1]; dx = filter2(H1,im); H2 = [-1 0 1;-2 0 2;-1 0 1]; dy = filter2(H2,im); im2 = sqrt(dx.^2 + dy.^2); % .^2:矩阵中的每个元素都求平方 figure,imshow(uint8(im2));title('Sobel锐化所得的图像'); im3 = im + sqrt(dx.^2 + dy.^2)*0.1; figure,imshow(uint8(im3));title('Sobel锐化并叠加原图所得的图像');

代码执行结果: 在这里插入图片描述

👉 Priwitt锐化

代码实现:

% Priwitt锐化算法 % g(i,j)=[dx(i,j)^2+dy(i,j)^2]^(1/2); % dx = [-1 -1 -1;0 0 0;1 1 1]; dy = [-1 0 1;-1 0 1;-1 0 1]; % 输入原始图像 im = imread('img\Grayblur6.png');imshow(im);title('原始图像'); im = double(im); H1 = [-1 -1 -1;0 0 0;1 1 1]; dx = filter2(H1,im); H2 = [-1 0 1;-1 0 1;-1 0 1]; dy = filter2(H2,im); im2 = sqrt(dx.^2 + dy.^2); % .^2:矩阵中的每个元素都求平方 figure,imshow(uint8(im2));title('Priwitt锐化所得的图像'); im3 = im + sqrt(dx.^2 + dy.^2)*0.1; figure,imshow(uint8(im3));title('Priwitt锐化并叠加原图所得的图像');

代码执行结果: 在这里插入图片描述

2、关于二阶微分锐化 👉 Laplacian 算法

代码实现:

% (拉普拉斯)Laplacian锐化算法 % 输入原始图像 im = imread('img\Grayblur6.png');imshow(im);title('原始图像'); im = double(im); H1 = [0 -1 0;-1 4 -1;0 -1 0]; im_filter1 = filter2(H1,im); im2_1 = im_filter1 + im;figure,imshow(uint8(im2_1));title('Laplacian锐化—H1叠加原图所得的图像'); maxV = max(max(im_filter1));minV = min(min(im_filter1)); delta = 0; if(minV


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3