MATLAB-真彩色图像RGB直方图绘制

对直方图概念不了解或对直方图均衡化感兴趣的朋友可以看看我之前写的文章:真彩色图像直方图均衡化

这里着重讲如何绘制一个美丽的RGB直方图~

MATLAB没有直接绘制RGB图像直方图的函数(可以分别对R、G、B分量使用imhist函数绘制,不过效果一般)


目录

思路

实现

源代码


思路

  1. 分别算出RGB各灰度级的像素个数
  2. 绘制直方图
  3. 美化

是不是很简单呢?那接下来我们一步一步实现上述内容

实现

从MATLAB图库里随意挑选一张真彩色图像

获取其大小,然后计算RGB各灰度级像素个数。哪一灰度级出现一次其相应像素点数+1

 绘制横坐标为灰度级,纵坐标为像素个数的直方图

emmm,直方图是做出来了,不过颜色不太对的上,接下来要做的是改变颜色,使直方图与RGB颜色一一对应

 这里的颜色可以随意选择自己喜欢的,看着顺眼就可以

颜色对齐了,不过对比度不足,加上边界轮廓美化一下

绘制完成!是不是非常的简单?绘制的直方图也很好看^_^,我们再随意看些其他图片

一只美洲鸵,从直方图能看出它的各个基色的灰度分布比较均衡(这里的B基色使用的是水蓝色噢)

一张海景图

星空,整体灰度值偏低

海边少女,整体灰度值偏高

夹带点私货嘿嘿嘿,发张它均衡化后的图片,背景的海和部分云灰度值本就比较低,均衡化后直接变成黑色的了hhh,云朵女孩脸上的光的分布也有点奇怪。不过嘛,整幅图的对比度可是大大增加了,有兴趣的朋友请戳:真彩色图像直方图均衡化

还有对亮度I均衡化后的美丽的星空

源代码

clear;close all;clc;
 
%RGB直方图绘制,兼容灰度图像
%图像应为uint8无符号整型,否则可能会无法绘制直方图,出错的话请看一下矩阵的数据类型
%很多朋友会使用im2double函数,使用了的话请用uint8(255*f)恢复成uint8无符号整形
 
f=imread('llama.jpg');
subplot(211);
imshow(f);title('原图');
fcal=double(f); %后面计算像素点时会有灰度值为255的像素点,将uint8型变为double型,防止溢出
[m,n,h]=size(f);
Y=zeros(h,256);
 
%分别统计原图像RGB基色各灰度级的像素个数
for k=1:h
    for i=1:m
        for j=1:n
            Y(k,fcal(i,j,k)+1)=Y(k,fcal(i,j,k)+1)+1; %哪一灰度级出现一次其相应像素点数+1。灰度级范围是0-255,但矩阵是1-256,列数要额外+1
        end
    end
end
 
X=0:1:255; %建立x坐标轴
subplot(212);
histogram=bar(X,Y); %绘制直方图
axis([0 255,-inf inf]) %x坐标轴限制在0-255
xlabel('灰度级');ylabel('像素个数');
 
if h==3 %改变直方图颜色并加轮廓
    title('RGB直方图');
    %分别改变颜色
    set(histogram(1),'FaceColor',[1 0.1882 0.1882]); 
    set(histogram(2),'FaceColor',[0.5 1 0]);
    set(histogram(3),'FaceColor',[0 0.5 1]);
    
    %增加边界轮廓
    hold on
    plot(X,Y(1,:),'Color',[1 0.1882 0.1882]);  %加上边界轮廓
    plot(X,Y(2,:),'Color',[0.5 1 0]);
    plot(X,Y(3,:),'Color',[0 0.5 1]);
    hold off
else
    title('灰度直方图');
end

如果对你有用的话,能否点个赞呢?^_^

  • 58
    点赞
  • 135
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值