我试图逐个像素地对图像进行平移,欧几里德,相似性,仿射和投影变换。我的程序的输入是图像名称和转换矩阵。
这是我的代码
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
现在我正在测试翻译矩阵。
matrix =
1 0 7
0 1 2
0 0 1
我做错了什么?
答案 0 :(得分:0)
使用matlab调试器,我注意到你正在转向int8
,它太小也代表所有索引。因此,您应该使用int32
/ int64
或uint32
/ uint64
代替,即
answer = uint8(answer);
应该是
answer = uint32(answer);
在提出问题之前,请尝试使用Matlab调试器:为什么它不起作用?