在不使用内置 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);
我在 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);