图像锐化——基于梯度算子的五种方法

目录

一、计算原理 

二、图像灰度化函数

三、主程序

四、仿真效果

一、计算原理 

二、图像灰度化函数

function[A]=myreb2gray(a)
n=size(a,3);
if n==1
    A=a;
    disp('该图像是灰度图')
else
    A=rgb2gray(a); 
    disp('该图像是彩色图')
end
end

三、主程序

clear; close all; clc
%% 图像变换灰度变换(这里是默认将彩色图像灰度化了,如果想做彩色图片,可以将第三行I=myreb2gray(I);注释即可)
I = imread('tire.tif');%读取图像
I=myreb2gray(I);%调用函数,处理图像使之灰度化
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;输出图片会变白

四、仿真效果

猜你喜欢

转载自blog.csdn.net/xiaolizi_331/article/details/121400132
今日推荐