读入任意一副灰度图片(见附件 Std_imgs.zip),请用Matlab程序实现以下功能: 1. 读取图片,图片反色(即用: 255 - 像素灰度值),存储为 jpg 图片 ; 2. 对该图片截取为 256x256 的图像块,进行1/2 ,1/4,1/8,1/16,1/32 缩放的图像空间分辨率 显示 ( 如图所示 ), 并存储为 jpg 图片 ; 3. 实现 该 256x256 的图像 块的灰度分辨率图 (1-8 bits) ,并 存储为 jpg 图片 ;
时间: 2024-03-18 14:45:35 浏览: 103
imgs.zip
以下是实现题目要求的Matlab代码:
```matlab
% 1. 读取图片,图片反色
img = imread('lena512gray.jpg');
img_invert = 255 - img;
imwrite(img_invert, 'lena_invert.jpg');
% 2. 对该图片截取为 256x256 的图像块,进行1/2 ,1/4,1/8,1/16,1/32 缩放的图像空间分辨率显示,并存储为 jpg 图片
img_block = img(1:256, 1:256);
scale_factors = [2, 4, 8, 16, 32];
for i = 1:length(scale_factors)
scale_img = imresize(img_block, 1/scale_factors(i));
imwrite(scale_img, sprintf('lena_scale_%dx.jpg', scale_factors(i)));
end
% 3. 实现该256x256的图像块的灰度分辨率图(1-8 bits),并存储为jpg图片
gray_levels = 2.^(0:7);
for i = 1:length(gray_levels)
gray_img = uint8(floor(double(img_block) / 256 * gray_levels(i)) * 256 / gray_levels(i));
imwrite(gray_img, sprintf('lena_gray_%dbits.jpg', gray_levels(i)));
end
```
这里假设题目中提到的图片为'lena512gray.jpg',代码将其反色后存储为'lena_invert.jpg',然后对其进行截取并缩放,分别存储为'lena_scale_2x.jpg'、'lena_scale_4x.jpg'等等;最后实现了灰度分辨率图,并存储为'lena_gray_1bits.jpg'、'lena_gray_2bits.jpg'等等。
阅读全文