在不使用内置 imresize() 函数的情况下在 matlab 中调整图像大小

Resizing image in matlab without using built in imresize() function

我在 matlab 中编写自己的 script/function 而不使用内置命令,"imresize" 但是我得到 3 个输出图像而不是单个图像。我也在这里分享我的代码。请有人指出我的错误。


    %zoomin out an imagge

originalImage = imread('imggerm1.jpg');
[origImRows, origImColumns] = size(originalImage);

newImage = zeros(origImRows/2, origImColumns/2);
newImRow = 1; newImColumn = 1;

for row = 1:2:origImRows
    for column = 1:2:origImColumns
        newImage(newImRow, newImColumn)=originalImage(row, column);
        newImColumn = newImColumn+1;
    end
    newImRow = newImRow+1;
    newImColumn = 1;
end

figure; imshow(originalImage);
figure; imshow(newImage/255);

这是因为您最初读取的是彩色图像,其中每个像素由 3 个数字编码。试着输入 size(originalImage),你会看到这个数组是 3 维的(最后一维的大小是 3)。

在您的代码中添加以下行:

[origImRows, origImColumns] = size(originalImage);

产生了您意想不到的结果:您的 origImColumns 似乎大了 3 倍。

您的代码很容易修复。下面我稍微更改了 3 行:#4、#6 和#11:

    %zoomin out an imagge

originalImage = imread('1.jpg');
[origImRows, origImColumns,~] = size(originalImage);

newImage = zeros(origImRows/2, origImColumns/2,3);
newImRow = 1; newImColumn = 1;

for row = 1:2:origImRows
    for column = 1:2:origImColumns
        newImage(newImRow, newImColumn,:)=originalImage(row, column,:);
        newImColumn = newImColumn+1;
    end
    newImRow = newImRow+1;
    newImColumn = 1;
end

figure; imshow(originalImage);
figure; imshow(newImage/255);