【问题标题】:Resizing image in matlab without using built in imresize() function在不使用内置 imresize() 函数的情况下在 matlab 中调整图像大小
【发布时间】:2018-04-12 11:10:14
【问题描述】:

我在 matlab 中编写自己的脚本/函数,但没有使用内置命令“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);

【问题讨论】:

    标签: matlab image-resizing


    【解决方案1】:

    这是因为您最初读取的是彩色图像,其中每个像素由 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);
    

    【讨论】:

    • 感谢 Mikhail Genkin,按照您的指导,我只是将第一行从“imread('imggerm1.jpg')”修改为“rgb2gray(imread('imggerm1.jpg'))”
    猜你喜欢
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多