按像素进行2D图像转换

时间:2017-09-19 14:56:36

标签: image matlab image-processing translation

我试图逐个像素地对图像进行平移,欧几里德,相似性,仿射和投影变换。我的程序的输入是图像名称和转换矩阵。

这是我的代码

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

现在我正在测试翻译矩阵。

matrix = 

     1     0     7
     0     1     2
     0     0     1

当我通过函数传递图像和矩阵时,我的结果只是一条黑线press here to see pic

我做错了什么?

1 个答案:

答案 0 :(得分:0)

使用matlab调试器,我注意到你正在转向int8,它太小也代表所有索引。因此,您应该使用int32 / int64uint32 / uint64代替,即

answer = uint8(answer);

应该是

answer = uint32(answer);

在提出问题之前,请尝试使用Matlab调试器:为什么它不起作用?