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

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

サインインしてコメントする。

採用された回答

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

サインインしてコメントする。

その他の回答 (0 件)

製品

Community Treasure Hunt

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

Start Hunting!