필터 지우기
필터 지우기

二値画像から縦方向,横方向の最大の長さを求めたい

조회 수: 25 (최근 30일)
大輝 隅岡
大輝 隅岡 2022년 10월 18일
댓글: 大輝 隅岡 2022년 10월 21일
図のような,すこし複雑な縦長の物体の二値画像から縦方向,横方向それぞれの最大の長さを求めたいのですが,良いアイデアが思い浮かびません.
縦方向は最大何ピクセルというように,長さをピクセル数で求めたいです.
わかりにくい文章ですみませんが,どなたか教えていただきたいです.
よろしくお願いします.

채택된 답변

Atsushi Ueno
Atsushi Ueno 2022년 10월 18일
物体の外にノイズの無い画像であればany関数で物体を囲む長方形の座標を求める事が出来ます。
BW = rgb2gray(imread('image.png')) > 127; % すこし複雑な縦長の物体の二値画像
imshow(BW); hold on
x = find(any(BW,1)); % 横方向のベクトル(物体の在る画素のインデックスを得る)
y = find(any(BW,2)); % 縦方向のベクトル(物体の在る画素のインデックスを得る)
w = max(x)-min(x) % 横方向の最大の長さ
w = 205
h = max(y)-min(y) % 縦方向の最大の長さ
h = 96
rectangle('Position',[min(x),min(y),w,h],'EdgeColor','w'); % おまけ(物体を長方形で囲む)
  댓글 수: 4
Atsushi Ueno
Atsushi Ueno 2022년 10월 20일
> これは「横方向では最大で205個のピクセルがある」という解釈であっていますでしょうか?
多分NOです。「画像の水平軸方向では最大で205個のピクセルがある」がより厳密で誤解の無い表現です。
元の質問において「縦方向,横方向それぞれの最大の長さを求めたい」と表しつつも、図示した絵をみると赤い線が少し傾いています。おそらく、質問者様の意味する「横方向」は「最大フェレ径の傾きをもつ方向」で、「縦方向」は「横方向に垂直な方向」だと思います。
本回答における「横方向」は「画像の水平軸方向」です。赤い線と白い線の角度が僅かしか違わないので分かり難いですが、赤い線の「最大フェレ径」と白い線の「フェレ径(水平)」は異なります。
大輝 隅岡
大輝 隅岡 2022년 10월 21일
わざわざ図を用意してくださりありがとごうございます。 図のおかげで、自分が勘違いしていた点がよくわかりました。 ありがとうございました。

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Atsushi Ueno
Atsushi Ueno 2022년 10월 18일
Image Processing Toolboxがあればbwferet関数で「最大(最小)フェレ径」を測定する事が出来ます。
I = imread('image.png');
BW = imbinarize(rgb2gray(I),'adaptive'); % Image Processing Toolboxによる二値化
frts = bwferet(BW,'all') % 最大(最小)フェレ径を求める
frts = 1×6 table
MaxDiameter MaxAngle MaxCoordinates MinDiameter MinAngle MinCoordinates ___________ ________ ______________ ___________ ________ ______________ 207.18 -171.67 {2×2 double} 97 -90 {2×2 double}
imshow(I); hold on % 表示してみる
line(frts.MaxCoordinates{:}(:,1),frts.MaxCoordinates{:}(:,2));
line(frts.MinCoordinates{:}(:,1),frts.MinCoordinates{:}(:,2));
  댓글 수: 1
大輝 隅岡
大輝 隅岡 2022년 10월 20일
丁寧に回答してくださりありがとうございます.とても参考になりました.
このプログラムを元に頑張ってみます.ありがとうございました.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Convert Image Type에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!