2013-03-20 4 views
5

私はダブルマトリックスに変換した画像を持っています。私はそれを水平にシフトしたいが、これをどうやって行うのか分からない。私はそのポジションを操作しようとしますが、私は色を操作しているだけです。MATLABでイメージを水平にシフトする方法は?

代わりにピクセル位置を参照し、シフトを実行するための定数を追加する方法はありますか?

答えて

2

は、あなたのイメージが行列Aであり、あなたが左にx列をラップしたいと言う:

A = [A(x+1:end,:) A(1:x,:)]; 
5

あなたは循環シフト、im = circshift(im, [vShift hShift])を実行するためにcircshiftを使用することができます。画像処理ツールボックスを使用して

+0

これだけ作品シフトが整数値であるとき。 –

+0

非整数バージョンは(私が推測する)2つの最も近いシフトを取ってそれらを補間することによって実装することもできますか? – jeff

8

、あなたはspatial transformationを適用することができます。

img = imread('pout.tif'); 
T = maketform('affine', [1 0 0; 0 1 0; 50 100 1]); %# represents translation 
img2 = imtransform(img, T, ... 
    'XData',[1 size(img,2)], 'YData',[1 size(img,1)]); 
subplot(121), imshow(img), axis on 
subplot(122), imshow(img2), axis on 

affine translation

+1

アムロ、何ですか[1 0 0; 0 1 0; 50 100 1]は?それは変換行列ですか?ピクセル単位で、または他の測定単位でイメージを移動していますか? – user2192778

+0

@ user2192778:これは、翻訳コンポーネントのみを持つアフィン変換行列を表します。http://www.mathworks.com/help/images/performing-general-2-d-spatial-transformations.html#f12-31782これはデフォルトの空間座標系で表されます。詳しい説明はこのページを参照してください。http://www.mathworks.com/help/images/image-coordinate-systems.html – Amro

関連する問題