主要内容

균일하지조도수정전경객체분석하기

이예제분석전처리단계로을시키는방법보여줍니다줍니다줍니다。이예제전경(쌀의알)를를할수있도록균일하지않은배경조도를를수정수정하고영상을을을이진이진영상영상으로합니다합니다합니다합니다。그런,객체를(예:각쌀알면적구하기)하고하고의객체에대한통계량을계산수있습니다있습니다있습니다있습니다있습니다있습니다。

영상전처리하기

영상을공간읽어입니다입니다。

i = imread('rice.png');imshow(i)

图包含一个轴对象。轴对象包含类型图像的对象。

배경조도가맨보다부분부분밝습니다밝습니다밝습니다。배경조도균일만들기영상영상합니다합니다합니다。

첫번째로,모폴로지열기하여(쌀알)을모두합니다합니다합니다합니다。모폴로지열기요소완전히포함할크기가작은제거합니다합니다합니다。쌀한의에맞도록모양모양구조의반지름반지름반지름을을합니다합니다합니다합니다합니다합니다합니다。

se = strel('磁盘',15)
SE = Strel是具有属性的磁盘形结构元素:邻域:[29x29逻辑]维度:2

모폴로지연산을하려면iMopen을구조와사용하십시오。

背景= iMopen(i,se);imshow(背景)

图包含一个轴对象。轴对象包含类型图像的对象。

원본영상에서배경근사영상背景를뺀결과을합니다합니다。원래영상된영상을결과로영상의은은균일하지만분석하기하기에는영상영상이이약간약간。

i2 = i-背景;imshow(i2)

图包含一个轴对象。轴对象包含类型图像的对象。

Imadjust1%1%를를하고명암낮은낮은낮은낮은낮은낮은하고하고하고하고하고하고UINT8형동적채울명암값확장합니다합니다。이를앞서처리한영상i2의대비향상됩니다。

i3 = imadjust(i2);imshow(i3)

图包含一个轴对象。轴对象包含类型图像的对象。

imtophat를사용의단계를모두한단계로수있습니다있습니다있습니다。이함수열기를계산다음영상에서모폴로지가수행된영상을뺍니다뺍니다。

i2 = imtophat(i,strel('disk',15));

분석에를사용할있도록된영상을버전의영상을생성합니다합니다。inimbinarize함수를회색조을영상영상합니다합니다합니다。Bwareaopen함수를영상배경잡음제거합니다합니다。

bw = imbinarize(i3);BW = Bwareaopen(BW,50);imshow(BW)

图包含一个轴对象。轴对象包含类型图像的对象。

영상에서객체하기

이제원래이진화한이있으므로의객체분석할있습니다있습니다있습니다。

이진영상연결(객체)을모두찾습니다찾습니다。결과의객체와연결성파라미터(4,8또는의값),에에따라따라따라따라,그리고그리고따라따라따라따라따라따라따라따라에따라에에따라따라따라따라따라따라따라따라따라따라따라따라따라따라따라따라파라미터파라미터파라미터파라미터파라미터파라미터파라미터파라미터파라미터파라미터파라미터파라미터파라미터있는지있는지이진영상BW를보면쌀알이닿아있습니다。

CC = BWConnComp(BW,4)
cc =带有字段的结构:连接:4个图像:[256 256] NumObjects:95 pixelidxlist:{1x95 cell}
cc.numobjects
ANS = 95

50으로으로된쌀알을표시합니다합니다합니다합니다。

晶粒= false(size(bw));谷物(cc.pixelidxlist {50})= true;imshow(谷物)

图包含一个轴对象。轴对象包含类型图像的对象。

레이블행렬을의사색상영상으로표시영상연결성분모두시각화합니다합니다。

LabelMatrix를사용하여BWConnComp의출력에서행렬을만듭니다。LabelMatrix는객체필요가장작은숫자형에행렬을저장합니다합니다。

标记= LabelMatrix(CC);谁是标记
名称大小字节类属性标记为256x256 65536 UINT8

Label2RGB를사용맵배경색을하고레이블의객체가컬러맵의색색에매핑매핑되는방법방법을선택합니다합니다합니다。의사색상영상레이블의각를식별레이블이이에연결된컬러맵맵행렬행렬의다른다른색에매핑매핑됩니다됩니다됩니다。

rgb_label = label2rgb(标记,'春天',,,,'C',,,,“洗牌”);imshow(rgb_label)

图包含一个轴对象。轴对象包含类型图像的对象。

면적기반통계량하기

地区企业를사용에각객체의을합니다합니다합니다。각쌀알은CC구조체에서의성분입니다。

graindata = regionprops(cc,'基本的'
graindata =带有字段的95×1结构阵列:区域质心边界箱

각쌀알면적값을포함할벡터벡터grain_areas를만듭니다。

grain_areas = [graindata.area];

50번째의을구합니다。

grain_areas(50)
ANS = 194

면적이작은찾아합니다합니다。

[min_area,idx] = min(grain_areas)
min_area = 61
IDX = 16
晶粒= false(size(bw));谷物(cc.pixelidxlist {idx})= true;imshow(谷物)

图包含一个轴对象。轴对象包含类型图像的对象。

直方图명령을쌀알의히스토그램생성합니다합니다。

直方图(grain_areas)标题(“水稻谷物区域的直方图”

图包含一个轴对象。带有水稻粒面积的标题直方图的轴对象包含类型直方图的对象。

참고항목

|||||||||