- regionprops関数の出力(構造体配列)からBoundingBoxの座標を取り出し行列に変換
- BoundingBox行列の「4列目:各BoundingBoxの高さ ÷ 3列目:各BoundingBoxの幅」で縦横比を計算
- アスペクト比が所定の規格内に入っているBoundingBoxのインデックスを得る
- 得られたインデックスでregionprops関数の出力(構造体配列)にアクセスして各要素を描画する
regionpropsのBoundingBoxの値をつかって、フィルターをかけたい
8 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hiroshi Takase
il 22 Feb 2023
Commentato: Hiroshi Takase
il 24 Feb 2023
データを regionpropsにて計測しているのですが、そのうち認識されたエリアの縦横比をBoundingBoxないのデータをつかって計算し縦横比が1:1~1:2のもの以外は除外して、数を数え、また該当したものを図に書き入れたいのですが、
以下の順で処理しているのですが、どのようにしたらBoundingBoxの範囲を指定できるか教えていただきたいです
status_t= regionprops((I_seg_t > 1),'Centroid','BoundingBox');
numblobs_t =size(status_t,1);
Ir = insertShape(RGBImage,'Rectangle',cat(1,status_t.BoundingBox),'Color','White');
Ir = insertMarker(Ir,cat(1,status_t.Centroid),'*','Color','Blue');
figure,imshow(Ir)
0 Commenti
Risposta accettata
Atsushi Ueno
il 23 Feb 2023
Modificato: Atsushi Ueno
il 23 Feb 2023
>どのようにしたらBoundingBoxの範囲を指定できるか教えていただきたいです
RGBImage = imread('rice.png'); % サンプル用のグレースケールイメージ
I_seg_t = bwareaopen(imbinarize(RGBImage - imopen(RGBImage, strel('disk',15))), 50); % 2値化など
status_t = regionprops(I_seg_t,'Centroid','BoundingBox');
BB = cat(1,status_t.BoundingBox); % Bounding Box 内のデータ
AR = BB(:,4)./BB(:,3); % 縦横比
index = (AR >= 0.5) & (AR <= 1.0); % BoundingBoxの縦横比が規格内のインデックス
Ir = insertShape(RGBImage,'Rectangle',cat(1,status_t(index).BoundingBox),'Color','White');
Ir = insertMarker(Ir,cat(1,status_t(index).Centroid),'*','Color','Blue');
figure,imshow(Ir)
sum(index) % 縦横比が1:1~1:2の数を数える
2 Commenti
Atsushi Ueno
il 23 Feb 2023
色々弄って思ったのですが、何の為の縦横比なのか不明なので、言葉通りに解釈しようと思いました。
縦横比が1:1~1:2
縦(高さ)÷横(幅)が1.0~0.5(1.0以下、0.5以上)、つまり横長は縦横比1:2までOK,縦長はNGと解釈しました。
縦長横長問わず細長過ぎる物を除くのであれば、縦横比が2:1~1:2(2.0以下、0.5以上) になるのかなと思いました
Più risposte (0)
Vedere anche
Categorie
Scopri di più su 領域とイメージのプロパティ in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!