基于matlab图像锐化之梯度函数的五种方法
作者:互联网
目录
实现代码如下:
一、将图片转为灰色函数
function[A]=myreb2gray(a)
n=size(a,3);
if n==1
A=a;
disp('该图像是灰度图')
else
A=rgb2gray(a); %将图像灰度化,如果没有此步,出来的将是纯白
end
end
二、锐化代码
clear; close all; clc
%% 灰度变换(这里是默认将彩色图像灰度化了,如果想做彩色图片,可以将第三行I=myreb2gray(I);注释即可)
I = imread('Lena.bmp');%读取图像
I=myreb2gray(I);%调用函数,处理图像使之灰度化
figure,imshow(I);%输出图像
title('原图像')%给图像加标题
A=double(I);%将矩阵中的数,转化为双精度数,进行下面梯度的计算
%% 参数定义
[Gx,Gy]=gradient(A); % 计算梯度
G=sqrt(Gx.*Gx+Gy.*Gy);% 注意是矩阵点乘
n=size(I,1);%以下内容为构造一个和图像一样大的矩阵,写第三、四、五种锐化方法中固定灰度级
m=size(I,2);
k=size(I,3);
LG=ones(n,m,k);%如果不定义矩阵的话,可能会导致数组维度不一样
LB=ones(n,m,k);
LG=150*LG;%固定灰度级
LB=50*LB;%固定灰度级
T=7;%梯度阈值
%% 第一种图像增强
J1=G;
%% 第二种图像增强
J2=I;
K=find(G>=T);%找出梯度大于T值的G并返回K值
J2(K)=G(K);
%% 第三种图像增强
J3=I;
K=find(G>=T);%找出梯度大于T值的G并返回K值
J3(K)=LG(K);
%% 第四种图像增强
J4=I;
K=find(G<=T);%找出梯度小于T值的G并返回K值
J4(K)=LG(K);%LG为固定的灰度级
%% 第五种图像增强
J5=I;
K=find(G<=T);%找出梯度小于T值的G并返回K值
J5(K)=LB(K);%LB为一固定灰度级
Q=find(G>=T);%找出梯度大于T值的G并返回Q值
J5(Q)=LG(Q);
%% 显示图形
figure,%建立图像
subplot(2,3,1),imshow(I);
title('原图像');
subplot(2,3,2),imshow(J1);
title('第一种');
subplot(2,3,3),imshow(J2);
title('第二种');
subplot(2,3,4),imshow(J3);
title('第三种');
subplot(2,3,5),imshow(J4);
title('第四种');
subplot(2,3,6),imshow(J5);
title('第五种');
%注意:在每种增强前,一定要用原始图像去赋值,如:J5=I;。如果用J5=LB;输出图片会变白
三、效果图
原始图片
锐化后图像
标签:subplot,锐化,title,%%,梯度,imshow,matlab,图像 来源: https://blog.csdn.net/xiaolizi_331/article/details/121336144