Matlab 彩色图片直方图均衡化处理 line()函数实现

好了,不说这么多了,直奔主题,本次分别做了两次实现,分别是:彩色图片转灰度图直方图均衡化处理以及彩色图片的直方图均衡化处理,大家可以按需观看。

一、程序源码
(1)彩色图片转灰度图直方图均衡化处理:

%读取图片
I=imread('test.jpg');
%将图片转化成灰度图片
I=rgb2gray(I);
%显示原图像
figure(4),imshow(I);
%获得灰度图的长和宽
[M,N]=size(I);

%做直方图均衡化处理,设置初始参数
average=0;

%做直方图均衡化处理,创建映射区域
A=zeros(1,256);

%获得每一个点的灰度值,并判断其值等于多少
for k=1:256
    count=0; 
   for i=1:M   
     for j=1:N
        value=I(i,j);
        %统计灰度值
        if value==k
            count=count+1;
        end
     end  
   end
   %画出图像灰度直方图
   figure(1),line([k,k],[0,count]);
   %直方图均衡化处理
   count=count/(M*N*1.0);
   average=average+count;
   %获得灰度映射
   A(k)=average;
   %画出均衡化后的直方图
   figure(2),line([k,k],[0,average]);
end


%累计分布取整,+0.5等于四舍五入,也就是取整
A=uint8(255.*A+0.5);
%进行直方图反映射,得到处理后的原图像
for i=1:M
    for j=1:N
        I(i,j)=A(I(i,j));
    end
end

%展示处理后图像
figure(3),imshow(I);

实验结果截图:
这里写图片描述

(2)彩色图片的直方图均衡化处理
彩色图片的直方图均衡化处理与灰度图的处理方法一样,不同的地方在于要分别把R、G、B层做一次处理,也就是处理三次,而灰度图像就只需要处理灰度值就行,这就是两者唯一的不同。因此,原理懂了,就不难实现了

%读取图片
I=imread('test.jpg');
figure(7),imshow(I);
%获取图片的长、宽和层数(其实等于三,R、G、B三层)
[M,N,G]=size(I);
result=zeros(M,N,3);
%获得每一层每一个点的RGB值,并判断其值等于多少
for g=1:3
    A=zeros(1,256);
    %每处理完一层,参数要重新初始化为0
    average=0;
    for k=1:256
        count=0;
        for i=1:M
            for j=1:N
                value=I(i,j,g);
                if value==k
                    count=count+1;
                end
            end
        end
        figure(g),line([k,k],[0,count]);
        count=count/(M*N*1.0);
        average=average+count;
        A(k)=average;
        figure(g+3),line([k,k],[0,average]);
    end
    A=uint8(255.*A+0.5);
    for i=1:M
        for j=1:N
            I(i,j,g)=A(I(i,j,g)+0.5);
        end
    end  
end
%展示处理效果
figure(8),imshow(I);

实验结果截图:
这里写图片描述

以上,就是如何运用line()函数来画直方图以及如何通过对直方图进行处理来处理图片的运用啦。个人觉得不足的地方在于for循环用的有些多,程序看起来有点臃肿,希望有大神能够指点一二。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值