图象直方图的线性变换——直方图拉伸

来源:互联网 发布:平面画图软件 编辑:程序博客网 时间:2024/06/09 19:53

图象直方图的线性变换——直方图拉伸

灰度直方图是将数字图像的所有像素,按照灰度值的大小,统计其所出现的频度。直方图拉伸的公式是s= (r_2-r_1)/(s_2-s_1 ) (r-r_1 )+s_1

matlab代码:

clear ;origin=imread('histogram2017.jpg');[m,n,o]=size(origin);                             %测量图像尺寸参数  GP=zeros(1,256);                            %预创建存放灰度出现概率的向量for i=1:3    for k=0:255     GP(k+1)=GP(k+1)+length(find(origin(:,:,i)==k));      %计算每级灰度出现的概率     endendfigure(1);subplot(2,2,1);bar(0:255,GP,'b')           %绘制直方图 axis([0 255 min(GP) max(GP)]); title('原图像直方图');xlabel('灰度值');ylabel('出现概率')subplot(2,2,2);imshow(origin);title('原图')originR=origin(:,:,1);%分解到RGB三基色空间originG=origin(:,:,2);originB=origin(:,:,3);MAX_R=double(max(max(originR)));%获得图像像素中灰度的最大值afterR=double(originR)/MAX_R*256;%对灰度进行拉伸MAX_G=double(max(max(originG)));%获得图像像素中灰度的最大值afterG=double(originG)/MAX_G*256;%对灰度进行拉伸MAX_B=double(max(max(originB)));%获得图像像素中灰度的最大值afterB=double(originB)/MAX_B*256;%对灰度进行拉伸after(:,:,1)=uint8(afterR);%合成为彩色图像after(:,:,2)=uint8(afterG);after(:,:,3)=uint8(afterB);GP2=zeros(1,256);                            %预创建存放灰度出现概率的向量for i=1:3    for k=0:255     GP2(k+1)=GP2(k+1)+length(find(after(:,:,i)==k));      %计算每级灰度出现的概率     endendfigure(1);subplot(2,2,3);bar(0:255,GP2,'b')           %绘制直方图 axis([0 255 min(GP2) max(GP2)]); title('处理后图像直方图');xlabel('灰度值');ylabel('出现概率')subplot(2,2,4);imshow(after);title('处理后')

处理结果
这里写图片描述