2017-09-19 19 views
-1

ピクセル単位で画像に平行移動、真核生物、類似性、アフィン、射影変換を実行しようとしています。私のプログラムの入力はイメージ名と変換行列です。ピクセル単位の2D画像変換

これは私のコード

function imagetrans(name, m) 
Image = imread(name); 
[rows, cols] = size(Image); 

newImage(1:rows,1:cols) = 1; 

for row = 1 : rows 
    for col = 1 : cols 
     if(Image(row,col) == 0) 
      point = [row;col;1]; 
      answer = m * point; 
      answer = int8(answer); 
      newx = answer(1,1); 
      newy = answer(2,1); 

      newImage(newx,newy) = 0; 
     end 
    end 
end 

imshow(newImage); 

end 

ですこれは、画像press here for image

は今、私はちょうど平行移動行列をテストしています。私は機能を介して画像や行列を渡すとき、私の結果は、私が間違って何をやっているpress here to see pic

ほんの少し黒い線である

matrix = 

    1  0  7 
    0  1  2 
    0  0  1 

答えて

0

matlabデバッガを使用して、あなたはint8にキャストしていることに気付きました。これは小さすぎてもすべてのインデックスを表していません。だから、あなたは

answer = uint32(answer); 

である必要があり、すなわち

answer = uint8(answer); 

、代わりにint32/int64またはuint32/uint64を使用する必要があります質問をする前に、Matlabのデバッガを使用してみてください:なぜそれが動作しませんか?

+0

ありがとうございました!私はこれを試してみる..私はMatlabには新しく、私はデバッガがあったことを知らなかった。その更新のためにありがとう – Debbie

+0

これはまた働いた!ありがとう – Debbie

関連する問題