首页 > 编程知识 正文

数字图像处理matlab版pdf,数字图像处理图像直方图统计

时间:2023-05-06 10:23:58 阅读:143890 作者:3587

对数及对比度拉伸变换、直方图处理和函数图。

对数及对比度扩展变换对数及对比度扩展变换的作用主要可以增强图像中暗区的细节,公式如下

c l o g v + 1 ( 1 + v r ) r [ 0 , 1 ] c cdot log_{v+1}^{(1+v cdot r)} quad r epsilon {[0,1]} clogv+1(1+vr)r[0,1]

底部的数量为v 1,底部越大,暗的部分的细节越清晰。 实际计算时,需要使用变底公式。 为了明确其灰度部分,一般使用灰度变换进行处理。

f=imread('fig0305(a ) ) spectrum ).tif ); f=mat2gray(f,[0 255] ); v=10; g_1=log2(1v*f )/log2 ) v1 ); v=30; g_2=log2(1v*f )/log2 ) v1 ); v=200; g_3=log2(1v*f )/log2 ) v1 ); figure (; subplot (1,2,1 ); imshow(f,[0 1]; xlabel(a ).Original Image ); subplot (1,2,2 ); imshow(g_1,[0 1] ); xlabel(b ).Log Transformations v=10 ); figure (; subplot (1,2,1 ); imshow(g_2,[0 1] ); xlabel(c ).Log Transformations v=100 ); subplot (1,2,2 ); imshow(g_3,[0 1] ); xlabel(d ).Log Transformations v=200 );

直方图处理和函数图imhist图图像直方图的中心函数是h = imhist(f,b)

这里,f是输入图像,h是直方图,b是用于生成直方图的“容器”的数量,在处理uint8类的图像的情况下,b=2的情况下,灰度范围为0-127、128-255.h1和h2、hh2

使用这个公式可以得到归一化直方图。 http://www.Sina.com/http://www.Sina.com/: numel (f )给出数组f中的元素数,即像素数。

f=imread(pig.jpg ); subplot(121 ),I

mshow(f);title('pig');>> subplot(122),imhist(f);title('pig直方图');


上面的条形图太挤了,下面这个比较直观。

下面的命令可以将水平轴分为10级一组的条形图

>> h = imhist(f,25);>> horz = linspace(0,255,25);>> bar(horz,h);>> axis([0 255 0 60000]);>> set(gca, 'xtick',0:50:255);>> set(gca, 'ytick',0:20000:60000);

其中linspace的作用

>> t = linspace(0,100,5)t = 0 25 50 75 100 stem画杆状图

下面的命令生成一副杆状图

>> h = imhist(f,25);>> horz = linspace(0,255,25);>> stem(horz,h,'fill');>> axis([0 255 0 60000]);>> set(gca, 'xtick',0:50:255);>> set(gca, 'ytick',0:20000:60000);

plot画线性图

函数plot,将一组点用直线连起来。语法为:plot(horz,z,‘LineSpec’)

>> hc = imhist(f);>> plot(hc)>> axis([0 255 0 1500])>> set(gca,'xtick',[0:50:255]);>> set(gca,'ytick',[0:200:1500]);

直方图的属性

可以选择直方图的显示方式,比如颜色,线性和标记点

颜色符号说明bblue 蓝色ggreen 绿色rred 红色ccayn 青色mmagenta 品红yyellow 黄色kblack 黑色wwhite 白色 线型符号说明-实线:虚线-.点划线–双划线 数据点符号说明.实心点o空心圆圈x叉子+十字符号*米字符号ssquare方块ddiamond菱形v下三角^上三角<左三角>右三角ppentagram 五角星hhexagram 六角星>> hc = imhist(f);>> plot(hc,'c--o');

直方图均衡

将直方图中灰度较集中的地区间扩散到全部灰度范围,使其较均匀分布。
效果是可以增强图像对比度。

>> f = imread('Fig0308(a)(pollen).tif');>> subplot(121),imshow(f),title('pollen');>> subplot(122),imhist(f),title('pollen_hist');>> g = histeq(f,256);>> figure;>> subplot(121),imshow(g),title('pollen_eq');>> subplot(122),imhist(g),title('pollen_histeq');

图一是花粉原图像和其直方图,可以看出灰度在低范围内比较集中,图二是经过histeq均衡后的结果,明显图像对比度增强了,灰度级比较平均。

直方图匹配

当直方图均衡不能得到期望的结果,就需要用直方图匹配来得到我们期望的结果。
如下的两张图片,第一张是火星天体福布司和其直方图,第二张使其直方图均衡过的图和其直方图,通过图片我们可以看出效果并不好,灰度由低范围映射到了较高的范围,导致图片褪色。

实现直方图匹配的工具箱函数: g = histeq(f,hspec)
f为输入图像,hspec为规定的直方图(一个规定值的行向量),g为输出图像,输出图像的直方图近似于指定的直方图hspec。

>> f1 = imread('sea.jpg');>> f2 = imread('pig.jpg');>> subplot(121),imshow(f1),title('sea');>> subplot(122),imhist(f1),title('sea_hist');>> figure>> subplot(121),imshow(f2),title('pig');>> subplot(122),imhist(f2),title('pig_hist');

输入为f1:sea f2:pig的图片,分别显示其原图和直方图。

然后将pig作为输入图片,sea的直方图作为输入直方图,显示pig原图,均衡后的pig和均衡后的直方图。

>> g = histeq(f2,imhist(f1));>> figure>> subplot(131),imshow(f2),title('pig');>> subplot(132),imshow(g),title('pig_hist_sea');>> subplot(133),imhist(g),title('pig_hist');

通过和sea对比,可以看出均衡后的pig和sea的风格相似,而且直方图也相似。

将sea作为输入图片,pig的直方图作为输入直方图,显示sea原图,均衡后的sea和均衡后的直方图。

>> g = histeq(f1,imhist(f2));>> figure>> subplot(131),imshow(f1),title('sea');>> subplot(132),imshow(g),title('sea_hist_pig');>> subplot(133),imhist(g),title('sea_hist');

看出sea对比度增强了,这是因为pig的原图片对比度较高,均衡后的图片直方图的灰度级也更均匀。

直方图自适应匹配

函数adapthisted可以自适应直方图匹配,它使用直方图匹配来逐个图像中的较小区域(称为小片),然后用双线性内插法将相邻的小片组合起来从而消除人工引入的边界
g = adapthisteq(f,param1,val1,param2,val2,param3,val3…)

该函数所用参数:

NumTiles: 一个有正整数组成的两元素向量[r, c],由向量的行和列指定小片数。r和c都必须至少是2,小片总数等于r*c。默认值是[ 8 8]ClipLimit: 范围是[0 1]内的标量,用于指定对比度增强的限制。较高的值产生较强的对比度。默认值是0.01NBins: 针对建立对比度增强变黄所用的直方图容器数目指定的正整数标量。较高的值会在较慢的处理速度下导致较大的动态范围。默认值是256Range: 规定输出图像数据范围的字符串
------‘original’——范围被限制到原始图像的范围,[min(f(?) max(f(?)]
------‘full’——使用输出图像类的整个范围。例如,对于uint8类的数据,范围是[0 255]。这是默认值。Distribution: 为图像小片指定期望直方图形状的字符串
------‘uniform’——平坦的直方图(默认)
------‘rayleigh’——钟形直方图
------‘exponential’——曲线直方图Alpha: 适用于瑞利和指数分布的非负标量,默认值为0.4 >> f = imread('Fig0310(a)(Moon Phobos).tif');>> g1 = adapthisteq(f);>> g2 = adapthisteq(f, 'NumTiles', [25 25]);>> g3 = adapthisteq(f, 'NumTiles', [25 25], 'ClipLimit', 0.05);>> subplot(221),imshow(f),title('a');>> subplot(222),imshow(g1),title('b');>> subplot(223),imshow(g2),title('c');>> subplot(224),imshow(g3),title('d');

结果显示在下图,g1位默认值,图片细节得到了细微的增加,g2将图片尺寸增加到[25 25],清晰度细微增加,新的细节未出现,g3使参数ClipLimit = 0.05,细节显著增强。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。