regionprop​s関数における「MA​Pはm行3列の配列で​なければなりません」​というエラーについて

現在ヒトのシルエット画像から重心を求めるということを行っているのですが、概要に書いたようなエラーが出てしまいます。
こちらのエラーが画像が処理できる構造ではないため起きているエラーだということは分かったのですが具体的に何が問題となっているのかが判明していません。どなたかご教授いただけないでしょうか。

3 comentarios

Shunichi Kusano
Shunichi Kusano el 1 de Nov. de 2021
エラーが出たときのコマンドと、可能であれば入力した画像も添付していただけると、有効なアドバイスが得られるかもしれません。私が見た範囲で原因がわからなかったので。
悠太 上田
悠太 上田 el 7 de Nov. de 2021
コメント頂きありがとうございます。
出てしまったエラーは以下のものです。
エラー: rgb2hsv>parseInputs (95)
MAP は M x 3 の配列でなければなりません。
エラー: rgb2hsv (36)
[r, g, b, isColorMap, isEmptyInput, isThreeChannel] = parseInputs(varargin{:});
エラー: region1 (7)
I = rgb2hsv(RGB);
そして重心を評価したい画像はこちらです。
悠太 上田
悠太 上田 el 7 de Nov. de 2021
コード自体は先輩が製作したものを使用させていただいており先輩が使用したコードで先輩が評価した画像で試してみても私のMATLABではこのエラーが出てしまうので原因がわからない状態にあります。

Iniciar sesión para comentar.

 Respuesta aceptada

Shunichi Kusano
Shunichi Kusano el 8 de Nov. de 2021

1 voto

情報ありがとうございます。
エラーを見るとまずこれはrgb2hsvという関数で起きていまして、regionprops関数は無関係です。rgb2hsvにはカラー画像を入力しなければいけませんが、おそらく2値画像を入れてしまっていてエラーとなっているのではないかと思います。region1という関数の中でどういう処理が走っているか一行ずつ見ていくのが解決の近道かと思います。

6 comentarios

悠太 上田
悠太 上田 el 8 de Nov. de 2021
回答の方頂きありがとうございます。
2値画像を入れていることがエラーの原因ということなのですが2値画像では確実にエラーが出てしまうということでしょうか?
試してみました。やはり下記の通りエラーになるようです。
im = imread('peppers.png'); % 適当な画像を読み込む
bw = im(:,:,1) > 128; % 二値化
bw_hsv = rgb2hsv(bw); % rgb2hsv
Error using rgb2hsv>parseInputs (line 95)
MAP must be a Mx3 array.

Error in rgb2hsv (line 36)
[r, g, b, isColorMap, isEmptyInput, isThreeChannel] = parseInputs(varargin{:});
悠太 上田
悠太 上田 el 8 de Nov. de 2021
コード自体は大学の先輩が製作されたものを使用していまして先輩が使用した際は二値画像で成功しているのでもう少しどのような処理がされているのか確認してみようと思います。
回答いただきありがとうございます。
悠太 上田
悠太 上田 el 8 de Nov. de 2021
先ほど2値画像では無い普通の画像で実行してみたところ重心と判断した箇所に赤いマーカーを表示するところまで成功することが出来ました。しかし2値画像ではないため重心の位置が正確ではありませんでした。やはり2値画像で実行したいと思うのですが改善点や他の方法はありますでしょうか。
Shunichi Kusano
Shunichi Kusano el 8 de Nov. de 2021
重心位置はregionprops関数で得ていると思いますがこの関数は二値化画像を受け付けます。問題となっているrgb2hsvは前処理、つまり元画像を二値化する過程で使っているのではないでしょうか。
今回お手元にある2値画像をそのまま使って重心計測したいということですので、regionprops関数をそのままお使いになるのがいいと思います。
使い方はregion1の中を見れば可視化の部分も含めてわかるのではないかと思います。詳細は次のドキュメントをご覧ください。重心を計測したい場合の、プロパティ名はCentroidとなります。
悠太 上田
悠太 上田 el 8 de Nov. de 2021
参考になりました。
ありがとうございます。

Iniciar sesión para comentar.

Más respuestas (0)

Productos

Preguntada:

el 1 de Nov. de 2021

Comentada:

el 8 de Nov. de 2021

Community Treasure Hunt

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

Start Hunting!