在看一篇论文时,发现论文中的图像直方图是连续的,而且还有填充颜色,于是在网上搜索画法原理,没有找到,自己试了下竟然画出了这个效果。
下面是论文中直方图效果:
clear
close all
I=imread('lena.bmp');%读取灰度图像
histogram=imhist(I);%得到图像累计直方图数据
x=0:1:255;
figure;
plot(x,histogram);%画连续直方图
fill([x,fliplr(x)],[zeros(size(histogram')),fliplr(histogram')],'r');%画填充颜色
title('图像连续直方图');
figure;%显示原图像和原图像直方图
subplot(1,2,1),imshow(I);title('原图像');
subplot(1,2,2),imhist(I,64);title('原图像直方图');
下面是效果图:
上面的代码中plot函数的用法很简单,网上有很多参考资料,fill()函数的用法可以从它的参数中得出,然后fliplr()函数的用法如下:
用法:fliplr(X)
功能:matlab中的fliplr函数实现矩阵的左右翻转。 fliplr(X)使矩阵X沿垂直轴左右翻转。
>> a=[1 2 3 4;5 6 7 8; 9 10 11 12;13 14 15 16] a = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 >> fliplr(a) ans = 4 3 2 1 8 7 6 5 12 11 10 9 16 15 14 13