matlab对图像进行缩放不适用imresize
如果不使用imresize函数,可以使用以下方法对图像进行缩放:
- 使用
imread函数读取图像文件并将其存储在一个变量中。 - 使用
size函数获取图像的原始尺寸。 - 使用
input函数获取用户输入的缩放比例。 - 使用
round函数将输入的缩放比例四舍五入为最接近的整数。 - 使用
zeros函数创建一个新的矩阵,用于存储缩放后的图像。 - 使用两个嵌套的循环遍历新矩阵的每个像素,并根据缩放比例计算对应的原始图像像素位置。
- 使用
floor函数将计算得到的原始图像像素位置向下取整,并确保其在原始图像范围内。 - 将原始图像像素值赋值给新矩阵对应的像素位置。
- 使用
imshow函数显示缩放后的图像。
以下是一个示例代码,用于将图像按照用户输入的缩放比例进行缩放:
% 读取图像并获取原始尺寸
image = imread('image.jpg');
originalSize = size(image);
% 获取用户输入的缩放比例
scaleFactor = input('请输入缩放比例:');
% 四舍五入为最接近的整数
scaleFactor = round(scaleFactor);
% 计算缩放后的尺寸
scaledSize = originalSize * scaleFactor;
% 创建新的矩阵用于存储缩放后的图像
scaledImage = zeros(scaledSize(1), scaledSize(2), size(image, 3));
% 遍历新矩阵的每个像素并赋值
for i = 1:scaledSize(1)
for j = 1:scaledSize(2)
% 计算原始图像像素位置
originalPixel = floor([i, j] / scaleFactor);
% 确保原始图像像素位置在范围内
originalPixel(1) = max(1, min(originalPixel(1), originalSize(1)));
originalPixel(2) = max(1, min(originalPixel(2), originalSize(2)));
% 赋值原始图像像素值给新矩阵对应位置
scaledImage(i, j, :) = image(originalPixel(1), originalPixel(2), :);
end
end
% 显示缩放后的图像
imshow(uint8(scaledImage));
请注意,这只是一种简单的缩放图像的方法,可能会导致图像质量下降。如果需要更高质量的缩放,请使用imresize函数
原文地址: https://www.cveoy.top/t/topic/h8fD 著作权归作者所有。请勿转载和采集!