一、Matlab
1、彩色图像分析
调入并显示彩色图像Lena图片(lena_color_256.tif),拆分这幅图像,并分别显示其RGB分量;
% (1) 彩色图像的分析
% a)调入并显示彩色图像Lena图片(lena_color_256.tif),拆分这幅图像,并分别显示其RGB分量;
% b)根据各个分量图像的情况讨论该彩色图像的亮度、色调等性质。
I = imread("../../std_imgs/lena_color_256.tif"); %读取Lena彩色图片
R = I(:, :, 1);
G = I(:, :, 2);
B = I(:, :, 3);
figure;
subplot(221), imshow(I), title('彩色图像')
subplot(222), imshow(R), title('红色分量')
subplot(223), imshow(G), title('绿色分量')
subplot(224), imshow(B), title('蓝色分量')
现象:
红色分量较强,说明图像整体偏红色调;
绿色分量较弱,说明图像整体偏暗;
蓝色分量也比较强,说明图像中有较多的蓝色元素。
综合来看,该彩色图像的亮度偏低,色调偏红、偏蓝,整体呈现较暗的色调。
2、彩色图像的直方图均衡
对这幅Lena图像的RGB分量的直方图分别进行直方图均衡处理(调用之前实验自己编写的直方图函数),将处理完毕的各个分量合成彩色图像并显示其结果;
% (2) 彩色图像的直方图均衡
% a)对这幅Lena图像的RGB分量的直方图分别进行直方图均衡处理(调用之前实验自己编写的直方图函数),
% 将处理完毕的各个分量合成彩色图像并显示其结果;观察现象,结合课本知识,写出自己的体会。
% b)观察处理前后图像的彩色、亮度、色调等性质的变化。
img = imread("../../std_imgs/lena_color_256.tif"); %读取Lena彩色图片
hsi_image = rgb2hsi(img); % 将RGB图像转换为HSI图像
% 在HSI空间中,对亮度(I)进行直方图均衡,保持彩色(HS)不变
i_eq = hisro(uint8(255 * hsi_image(:, :, 3)));
hsi_eq = cat(3, hsi_image(:, :, 1), hsi_image(:, :, 2), im2double(i_eq));
% 将处理后的HSI图像转换回RGB图像
rgb_eq = hsi2rgb(hsi_eq);
% 显示处理前后的图像
subplot(1,2,1); imshow(img); title('处理前');
subplot(1,2,2); imshow(rgb_eq); title('处理后');
现象:图像的亮度对比度得到改善
处理前的Lena图像的亮度较暗,色调略带黄色,整体色彩略显暗淡。
处理后的Lena图像的亮度对比度增强,细节得到了更好的显示,整体颜色更加鲜艳,色调也有所变化。可以看出,直方图均衡处理能够改善图像的亮度对比度,使得图像更加清晰明亮。
3、 伪彩色处理
请找一副X光灰度图片,对其进行伪彩色处理,并显示其伪彩色图像;请写清楚自己处理的步骤和方法。
% (3) 伪彩色处理 (选做)
% a)请找一副X光灰度图片,对其进行伪彩色处理,并显示其伪彩色图像;请写清楚自己处理的步骤和方法。
% 导入灰度X光图像
img_gray = rgb2gray(imread('xray.png'));
% 对灰度图像进行伪彩色处理
img_color = ind2rgb(img_gray, jet(256));
% jet(256)表示使用jet色图表,共256种颜色
% 显示处理前后的图像
subplot(1,2,1); imshow(img_gray); title('处理前');
subplot(1,2,2); imshow(img_color); title('处理后');
简单方法:
使用ind2rgb函数将灰度图像转换为伪彩色图像,将原灰度图像img_gray作为索引图像,并使用jet色图表作为对应的颜色图 map
二、C++
待续