1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Matlab采用梯度算子 拉普拉斯算子 Sobel算子及Prewitt算子对图像进行锐化

Matlab采用梯度算子 拉普拉斯算子 Sobel算子及Prewitt算子对图像进行锐化

时间:2020-02-19 05:55:33

相关推荐

Matlab采用梯度算子 拉普拉斯算子 Sobel算子及Prewitt算子对图像进行锐化

Matlab采用梯度算子、拉普拉斯算子、Sobel算子及Prewitt算子对图像进行锐化

文章目录

Matlab采用梯度算子、拉普拉斯算子、Sobel算子及Prewitt算子对图像进行锐化梯度算子拉普拉斯算子Robel算子Prewitt算子整体程序:结果显示:

梯度算子

设图像为f(x,y), 定义为f(x,y)在点(x,y)的梯度矢量为G[f(x,y)]:

性质:

1)梯度的方向是在f(x,y)的最大变化率方向上

2)梯度的幅度用G[f(x,y)]表示:

梯度

对于数字图像:

简化为:

Roberts梯度(交叉梯度)

对于数字图像:

简化为:

拉普拉斯算子

拉普拉斯算子:

线性、各向同性(旋转不变)

对于数字图像f(i,j),其一阶导数:

二阶偏导数为:

拉普拉斯算子模板表示

注意:

1)有时g(x,y)输出小或为负

2)有时g(x,y)的增强可能超出范围,需要变回0~L-1尺度中

Robel算子

基本思想

以待增强图像的任意像素(i,j)为中心,截取一个3X3的像素窗口,先分别计算窗口中像素在x,y方向的梯度:

增强后(i,j)点的亮度:

可简化为:

优点

1)由于引入了加权平均,所以对图像中的随机噪声具有一定的平滑作用

2)由于采用间隔两行或两列的查分,边缘两侧的像素得到增强,锐化图像的边缘显得粗而亮

S_x,S_y可用卷积模板来实现:

可见:其重点放在接近于模板中心的像素点

Prewitt算子

基本思想

与Sobel算子相同,方程的形式相同,但其中系数不同:

可见:与Sobel算子不同,其重点没有放在接近于模板中心的像素点

整体程序:

clc;clear all;img = imread('F:\1.jpg');img = rgb2gray(img);subplot(2,3,1);imshow(img);title('原始图像');[m,n] = size(img);T = 20;%Roberts算子imgr = zeros(m,n);for i=2:m-1for j=2:n-1imgr(i,j)= abs(img(i,j)-img(i+1,j+1)) + abs(img(i+1,j)-img(i,j+1));if imgr(i,j)<Timgr(i,j) = 0;elseimgr(i,j) = 255;endendendsubplot(2,3,2);imshow(imgr);title('Roberts算子图像');%Laplace算子imgl = zeros(m,n);for i=2:m-1for j=2:n-1imgl(i,j)= abs(img(i+1,j)+img(i-1,j)+img(i,j+1)+img(i,j-1)-4*img(i,j));if imgl(i,j)<Timgl(i,j) = 0;elseimgl(i,j) = 255;endendendsubplot(2,3,3);imshow(imgl);title('Laplace算子图像');%Sobel算子imgs = zeros(m,n);for i=2:m-1for j=2:n-1imgs(i,j)= abs(img(i-1,j+1)+2*img(i,j+1)+img(i+1,j+1)-img(i-1,j-1)-2*img(i,j-1)-img(i+1,j-1)) + abs(img(i+1,j-1)+2*img(i+1,j)+img(i+1,j+1)-img(i-1,j-1)-2*img(i-1,j)-img(i-1,j+1));if imgs(i,j)<Timgs(i,j) = 0;elseimgs(i,j) = 255;endendendsubplot(2,3,4);imshow(imgs);title('Sobel算子图像');%Prewitt算子imgp = zeros(m,n);for i=2:m-1for j=2:n-1imgp(i,j)= abs(img(i-1,j+1)+img(i,j+1)+img(i+1,j+1)-img(i-1,j-1)-img(i,j-1)-img(i+1,j-1)) + abs(img(i+1,j-1)+img(i+1,j)+img(i+1,j+1)-img(i-1,j-1)-img(i-1,j)-img(i-1,j+1));if imgp(i,j)<Timgp(i,j) = 0;elseimgp(i,j) = 255;endendendsubplot(2,3,5);imshow(imgp);title('Prewitt算子图像');

结果显示:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。