主要内容

不均一な照度の補正と前景オブジェクトの解析

この例では解析の前処理手順として▪▪メ▪▪ジを強調する方法を説明します。この例では,背景の不均一な照度を補正し,イメージをバイナリイメージに変換して前景オブジェクト(1つ1つの米粒)を識別しやすくします。その後,各米粒の面積を求めるなど,オブジェクトを分析し,イメージ内のすべてのオブジェクトの統計量を計算できます。

メ,ジの前処理

I = imread(“rice.png”);imshow(我)

图中包含一个轴对象。axis对象包含一个image类型的对象。

背景の照度は,。。

最初の手順として,モルフォロジ,オ,プニングを実行してすべての前景(米粒)を削除します。オ,プニング演算により,構造化要素を完全に含めることのできない小さいオブジェクトは削除されます。半径が15である円板状の構造化要素を定義し,1の米粒内に完全に収まるようにします。

Se = strel(“磁盘”15)
se = strel是一个圆盘形状的结构元素,其属性:邻域:[29x29 logical]维数:2

モルフォロジ,オ,プニングを実行するには,imopenと構造化要素を併用します。

background = imopen(I,se);imshow(背景)

图中包含一个轴对象。axis对象包含一个image类型的对象。

元の▪▪メ▪▪ジから背景の近似▪▪メ▪▪ジ背景を減算し,結果の。元の▪▪メ▪▪ジから調整後の背景のイメージを減算すると、結果のイメージは背景が均一になりますが、解析対象としては少し暗くなります。

I2 = I -背景;imshow (I2)

图中包含一个轴对象。axis对象包含一个image类型的对象。

処理後の▪▪メ▪▪ジI2のコントラストを増大させるには,関数imadjustを使用してデ,タを低強度と高強度の1%で飽和させ,強度値をuint8のダ@ @ナミックレンジ全体に拡大します。

I3 = imadjust(I2);imshow (I3)

图中包含一个轴对象。axis对象包含一个image类型的对象。

前の2の手順は,imtophatを使用する1の手順に置き換えできることに注意してください。この関数は,最初にモルフォロジオプニングを計算してから元のメジから抽出します。

I2 = imtophat(I,strel('disk',15));

処理後のイメージのバイナリバージョンを作成して,解析にツールボックス関数を使用できるようにします。関数imbinarizeを使用し,グレスケルメジをバナリメジに変換します。関数bwareaopenを使用して,。

bw = imbinalize (I3);Bw = bwareaopen(Bw,50);imshow (bw)

图中包含一个轴对象。axis对象包含一个image类型的对象。

メ,ジ内のオブジェクトの識別

元のメジのバナリバジョンが作成されました。このバ,ジョンで;

バ▪▪ナリ▪▪メジ内のすべての連結要素(オブジェクト)。結果の精度は,オブジェクトのサイズ,連結性パラメーター(4、8または任意の数),およびオブジェクトが接しているかどうか(接している場合,1つのオブジェクトとしてラベル付けされる場合があります)によって異なります。バ@ @ナリ@ @メ@ @ジbw内の米粒のいくかは接触しています。

Cc = bwconncomp(bw,4)
cc =带字段的结构:连接性:4 ImageSize: [256 256] NumObjects: 95 PixelIdxList: {1x95 cell}
cc.NumObjects
Ans = 95

@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @

Grain = false(size(bw));grain(cc.PixelIdxList{50}) = true;imshow(粮食)

图中包含一个轴对象。axis对象包含一个image类型的对象。

ラベル行列を作成して,疑似色のインデックス付きイメージとして表示することで,イメージ内のすべての連結要素を可視化します。

関数labelmatrixを使用して,関数bwconncompの出力からラベル行列を作成します。関数labelmatrixは,オブジェクト数に必要な最小の数値クラスでラベル行列を格納することに注意してください。

标签= labelmatrix(cc);谁标签
名称大小字节类属性标签256x256 65536 uint8

関数label2rgbを使用して,カラーマップ,背景色,ラベル行列の中のオブジェクトがカラーマップの中の色にどのようにマップされるかを指定します。疑似カラーイメージでは,ラベル行列の各オブジェクトを識別するラベルがそれぞれ関連カラーマップ行列内の異なる色にマップされます。

RGB_label = label2rgb(标签,“春天”“c”“洗牌”);imshow (RGB_label)

图中包含一个轴对象。axis对象包含一个image类型的对象。

面積ベ,スの統計量の計算

関数regionpropsを使用して▪▪メ▪▪ジ内の各オブジェクトの面積を計算します。各米粒は構造体cc内では1の連結要素です。

Graindata = regionprops(cc,“基本”
graindata =95×1包含字段的struct数组:区域质心边界框

新しいベクトルgrain_areasを作成します。これは各粒の測定面積を保持します。

grain_areas = [graindata.Area];

50番目の要素の面積を求めます。

grain_areas (50)
Ans = 194

最小面積の粒を特定して表示します。

[min_area, idx] = min(grain_areas)
Min_area = 61
Idx = 16
Grain = false(size(bw));grain(cc.PixelIdxList{idx}) = true;imshow(粮食)

图中包含一个轴对象。axis对象包含一个image类型的对象。

柱状图コマンドを使用して米粒の面積のヒストグラムを作成します。

直方图(grain_areas)标题(“米粒面积直方图”

图中包含一个轴对象。标题为“稻谷面积直方图”的axis对象包含一个类型为直方图的对象。

参考

|||||||||