SURF特徴量を使ったマッチングで処理領域を限定することはできますか?
5 ビュー (過去 30 日間)
古いコメントを表示
画像処理で処理をする領域を限定したいのですが、処理をする領域が斜めになっている場合、ROIを使ってのx,y,w,hの指定では対応できませんでした。 特徴量を抽出したり、画を位置合わせするときなどで処理をする領域を限定する方法はありますか?
0 件のコメント
採用された回答
Kei Otsuka
2018 年 2 月 2 日
ROI外の領域の輝度値をクリップしてしまう方法はどうでしょうか。 例えば、
img = imread('coins.png');
figure, imshow(img)
このようなコインの図があったとして、面積が大きいコインに着目したい場合、
%2値化&穴埋め
bw = imfill(imbinarize(img), 'holes');
%面積2700pix以上の領域抽出
bw = bwpropfilt(bw, 'Area', [2700, 3000]);
%元画像をコピー
img2 = img;
%ROI外の輝度値を255にクリップ
img2(~bw) = 255;
figure, imshow(img2)
とすると以下のような画像が得られ、
この画像に対して抽出した特徴点を元画像にオーバーレイ表示すると以下のようになります。
%特徴点検出
Points = detectSURFFeatures(img2);
%上位20ポイントをプロット
figure, imshow(img); hold on;
plot(Points.selectStrongest(20));
クリップした領域も含めての特徴点になりますので、ROIに限定した特徴点とは意味合いが異なりますが アプリケーションによってはこのようなアプローチも使えると思います。
その他の回答 (1 件)
Takuji Fukumoto
2018 年 2 月 2 日
編集済み: Takuji Fukumoto
2018 年 2 月 2 日
もし任意の形状のROIを作成したいということであれば、impolyで長方形以外のROIを指定することができます。
もし、違う角度でとられたリファレンスの画像があり、そこと合う領域をROIとしたい場合には、 レジストレーション(位置合わせ)を使うことになります。
レジストレーションの手法は 明るさを用いた方法 https://www.mathworks.com/help/releases/R2017b/images/examples/registering-multimodal-mri-images.html
特徴点を使った方法
様々ありますので、ためしながら良い方法を選択いただくと良いかと思います。
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!