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

3 views (last 30 days)
悠太 上田
悠太 上田 on 1 Nov 2021
Commented: 悠太 上田 on 8 Nov 2021
現在ヒトのシルエット画像から重心を求めるということを行っているのですが、概要に書いたようなエラーが出てしまいます。
こちらのエラーが画像が処理できる構造ではないため起きているエラーだということは分かったのですが具体的に何が問題となっているのかが判明していません。どなたかご教授いただけないでしょうか。
  3 Comments
悠太 上田
悠太 上田 on 7 Nov 2021
コメント頂きありがとうございます。
出てしまったエラーは以下のものです。
エラー: rgb2hsv>parseInputs (95)
MAP は M x 3 の配列でなければなりません。
エラー: rgb2hsv (36)
[r, g, b, isColorMap, isEmptyInput, isThreeChannel] = parseInputs(varargin{:});
エラー: region1 (7)
I = rgb2hsv(RGB);
そして重心を評価したい画像はこちらです。
悠太 上田
悠太 上田 on 7 Nov 2021
コード自体は先輩が製作したものを使用させていただいており先輩が使用したコードで先輩が評価した画像で試してみても私のMATLABではこのエラーが出てしまうので原因がわからない状態にあります。

Sign in to comment.

Accepted Answer

Shunichi Kusano
Shunichi Kusano on 8 Nov 2021
情報ありがとうございます。
エラーを見るとまずこれはrgb2hsvという関数で起きていまして、regionprops関数は無関係です。rgb2hsvにはカラー画像を入力しなければいけませんが、おそらく2値画像を入れてしまっていてエラーとなっているのではないかと思います。region1という関数の中でどういう処理が走っているか一行ずつ見ていくのが解決の近道かと思います。
  6 Comments
Shunichi Kusano
Shunichi Kusano on 8 Nov 2021
重心位置はregionprops関数で得ていると思いますがこの関数は二値化画像を受け付けます。問題となっているrgb2hsvは前処理、つまり元画像を二値化する過程で使っているのではないでしょうか。
今回お手元にある2値画像をそのまま使って重心計測したいということですので、regionprops関数をそのままお使いになるのがいいと思います。
使い方はregion1の中を見れば可視化の部分も含めてわかるのではないかと思います。詳細は次のドキュメントをご覧ください。重心を計測したい場合の、プロパティ名はCentroidとなります。
悠太 上田
悠太 上田 on 8 Nov 2021
参考になりました。
ありがとうございます。

Sign in to comment.

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!