0

我尝试编写一个 matlab 函数来对我的图片(灰度值矩阵)进行上采样。它实际上并没有什么特别复杂的,但我仍然设法做错了。我的目标是将其大小调整为 2 倍,并且一开始我只想查看放大后的图片。我想用零填充空白,因此每第二行/列都用零填充。完成后,我想知道为什么我只看到一片灰色的像素海洋。我本来希望能够识别我照片中的至少一些东西。

这是我的功能,有人看到我的错误吗?

function [upsampled] = do_my_upsampling(image)
    [X Y] = size(image);
    upsampled = zeros(X*2, Y*2);
    upsampled(1:2:end, 1:2:end) = image(1:1:end, 1:1:end);
end
4

2 回答 2

4

你的代码对我来说很好(使用image = rand(100);. 但是,它不是一种非常 Matlab 实现结果的方式。

如果你只是想分散你的像素,你为什么不直接索引呢?

[nRows,nCols] = size(image);
upsampled = zeros(2*nRows,2*nCols);
upsampled(1:2:end,1:2:end) = image;
于 2012-04-22T22:06:25.840 回答
-1

尝试imshow(image,[])

或者,由于您的图像是双精度图像,请先将其转换为 uint8 然后显示 ie

imshow(uint8(image))
于 2013-10-07T04:16:52.920 回答