1、梯度图
2、hist和imhist
hist一般用于显示double 图像的直方图,横轴表示划分的份数,竖轴表示频率;
imhist可以显示uint8型的图像,仍然是横轴表示划分的份数,竖轴表示频率;
他们的不同点在于uint8将横轴的0到255分为256份,统计的是图像上对应像素值的个数;
double则是将横轴的0到255分为60000多份,统计的仍然是各个像素值的频数。
你看到的imhist中有的频数达到几千是很正常的。比如说有一幅uint8的图像,它是586*440的,那么有的像素值的频数是有可能在几千上下的;但是你将这幅uint8转化为double后,由于横轴分的份数多了许多,但是该图像的像素值个数不变,因此普遍的像素值频数降低了很多。
n = list(Y)
将向量Y中的元素分到10个等间隔的范围内,并返回每个范围内元素的个数作为一行向量。
如果Y是一个m x p的矩阵,hist将Y的每一列作为一个向量,并返回一个10 x p的矩阵n。n的每一列的值对应Y的该列。
n = hist(Y, x)
x是一个向量,返回x的长度个以x为中心的,Y的分布情况。
例如:如果x是一个5元素的向量,返回Y在以x为中心的,x长度个范围内数据直方分布。
注:如果更需要制定数值边界而不是中心,可以使用histc。
n = hist(Y, nbins)
nbins是一个范围,使用nbins间隔数。
[n,xout] = hist(...)
返回n和xout,包含有数目频率和间隔位置。可以使用bar(xout, n)来绘制直方图。
hist(...)
使用上述方法绘制没有输出的直方图。
hist(axes_handle)
使用exes_handle轴绘制,代替目前的轴(gca)。
histc函数制定数值边界为分界条件
[n,bin]=histc(x,edges)
返回n=[2 2 2 1],
bin=[ 1 1 2 2 3 3 4 0 0 0]。
edges=1:2:7即总共有三个数值分界,分别为1<=x<3, 3<=x<5, 5<=x<7,
n(1)=2表示a中落在第一个范围的数总共有两个,1和2;
n(2)=2表示a中落在第二个范围的数总共有两个,3和4;
n(3)=2表示a中落在第三个范围的数总共有两个,5和6;
n(4)=1表示a中的值等于edges最后一个值7的个数为1。
bin的值为a中的值分别在edges的哪个范围中(1就是在edges的第一个空中),若不在edges范围中,则返回0。
计算分布函数:
h=hist(x,a);
p0=cumsum(h)/(sum(h));
计算区间概率:
h=hist(x,a);
p0=h/(sum(h));
3、灰度拉伸
cl;
img=imread('TestDatabase/1.bmp');
imshow(img);
img=double(img);
figure,imshow(mat2gray(img))
ma=double(max(max(img)));
mi=double(min(min(img)));a
img=(255/(ma-mi))*img-(255*mi)/(ma-mi);
img=uint8(img);
figure,imshow(img)
4、Matlab得到二值图像中最大连通区域
https://blog.csdn.net/szlcw1/article/details/44227571