读入 lena 图像, 利用函数 im2jpeg(jpeg2im) 进行图像压缩与重建, 在一个窗口中显示局部放大图像, 并给出MATLAB代码
时间: 2024-02-19 17:58:46 浏览: 269
好的,以下是MATLAB代码实现:
```matlab
% 读入 Lena 图像
lena = imread('lena.jpg');
figure;
imshow(lena);
title('原图');
% 图像压缩与重建
jpeg = im2jpeg(lena, 0.1); % 压缩率为 0.1
lena_re = jpeg2im(jpeg);
figure;
imshow(lena_re);
title('压缩与重建后的图像');
% 局部放大图像
x = 150; % 放大区域左上角的 x 坐标
y = 150; % 放大区域左上角的 y 坐标
w = 100; % 放大区域的宽度
h = 100; % 放大区域的高度
lena_zoom = imcrop(lena_re, [x, y, w, h]); % 截取放大区域
lena_zoom = imresize(lena_zoom, 10); % 放大 10 倍
figure;
imshow(lena_zoom);
title('局部放大图像');
```
在上述代码中,我们首先读入 Lena 图像并显示原图。然后,我们使用 `im2jpeg` 函数对图像进行压缩,压缩率为 0.1,再使用 `jpeg2im` 函数进行重建,得到压缩与重建后的图像。接着,我们使用 `imcrop` 函数截取出图像中指定区域,并使用 `imresize` 函数将其放大 10 倍,得到局部放大图像。最终,我们将压缩与重建后的图像、局部放大图像分别显示在不同的窗口中。
相关问题
用matlab读入一张灰度图像,对其进行 JPEG 编码与解码(使用im2jpeg2k、jpeg2k2im函数)),对比解压缩图像与原图像的区别,并 计算 PSNR 和 SSIM。
以下是使用 Matlab 对灰度图像进行 JPEG 编码与解码的示例代码:
```matlab
% 读入灰度图像
img = imread('lena_gray.tif');
% 对图像进行 JPEG 编码
[compressed, info] = im2jpeg2k(img, 'CompressionRatio', 10);
% 对 JPEG 编码后的数据进行解码
decoded = jpeg2k2im(compressed);
% 显示原图像、解码后的图像和压缩比
figure;
subplot(1, 3, 1);
imshow(img);
title('Original Image');
subplot(1, 3, 2);
imshow(decoded);
title('Decoded Image');
subplot(1, 3, 3);
imshow(compressed);
title(sprintf('Compressed Image (CR=%.2f)', info.CompressionRatio));
% 计算 PSNR 和 SSIM
psnr_val = psnr(decoded, img);
ssim_val = ssim(decoded, img);
fprintf('PSNR: %.2f dB\n', psnr_val);
fprintf('SSIM: %.4f\n', ssim_val);
```
在上面的代码中,我们首先读入一张灰度图像 `lena_gray.tif`,然后使用 `im2jpeg2k` 函数对其进行 JPEG 编码,其中指定了压缩比为 10。接着,我们使用 `jpeg2k2im` 函数对 JPEG 编码后的数据进行解码,得到解压缩后的图像。最后,我们显示原图像、解码后的图像和压缩比,并计算了解压缩后图像与原图像的 PSNR 和 SSIM 值。
需要注意的是,`im2jpeg2k` 函数和 `jpeg2k2im` 函数需要使用 MATLAB Image Processing Toolbox 中的 JPEG 2000 功能,因此需要先安装该工具箱。
读入彩色 image_Lena512rgb 图像, 利用函数 rgb2ycbcr 进行颜色空间变换; 分别在一个窗口中显示三个通道图像, 并给出MATLAB图像
处理代码如下:
```matlab
% 读入图像
img = imread('image_Lena512rgb.bmp');
% 颜色空间变换
img_ycc = rgb2ycbcr(img);
% 分离三个通道图像
img_y = img_ycc(:, :, 1);
img_cb = img_ycc(:, :, 2);
img_cr = img_ycc(:, :, 3);
% 显示三个通道图像
figure;
subplot(1, 3, 1);
imshow(img_y);
title('Y');
subplot(1, 3, 2);
imshow(img_cb);
title('Cb');
subplot(1, 3, 3);
imshow(img_cr);
title('Cr');
```
运行结果如下:
![image](https://img-blog.csdnimg.cn/20210726194908783.png)
阅读全文