目的:学习图像增强技术的原理和编程实现。
要求:能够编程实现空间域图像增强和频率域图像增强。
直方图匹配(直方图规定化)方法,编写程序把一幅彩色图像(待处理图像)的直方图匹配为另一幅彩色图像(标准图像)的直方图,并显示匹配结果。两幅彩色图像可自行选择。以下是彩色图像直方图匹配的示例,最左边的是待处理图像,中间的是标准图像,右边的是匹配结果图像。
1) 算法或流程图
- 读取待处理的图像,并把其分为三个通道。
- 读取标准的图像,也将其分为三个通道。
- 对于标准图像的三个通道分别进行求直方图操作。
- 将待处理图像的三个通道分别与标准图像的三个通道的直方图进行直方图规定化。
- 将直方图匹配后的三个通道再次合成为三维的图片。
- 将合成后的三维图片转换数据类型为uint8类型.
- 显示原图像、匹配图像和匹配后的三个通道的图像。
- 显示原图像、匹配图像和匹配后图像的直方图。
- 显示原图像、匹配图像和匹配后的图像。
程序代码
I=imread('huang.jpg');%读取图像
r1=I(:,:,1);%获取原图像R通道
g1=I(:,:,2);%获取原图像G通道
b1=I(:,:,3);%获取原图像B通道
I2=imread('haoyu.jpg');%读取标准图像
r2=I2(:,:,1);%获取标准图像R通道
g2=I2(:,:,2);%获取标准图像G通道
b2=I2(:,:,3);%获取标准图像B通道
r3=imhist(r2);
g3=imhist(g2);
b3=imhist(b2);%获取标准图像直方图
r4=histeq(r1,r3);
g4=histeq(g1,g3);
b4=histeq(b1,b3);%直方图匹配
rgb=cat(3,r4,g4,b4);%将直方图匹配后的三个通道再次合成为三维的图片。
rgb=uint8(rgb);%转换图片的数据类型。
figure;%显示原图像、匹配图像和匹配后的三个通道的图像
subplot(3,3,1),imshow(r1);title('r原图像');
subplot(3,3,2),imshow(r2);title('r匹配图像');
subplot(3,3,3),imshow(r4);title('r匹配之后图像');
subplot(3,3,4),imshow(g1);title('g原图像');
subplot(3,3,5),imshow(g2);title('g匹配图像');
subplot(3,3,6),imshow(g4);title('g匹配之后图像');
subplot(3,3,7),imshow(b1);title('b原图像');
subplot(3,3,8),imshow(b2);title('b匹配图像');
subplot(3,3,9),imshow(b4);title('b匹配之后图像');
figure;%显示原图像、匹配图像和匹配后图像的直方图
subplot(3,3,1),imhist(r1,64);title('原图像r直方图');
subplot(3,3,2),imhist(r2,64);title('匹配图像r直方图');
subplot(3,3,3),imhist(uint8(r4),64);title('匹配之后图像r直方图');
subplot(3,3,4),imhist(g1,64);title('原图像g直方图');
subplot(3,3,5),imhist(g2,64);title('匹配图像g直方图');
subplot(3,3,6),imhist(uint8(g4),64);title('匹配之后图像g直方图');
subplot(3,3,7),imhist(b1,64);title('原图像b直方图');
subplot(3,3,8),imhist(b2,64);title('匹配图像b直方图');
subplot(3,3,9),imhist(uint8(b4),64);title('匹配之后图像b直方图');
figure;%显示原图像、匹配图像和匹配后的图像