matlab把图像缩小四倍不用函数
时间: 2023-08-23 10:37:04 浏览: 168
使用 MATLAB 将图像缩小为原来的四分之一,可以通过将原图像的像素点进行抽样来实现。具体步骤如下:
1. 读取图像并获取其尺寸信息。
2. 计算缩小后的尺寸,即将原来的行和列分别缩小为原来的一半。
3. 使用双层循环遍历每个缩小后的像素点,计算对应的原图像中的像素点的位置,然后取出对应的像素点的颜色值,并将结果赋值给新图像中的像素点。
以下是示例代码:
```matlab
% 读取图像
img = imread('example.jpg');
% 获取图像尺寸
[row, col, channel] = size(img);
% 计算缩小后的尺寸
new_row = floor(row/2);
new_col = floor(col/2);
% 创建空白图像
new_img = uint8(zeros(new_row, new_col, channel));
% 缩小操作
for i = 1:new_row
for j = 1:new_col
% 计算对应的原图像中的四个像素点位置
row_idx = (i-1)*2+1 : i*2;
col_idx = (j-1)*2+1 : j*2;
% 取出对应的像素点的颜色值,并计算平均值
R = double(img(row_idx, col_idx, 1));
G = double(img(row_idx, col_idx, 2));
B = double(img(row_idx, col_idx, 3));
new_R = uint8(mean(mean(R)));
new_G = uint8(mean(mean(G)));
new_B = uint8(mean(mean(B)));
% 将结果赋值给新图像中的像素点
new_img(i, j, :) = [new_R, new_G, new_B];
end
end
% 显示原图和缩小后的图
figure(1);
subplot(1, 2, 1);
imshow(img);
title('Original Image');
subplot(1, 2, 2);
imshow(new_img);
title('Shrinked Image');
```
在上述代码中,我们使用 `floor` 函数计算了缩小后的图像尺寸,然后使用双层循环遍历了所有缩小后的像素点。对于每个像素点,我们计算了对应的四个像素点的位置,然后使用 `mean` 函数计算了这四个像素点颜色值的平均值,并将结果赋值给新图像中的像素点。最后显示原图和缩小后的图像。
需要注意的是,在计算颜色值平均值时,需要将像素点颜色值转换为 double 类型,计算完平均值后再将结果转换为 uint8 类型。
阅读全文