画像における、最長の部分と最短の部分を算出することはできますか。
2 views (last 30 days)
Show older comments
以下の画像は、matlabのプログラムから、円を描かせたものです。
この画像の円の部分における、赤の線の長手方向の最長の長さ、緑の線の短手方向の最短の長さを算出するプログラムはありますか??
以下のURLにおいて、近しいことをしているのですが、この方法以外で、できれば、描いた青のラインを用いることができたらなと考えています。
青のラインを引くプログラムは以下に添付します。
%%画像入力
kaki_img=imread('kaki_prototype.jpg'); %画像読み込み
%kakiimg=imcrop(kakiimg)
figure(2)
imshow(kaki_img,'Border','tight','InitialMagnification','fit');
%%画像全体のセグメンテーション
kaki_red=kaki_img(:,:,1); %画像のセグメンテーション(赤要素検出)
figure(3)
imshow(kaki_red,'Border','tight','InitialMagnification','fit');
%%画像の二値化
kaki_th=kaki_red>145;
figure(4)
imshow(kaki_th,'Border','tight','InitialMagnification','fit');
%%二値化画像の穴埋め
kaki_th=imfill(kaki_th,'holes');
figure(5)
imshow(kaki_th,'Border','tight','InitialMagnification','fit');
%%二値化画像のクリーンナップ(周囲の白を除去)
kaki_th=bwareafilt(kaki_th,1);
figure(6)
imshow(kaki_th,'Border','tight','InitialMagnification','fit');
%%牡蠣の二値化画像の外周に色付け
% BW=imbinarize(I);
BW = kaki_th;
%%Detec boundarries
B=bwboundaries(kaki_th,'noholes');
figure(7)
imshow(BW)
hold on
for kk=1:numel(B)
%%'c'で色を固定
plot(B{kk}(:,2),B{kk}(:,1),'c','LineWidth',2)
end
stats=regionprops('table',BW,'Perimeter');
title(sprintf('boundary length is %d',stats.Perimeter))
%% 画像入力(寸法計算用)
sunpo=imread('box_base.jpg');
figure(1)
imshow(sunpo)
[x,y,P]=impixel(sunpo); %クリックしたpixelの座標
%注) クリックsuru画像の点は20mmと定める
[x,y]; %クリックした距離の間にあるpixelの数
Dis1=(((x(2)-x(1))^2)+((y(2)-y(1))^2))^(1/2); %1回目と2回目
Dis2=(((x(4)-x(3))^2)+((y(4)-y(3))^2))^(1/2); %3回目と4回目
Dis3=(((x(6)-x(5))^2)+((y(6)-y(5))^2))^(1/2); %5回目と6回目
Dis4=(((x(8)-x(7))^2)+((y(8)-y(7))^2))^(1/2); %7回目と8回目
Dis5=(((x(10)-x(9))^2)+((y(10)-y(9))^2))^(1/2); %9回目と10回目も距離
Disav=(Dis1+Dis2+Dis3+Dis4+Dis5)/5; %Dis1~5の平均値
pix=20/(Disav); %Disavの距離を20mmと最初に設定し,1pixelあたりの距離[mm]を算出
size=stats.Perimeter*pix;
プログラムで使用されている画像は以下のURLに添付してあります。
1 Comment
Kenta
on 4 Dec 2019
こんにちは、URLにあるようなregionprops関数を利用するのがもっともよいと思うのですが
それではいけない理由はなんでしょうか。長軸と短軸は、どの関数を用いても同一になると思うのですが。
Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!