数字图像捡漏

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函数制定数值边界为分界条件
histc以 a=[1 2 3 4 5 6 7 8 9 0 ],  edges=1:2:7 为例。

[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

5、matlab中直方图的绘制方法

6、图像处理(一)全等级直方图灰度拉伸

Matlab得到二值图像中最大连通区域

猜你喜欢

转载自blog.csdn.net/julialove102123/article/details/80545672
今日推荐