||
在数字图像处理技术中,图像增强技术是一个特别关键的技术。图像增强,顾名思义,就是增强图像的可识别度,让本不清晰的图像变得清晰,让本不明显的细节更加突出。图像增强的实质,是把原来灰度较为集中的图像在灰度级上均匀分布,也即增加了图像的对比度。图像增强应用的关键技术是灰度变换与空间滤波,本节着重介绍灰度变换。
灰度变换分为负片变换、对数变换、指数变换和分段线性变换,其中分段线性变换又有对比拉伸、灰度切割和位图切割。灰度变换中较为重要的是直方图处理,又分为直方图均衡化和直方图规定化。下面简要介绍各种方法的MATLAB实现,以说明如何用MATLAB分析图像处理问题,为以后利用MATLAB进行算法验证与开发打下基础。在以下的程序中,f,g分别表示input和output。
%负片变换
g=imcomplement(f);
%对数变换
g=log(1+double(f));
%对比拉伸
g=im2uint8(mat2gray(log(1+double(f))));
imshow(f),figure,imshow(g);%观察变换前后图像变化
%直方图均衡化
clear;
f=imread('');
subplot(2,2,1)
imshow(f)
hold on
subplot(2,2,2)
imhist(f)
g=imhist(f);
g1=g(1:10:256);
horz=1:10:256;
subplot(2,2,3)
bar(horz,g1)
axis([0 255 0 1000])
set(gca,'xtick',0:50:255)
set(gca,'ytick',0:100:1000)
%直方图规定化
它与直方图均衡化不同之处仅在于histeq()函数的运用,在此不再赘述。
在思考过程中,我有一个问题:在对比拉伸中用了g=im2uint8(mat2gray(log(1+double(f))));直接用g=log(1+f)与上句有何区别?后来经过思考发现,MATLAB中存储数据要转换为uint8类型,而将double数据转换为uint8过程中,可能此数据不在【0,1】范围内,故用mat2gray函数将其转换为【0,1】的标准形式,然后用im2uint8转换为uint8类型存储。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-8 10:28
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社