图像对⽐度计算matlab_MATLAB图像处理:51:雪花的粒度
分析
本⽰例说明如何使⽤粒度分析来计算图像中雪花的⼤⼩分布。粒度测定法确定图像中对象的⼤⼩分布,⽽⽆需先明确分割(检测)每个对象。
读⼊图像
阅读“ snowflakes.png”图像,它是雪花的照⽚。
I = imread('snowflakes.png');
imshow(I)
增强对⽐度
第⼀步是使图像中的强度对⽐度最⼤化。您可以使⽤adapthisteq函数来执⾏此操作,该函数执⾏对⽐度限制的⾃适应直⽅图均衡。使
⽤imadjust函数重新缩放图像强度,以使其填充数据类型的整个动态范围。
claheI = adapthisteq(I,'NumTiles',[10 10]);
claheI = imadjust(claheI);
imshow(claheI)
确定增强图像中的强度表⾯积分布
粒度测定法估计雪花的强度表⾯积分布与尺⼨的关系。粒度分析法将图像对象⽐作⽯头,其⼤⼩可以通过在尺⼨增⼤的筛⼦上进⾏筛分并在每次通过后收集剩余物来确定。通过使⽤⼤⼩增加的结构元素做图像开操作并计数每次开操作后剩余的强度表⾯积(图像中像素值的总和)来筛选图像对象。
选择⼀个反极限,以使强度表⾯积在您增加结构元素的⼤⼩时变为零。出于显⽰⽬的,将表⾯积数组中的第⼀个条⽬保留为空。
radius_range = 0:22;
intensity_area = zeros(size(radius_range));
for counter = radius_range
remain = imopen(claheI, strel('disk', counter));
intensity_area(counter + 1) = sum(remain(:));
end
figure
plot(intensity_area, 'm - *')
grid on
title('Sum of pixel values in opened image versus radius')
xlabel('radius of opening (pixels)')
ylabel('pixel value sum of opened objects (intensity)')
计算分布的⼀阶导数
两个连续的开操作之间的强度表⾯积的显著下降,表⽰图像包含与较⼩的开操作可⽐较⼤⼩的对象。这等效于强度表⾯积数组的⼀阶导数,其中包含图像中雪花的⼤⼩分布。使⽤diff函数计算⼀阶导数。
intensity_area_prime = diff(intensity_area);
plot(intensity_area_prime, 'm - *')
grid on
title('Granulometry (Size Distribution) of Snowflakes')
ax = gca;
ax.XTick = [0 2 4 6 8 10 12 14 16 18 20 22];
xlabel('radius of snowflakes (pixels)')
ylabel('Sum of pixel values in snowflakes as a function of radius')
提取具有特定半径的雪花
请注意图中的最⼩值和半径。最⼩值告诉您图像中的雪花具有这些半径。最⼩点越趋向负向,则该半径处的雪花累积强度越⾼。例如,最负的最⼩值出现在5像素半径标记处。您可以按照以下步骤提取半径为5像素的雪花。
open5 = imopen(claheI,strel('disk',5));
open6 = imopen(claheI,strel('disk',6));
rad5 = imsubtract(open5,open6);
imshow(rad5,[])
注:本⽂根据MATLAB官⽹内容修改⽽成。
免费视频教程,特点是没有PPT,不掺⽔,直接编程环境下的实操课程:
以下的免费视频教程
⽤100分钟了解MATLAB编程
matlab直方图知乎 - 安全中⼼w ww.1data.pro
欢迎您进⼀步了解以下MATLAB系列⽂章:
吃⼩⽺:MATLAB作图实例:00:索引z huanlan.zhihu
吃⼩⽺:MATLAB⾦融⼯具箱:00:索引z huanlan.zhihu
吃⼩⽺:MATLAB图像处理:00:索引z huanlan.zhihu

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。