matlab 画图串联_如何在Matlab的同一张图中串联3个直方图

I have calculated 3 histograms for an rgb image using imhist function in Matlab, one for each channel. I want to plot these histograms on the same graph, where for instance, the histogram for the first (red) channel stretches on the x axis from 0 to 255, the histogram for the second channel stretches from 256 to 511, and finally the histogram for the third channel stretches from 512 to 767.

How can I do this?

解决方案

Assuming uint8 precision, each call to imhist will give you a 256 x 1 vector, and so you can concatenate these together into a single 768 x 1 vector. After, call bar with the histc flag. Assuming you have your image stored in im, do this:

red = imhist(im(:,:,1));

green = imhist(im(:,:,2));

blue = imhist(im(:,:,3));

h = [red; green; blue];

bar(h, 'histc');

As an example, using the onion.png image that's part of the image processing toolbox:

im = imread('onion.png');

This is what the image looks like:

Using the above code to plot the concatenated histogram produces this graph:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值