• 締切済み

【MATLAB】図の重ね合わせと拡大・縮小・回転

MATLABで、大きさと角度の違う2枚の画像を重ね合わせて比較をしたいのですが、 やり方が飲み込めません。 MATLABの「イメージのレジストレーション」を参考にしようとしたのですが、ちんぷんかんぷんで・・・ 画像を(手動で)2枚読み込んで、1枚を半透明にして重ねる までは出来たのですが、大きさや傾きを合わせられません。 >> uiopen('C:\Documents and Settings\xxx\aaa\C.jpg',1) %%画像C読み込み >> uiopen('C:\Documents and Settings\xxx\aaa\B.jpg',1) %%画像B読み込み >> imshow(C); %%画像C表示 >> hold on >> h = imshow(B); %%画像B表示 >> set(h,'AlphaData',0.5) 今のところこんな感じです; 1枚をベース画像の大きさに合わせて、傾きをそろえてから重ねあわせたいのです。 分かる方、ご回答お願いいたします。

みんなの回答

  • Kules
  • ベストアンサー率47% (292/619)
回答No.1

「イメージのレジストレーション」って結構複雑なことしてるみたいですね…Image Processing Toolboxを購入して使うというのは選択肢に入れるわけにはいかないんですかね?というかimshowが使えているということはToolbox持ってるのでは? 私自身もImage Processing Toolboxを使ったことはないですし、このToolboxで行っている歪み補正などはどうやってるのか全くわかりません。 ただ、「図形の縮尺・拡大」と「図形の回転」は何とかなりそうですね。 「図形を何倍にするか」と「図形を何度傾けるか」については答えが出ているものとします。 imshowだとXData,YDataをそれぞれ2要素で与えられるので、片方に与える要素を定数倍してやればよいですね。 (例えば片方をimshow(C,'Xdata',[0,1]);として、もう片方をimshow(B,'XData',[0,2]);とすれば、BだけX軸方向に2倍に引き延ばされた画像になりますね) で、回転に関してはimshowだとちと厳しそうです。というのも、XData,YDataには2要素しか与えられないということは、画像の各辺がX軸、Y軸に平行な長方形であるという前提が入っていることになるので、「傾いた長方形」ってのは表現できなさそうです。 (http://www.mathworks.co.jp/help/ja_JP/toolbox/images/f12-23518.htmlを見た感じの推測ですが、imtransformで出てきた傾いた長方形の画像は、長方形になるように周りに白、または無色の画像を足していると思われます。パラメータFillValues→255がそれではないかと) imtransformを使えばもちろんできるんでしょうが、それを使わないのであれば別の手立てを考える必要があります。 現実的な方法としては、 1.画像を傾けて、長方形にならない部分は頑張って白で埋めて、imshow 2.傾いた長方形だけ作ってpcolor あたりでしょうか。 1にせよ2にせよ画像を傾けなければ話になりませんが、これはもともとのX座標、Y座標を指定の角度だけ回転させるということなので、回転行列による回転がそのまま使えます。 画像に対応してX座標、Y座標を回転させた後のX座標、Y座標をX1,Y1とするならば、 そのまま使うならpcolorに突っ込めばそれらしい絵が描けます。ただし、画像の全てのピクセルは傾いたままです。 ピクセルが傾いているのはよくない、ということであれば、別の大きな(X1,Y1を全て含む範囲で)真っ白いキャンバスを用意して、そこに1点ずつ色を乗せていく感じでしょうか。 あまりスマートな方法ではありませんが… ToolBoxを使わずに、となると正直このくらいしか私には思いつかないです。 参考になれば幸いです。

関連するQ&A

  • MATLABでのエッジ強度画像の出力と保存

    MATLABで画像処理を行ない,対象とする画像(添付のcell.jpg)の勾配強度画像を得たいと思っております.ただし,その保存がうまくいきません. プログラムは,下記のコードを利用しました. im = imread('C:/work/cell.jpg'); im = rgb2gray(im); %メディアンフィルタで平滑化 J = medfilt2(im); figure(1) imshow(J) %勾配強度画像を求める hy = fspecial('sobel'); hx = hy'; Iy = imfilter(double(J), hy, 'replicate'); Ix = imfilter(double(J), hx, 'replicate'); gradmag = sqrt(Ix.^2 + Iy.^2); %figure, imshow(gradmag,[]), title('Gradient magnitude (gradmag)') imshow(gradmag,[]) 上記のプログラムで正しくエッジ強度画像は出力されるのですが,問題はそれを保存するときです. 「imwrite(gradmag, 'C:/work/cell_grad.jpg','jpg')」 のように保存すると,添付ファイルのようになってしまいます. どのようにしたら解決できますでしょうか. どなたかお分かりになる方がいらっしゃいましたら,ご教示お願い致します.

  • ローカル画像の印刷

    IEブラウザにおいて自分のパソコン内の画像を印刷する際に「%20」表示(スペースの場所)がパス内に入るのですが、これをなくす方法はありますか? 例:C:\Documents and Settings\サンプル.jpgを印刷する場合に C:\Documents%20and%20Settings\サンプル.jpgと印刷されるのを C:\Documents and Settings\サンプル.jpgにしたい 以上 宜しく御願い致します。

  • フォルダ名の変更方法を教えてください。VBA

    セルH14に年度が入力してあります。 → (例)  2009 セルK14に月が入力してあります。 → (例)  11 このセルH14の値を yyyy に,セルK14の値を mm に入れたフォルダ名に変更したいのですが可能でしょうか、 御教示御願申し上げます。 Sub フォルダ名の変更() Name "C:\Documents and Settings\aaa\My Documents\販売\0000年00月決算" _ As "C:\Documents and Settings\aaa\My Documents\販売\yyyy年mm月決算"   下記のように ↓ ' As "C:\Documents and Settings\aaa\My Documents\販売\2009年11月決算" End Sub

  • CLAMWINについて

    CLAMWINウイルス対策フリーソフトを使って見ました。 ところが、ファイルを開けず、数ヵ所検索できなかったということです。こうゆうのはじめてなんですが、心配ないでしょうか。 その例をあげますと WARNING: Can't open file C:\Documents and Settings\TARO\Local Settings\Temporary Internet Files\Content.IE5\W18HIBC5 C:\Documents and Settings\All Users\Application Data\Microsoft\Dr Watson\user.dmp, C:\Documents and Settings\All Users\Application Data\muvee Technologies\030625\dscrp\2006-12-14_21.JPG.458130ec.mpd, C:\Documents and Settings\All Users\Application Data\muvee Technologies\030625\dscrp\DSC_0006.JPG.457984b4.mpd, \C:\Documents and Settings\All Users\Application Data\muvee Technologies\030625\preview\2006-12-14_21.JPG.458130ec.jpg, C:\Documents and Settings\All Users\Application Data\muvee Technologies\030625\preview\DSC_0006.JPG.457984b4.jpg, C:\hiberfil.sys, C:\pagefile.sys, 以上なんですが、大丈夫なんでしょうか。

  • 画像を載せたい

    ネットサイト上にマイピクチャの画像を載せようとすると C:\Documents and Settings\********\My Documents\My Pictures\090827_231819.jpg といったものまで一緒に表示されてしまいます どうしたら出さないようにできるのでしょうか?

  • [1-3].jpgを 1jpg 2pg ・・・のようにしたい。

    こんにちは。 http://www.aaa.com/xxx[1-3].jpg というアドレスを http://www.aaa.com/xxx1.jpg http://www.aaa.com/xxx2.jpg http://www.aaa.com/xxx3.jpg のようにするスクリプトを教えてください。 splitを使用して分解して、[1-3]を取り出して、joinでくっつけて、 document.write()で  http://www.aaa.com/xxx1.jpg http://www.aaa.com/xxx2.jpg http://www.aaa.com/xxx3.jpg と表示しようと考えたのですが、具体的なスクリプトがわからなくなりました。 上記のようなことをしてくれるフリーのソフトがあるようですが、スクリプトの学習をしようと思いますのでよろしくお願いします。

  • VBA フォルダ内にファイルが存在するか確認したい

    OS: WindowsXP Office: 2003 ExcelVBAについて教えてください。 VBAで特定のフォルダー内でファイルが存在するかの確認をしたいのです。 例えば、以下のようなフォルダーに営業日がファイル名に付いた複数のファイルがあります。  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120201.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120202.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120203.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120206.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120207.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120208.xls 処理は20120201(2012年2月1日)から順番に行うのですが、その際、 報告書20120203.xlsはファイルが存在しているので変数1を返す。 報告書20120204.xlsは休日のためファイルが存在しないので変数0を返す。 次の処理で変数1の場合は処理をし、変数0の場合は処理を飛ばすと言った内容のマクロを考えています。 要はフォルダー内にファイルが存在するかしないかの部分のマクロ記述を知りたいのです。 どなたか、よろしくお願いします。

  • 複数ユーザでの個人ドキュメントの共有

    普通、Win2000等で複数のユーザを管理する場合、そのユーザ分「Documents and Settings」にフォルダが作成されますよね。 そこで、AさんがノートPCを持っていて、複数の拠点でそれぞれのドメイン(仮に、xxxとyyy)に同一ユーザ名(仮に、AAA)で属していたとすると「Documents and Settings」には    AAA.xxx (xxxドメインのAAAさん)    AAA.yyy (yyyドメインのAAAさん) という2つのフォルダが出来ますよね。 でも、それだとマイドキュメントやメールがそれぞれ別々の管理になってしまっていろいろと煩雑になってしまうのですが、何か解決案をご存知の方はいないでしょうか?

  • フォルダの表示形式を指定したフォルダ内全てに設定する方法を教えて下さい

    フォルダの表示形式を指定したフォルダ内全てに設定する方法を教えて下さい。 表示形式をすべてのフォルダに適用する設定は、フォルダオプションの表示タブにある「フォルダの表示」から設定しますが、指定したフォルダ内だけに設定できる方法はありますでしょうか。 例 C:\Documents and Settings\USER\My Documents\My Pictures\2009.1\TEST12.jpg C:\Documents and Settings\USER\My Documents\My Pictures\2010.1\TEST01.jpg C:\Documents and Settings\USER\My Documents\My Pictures\2010.2\TEST02.jpg C:\Documents and Settings\USER\My Documents\My Pictures\2010.3\TEST03.jpg C:\Documents and Settings\USER\My Documents\My Pictures\2010.4\TEST04.jpg My Pictures内にある年月名のフォルダ全てに表示形式を設定したいのです。 以上よろしくお願いします。

  • ドキュメントの保管場所が(FP2000)

    FP2000でこれまで作業をしてきたのですが、昨日作業しようと画像を呼び出そうとした時点でおかしなことになっている点に気付きました。 例えば背景を呼び出すとき、ab.jpgという画像を背景に使用するとすれば、これまで画像のソースでは単にab.jpgとだけ出ていただけなのに突然 file:///C:/Documents and Settings/ユーザー名/My Documents/My Webs/My Webs/ab.jpg といったような表示が出るようになりました。 おかしいと思い、file:///C:/Documents and Settings/ユーザー名/My Documents/My Webs/My Webs/の部分を削ったら今度は画面の表示がされなくなりました。 また、ハイパーリンクを張ってみてもやはりすべてのページにfile:///C:/Documents and Settings/ユーザー名/My Documents/My Webs/My Webs/が付いてきます。 不審に思いデスクトップからマイドキュメントに入り、mywebを見てみる限り特に何か変更がなされていたりする様子はありませんでした。 おそらくfile:///C:/ってのがなにか影響を及ぼしている気がするのですが、どのように解決したらいいのかわかりません。解決法をご存じの方がおられましたら助言よろしくお願いいたします。

専門家に質問してみよう