- 締切済み
MATLABのplot結果を配列にいれたくて困っています。
こんにちは。 画像の特徴点xy座標50個をplotし、それぞれの点を線で結んだ結果を画像の配列として扱いたいのですが、現在は a : 50x2(512x512の画像の特徴点の座標) imshow(Img) > hold on > line or plot(a(:,1),a(:,2)) だと、結果を512x512配列として扱えません。 点と点を直線で結んでいくような関数などありましたらよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- sgwjn
- ベストアンサー率70% (47/67)
#1です。 あ、なるほど。 選択範囲内の画像を切り出すためのフィルタを作りたいわけですね。 それでしたら、 範囲のプロットは、 plot(a(:,1), a(:,2), 'ko', a(:,1), a(:,2), 'k-', [a(1,1) a(end,1)], [a(1,2) a(end,2)], 'k-'); で、フィルタは、 IX = イメージのX軸サイズ IY = イメージのY軸サイズ x = a(:, 1); y = a(:, 2); filter = inpolygon(IX, IY, x, y); で得られるんじゃないでしょうか。 ■ inpolygon http://dl.cybernet.co.jp/matlab/support/manual/r13/toolbox/matlab/ref/?/matlab/support/manual/r13/toolbox/matlab/ref/inpolygon.shtml
- sgwjn
- ベストアンサー率70% (47/67)
何を質問したいのか良く分かりませんが、 > 点と点を直線で結んでいく でしたら、 plot(a(:,1), a(:,2), 'ko', a(:,1), a(:,2), 'k-'); で良いんじゃないでしょうか?
補足
回答して頂いてありがとうございます。 質問内容がわかりにくく申し訳ないです。 例えば5x5の画像の特徴点であるA点(1.1) B点(5,5)を与えた場合、 (1,1)(2,2)(3,3)(4,4)(5,5)の要素が1、他の要素は0となるような 5x5行列を求めているということです。 plotの結果では5x5の画像として扱えません。 目的としては画像の特徴点を抽出し、その座標を結んでその直線の内部の情報だけを表示させたいと思っています。 引き続きよろしくお願い致します。
お礼
どうもありがとうございます! このような関数を探しておりました。 私の拙い説明に付き合って頂きありがとうございました。