質問: 画像内の色を検索する方法 ある画像の中に赤い部分があるのですが、その範囲の座標を知ることができる関数を教えていただきたいです。
回答: 非ゼロ要素のインデックスと値を見つける - matlab find - mathworks 日本 matlabのfind関数で赤い範囲の座標を知る事が出来ます。 配列の最大要素 - matlab max - mathworks 日本 配列の最小要素 - matlab min - mathworks 日本 find関数の出力は「赤い画素の配列」なので、max関数やmin関数でその範囲を知る事が出来ます 線形インデックスから添字への変換 - matlab ind2sub - mathworks 日本 find関数の出力は線形インデックスなので、これを添え字(x,y座標)に変換する為ind2sub関数を併用します。 下記コードは具体的な例です pic = imread('sample.png'); % sample.png(添付ファイル)を読み込む whos pic % 画像は、100×100×3の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座標も同様 pic(min(x),min(y),:) = 255; % 試しに(最小のx座標, 最小のy座標)に白い点を打ってみる pic(max(x),max(y),:) = 555; % 試しに(最大のx座標, 最大のy座標)に白い点を打ってみる imshow(pic);