图像的常⽤灰度变换——负⽚、伽马变换、对数变换、直⽅图均衡化、⾃适应灰
度变换及其MATLAB实现
灰度变换是图像预处理的重要⼿段,常见的变换⽅法如下,图⽂并茂和⼤家⼀起学习:
%%尝试灰度变换--伽马变换和对数变换、直⽅图均衡化
clc,clear,close all
f =imread('C:\Users\HS\Desktop\duck.jpg');
figure;imshow(f);title('原图');
f =rgb2gray(f);%彩⾊图像的灰度化
figure;imshow(f);title('原图灰度化');
灰度化之后开始正式的操作,
1.负⽚
就是把灰度级的⿊与⽩对调,有时候会从视觉上⽅便观察和寻⽬标
g0 =imadjust(f,[0,1],[1,0],1);
figure,imshow(g0);title('负⽚图像');
g =imcomplement(f);%效果同上
figure,imshow(g);title('等效的负⽚图像');
2.扩展区间与伽马灰度变换
g1 =imadjust(f,[01],[0,1],1.5);
figure,imshow(g1);title('灰度⾼低限不变,gamma=1.5');%变换效果不佳。。。
%开始选择灰度较⾼的区域做变换
%g2 =imadjust(f,[0.5,0.85],[0,1],1);%mamma=1时,线性变换,等效于下⼀句g2 =imadjust(f,[0.1,0.85],[]);
figure,imshow(g2);title('扩展区间0.1~0.85,gamma变换,默认值');
imhist(g2);ylim('auto');title('gamma变换,默认1');
g3 =imadjust(f,[0.1,0.85],[],0.5);%mamma<1时,变换凸显⾼灰度区域figure,imshow(g3);title('扩展区间0.1~0.85,gamma<1');
imhist(g3);ylim('auto');title('gamma变换,0.5');
g4 =imadjust(f,[0.1,0.85],[0,1],2);%mamma>1时,变换凸显低灰度区域figure,imshow(g4);title('扩展区间0.1~0.85,gamma>1');
imhist(g4);ylim('auto');title('gamma变换,2.0');
%figure,histogram(g4);title('gamma变换,2');
光看图没感觉?是滴,⼈眼的直观感受其实并不可信,建议对⽐灰度直⽅图看效果
可见灰度伽马变换的效果是根据gamma改变图像灰度构成,具体效果需要修改参数具体分析了3.⾃动选取灰度级的灰度变换
%%灰度变换,stretchlim函数⾃动选取灰度级,...
%⾃适应到⼀个分割阈值向量来改变⼀幅图像的对⽐度
matlab直方图g5 =imadjust(f,stretchlim(f),[01],1.5);
figure,imshow(g5);title('⾃动选取灰度级,默认[0.01,0.99]');
%⾃动选择了低限与⾼限,充满底部与顶部1%的灰度值,即[0.01,0.99]
%效果不佳,选择的灰度范围太⼤,区分性不好,不如不⽤
说实话还是⾃⼰设置的情况好看⼀点,过程可控
4.对数变换
⽐伽马函数gamma>1的效果更剧烈的⼀种灰度变换
%%对数变换
g7 =im2uint8(mat2gray(log(1+double(f))));figure;imshow(g7);title('对数变换');
%利⽤对数变换:减⼩动态范围,提⾼图像对⽐度
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论