MATLAB Answers

画像内の色を検索する方法

5 views (last 30 days)
akasa
akasa on 26 Jun 2021
Commented: akasa on 28 Jun 2021
ある画像の中に赤い部分があるのですが、その範囲の座標を知ることができる関数を教えていただきたいです。

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 26 Jun 2021
Edited: Atsushi Ueno on 26 Jun 2021
MATLABのfind関数で赤い範囲の座標を知る事が出来ます。
find関数の出力は「赤い画素の配列」なので、max関数やmin関数でその範囲を知る事が出来ます
find関数の出力は線形インデックスなので、これを添え字(X,Y座標)に変換する為ind2sub関数を併用します。
下記コードは具体的な例です
pic = imread('sample.png'); % sample.png(添付ファイル)を読み込む
whos pic % 画像は、100×100×3のuint8配列として読み込まれた
Name Size Bytes Class Attributes pic 100x100x3 30000 uint8
red = 200; % ここでは「"赤い"とはRGBのR成分がuint8(0~255)の200以上」と定義する
[x, y] = ind2sub(size(pic), find(pic(:,:,1) >= red)); % 赤いピクセルを探しx,y座標を得る
size(x) % 赤い点が100ピクセル見つかった。下記はx座標が100個ある事を意味する。y座標も同様
ans = 1×2
100 1
pic(min(x),min(y),:) = 255; % 試しに(最小のx座標, 最小のy座標)に白い点を打ってみる
pic(max(x),max(y),:) = 555; % 試しに(最大のx座標, 最大のy座標)に白い点を打ってみる
imshow(pic);
  5 Comments
akasa
akasa on 28 Jun 2021
お二方ご回答ありがとうございます。
Herniaさんの例を試してみたいと思います。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!