私はダブルマトリックスに変換した画像を持っています。私はそれを水平にシフトしたいが、これをどうやって行うのか分からない。私はそのポジションを操作しようとしますが、私は色を操作しているだけです。MATLABでイメージを水平にシフトする方法は?
代わりにピクセル位置を参照し、シフトを実行するための定数を追加する方法はありますか?
私はダブルマトリックスに変換した画像を持っています。私はそれを水平にシフトしたいが、これをどうやって行うのか分からない。私はそのポジションを操作しようとしますが、私は色を操作しているだけです。MATLABでイメージを水平にシフトする方法は?
代わりにピクセル位置を参照し、シフトを実行するための定数を追加する方法はありますか?
は、あなたのイメージが行列Aであり、あなたが左にx列をラップしたいと言う:
A = [A(x+1:end,:) A(1:x,:)];
あなたは循環シフト、im = circshift(im, [vShift hShift])
を実行するためにcircshift
を使用することができます。画像処理ツールボックスを使用して
、あなたは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
アムロ、何ですか[1 0 0; 0 1 0; 50 100 1]は?それは変換行列ですか?ピクセル単位で、または他の測定単位でイメージを移動していますか? – user2192778
@ 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
これだけ作品シフトが整数値であるとき。 –
非整数バージョンは(私が推測する)2つの最も近いシフトを取ってそれらを補間することによって実装することもできますか? – jeff