直方图均衡化—matlab实现

首先给大家推荐一下我老师大神的人工智能教学网站。教学不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵黄段子!点这里可以跳转到网站

步骤:

统计原图像素每个像素的个数

统计原图像<每个灰度级的像素的累积个数

家里灰度级得映射规则

将原图每个像素点的灰度映射到新图

代码:

clear allI=imread('1.jpg');                 %读入JPG彩色图像文件imshow(I)                                  %显示出来 title('输入的彩色JPG图像')I_gray = rgb2gray(I); %灰度化后的数据存入数组imwrite(I_gray,'1_gray.bmp'); %保存灰度图像figure,imshow(I_gray);title('灰度图') [height,width]=size(I_gray);  %测量图像尺寸参数p=zeros(1,256);                            %预创建存放灰度出现概率的向量for i=1:height    for j=1:width     p(I_gray(i,j) + 1) = p(I_gray(i,j) + 1)  + 1;    endends=zeros(1,256);s(1)=p(1);for i=2:256     s(i)=p(i) + s(i-1); %统计图像中<每个灰度级像素的累积个数,s(i):0,1,```,i-1end for i=1:256    s(i) = s(i)*256/(width*height); %求灰度映射函数    if s(i) > 256        s(i) = 256;    endend %图像均衡化I_equal = I;for i=1:height    for j=1:width     I_equal(i,j) = s( I(i,j) + 1);    endendfigure,imshow(I_equal)                           %显示均衡化后的图像 title('均衡化后图像')

点这里可以跳转到人工智能网站

发表评论