图像二值化 判断分析法
(完整word版)二值图像分析

第三章 二值图像分析一幅数字图像是一个二维阵列,阵列元素值称为灰度值或强度值.实际上,图像在量化成数字图像前是一个连续强度函数的集合,场景信息就包含在这些强度值中.图像强度通常被量化成256个不同灰度级,对某些应用来说,也常有32、64、128或512个灰度级的情况,在医疗领域里甚至使用高达4096(12bits)个灰度级.很明显,灰度级越高,图像质量越好,但所需的内存也越大.在机器视觉研究的早期,由于内存和计算能力非常有限,而且十分昂贵,因此视觉研究人员把精力主要集中在研究输入图像仅包含两个灰度值的二值视觉系统上.人们注意到,人类视觉在理解仅由两个灰度级组成的线条、轮廓影像或其它图像时没有任何困难,而且应用场合很多,这一点对研究二值视觉系统的研究人员是一个极大的鼓舞.随着计算机计算能力的不断增强和计算成本的不断下降,人们普遍开始研究基于灰度图像、彩色图像和深度图像的视觉系统.尽管如此,二值视觉系统还是十分有用的,其原因如下:⑴ 计算二值图像特性的算法非常简单,容易理解和实现,并且计算速度很快.⑵ 二值视觉所需的内存小,对计算设备要求低.工作在256个灰度级的视觉系统所需内存是工作在相同大小二值图像视觉系统所需内存的八倍.如若利用游程长度编码等技术(见3.4节)还可使所需内存进一步减少.由于二值图像中的许多运算是逻辑运算而不是算术运算,所以所需的处理时间很短.(3)许多二值视觉系统技术也可以用于灰度图像视觉系统上.在灰度或彩色图像中,表示一个目标或物体的一种简易方法就是使用物体模板(mask),物体模板就是一幅二值图像,其中1表示目标上的点,0表示其它点.在物体从背景中分离出来后,为了进行决策,还需要求取物体的几何和拓扑特性,这些特性可以从它的二值图像计算出来.因此,尽管我们是在二值图像上讨论这些方法,但它们的应用并不限于二值图像.一般来说,当物体轮廓足以用来识别物体且周围环境可以适当地控制时,二值视觉系统是非常有用的.当使用特殊的照明技术和背景并且场景中只有少数物体时,物体可以很容易地从背景中分离出来,并可得到较好的轮廓,比如,许多工业场合都属于这种情况.二值视觉系统的输入一般是灰度图像,通常使用阈值法首先将图像变成二值图像,以便把物体从背景中分离出来,其中的阈值取决于照明条件和物体的反射特性.二值图像可用来计算特定任务中物体的几何和拓扑特性,在许多应用中,这种特性对识别物体来说是足够的.二值视觉系统已经在光学字符识别、染色体分析和工业零件的识别中得到了广泛应用.在下面的讨论中,假定二值图像大小为n m ⨯,其中物体像素值为1,背景像素值为0.3.1 阈值视觉系统中的一个重要问题是从图像中识别代表物体的区域(或子图像),这种对人来说是件非常容易的事,对计算机来说却是令人吃惊的困难.为了将物体区域同图像其它区域分离出来,需要首先对图像进行分割.把图像划分成区域的过程称为分割,即把图像],[j i F 划分成区域k p p p ,,,21⋅⋅⋅,使得每一个区域对应一个候选的物体.下面给出分割的严格定义.定义 分割是把像素聚合成区域的过程,使得:● ==i k i P 1 整幅图像 (}{i P 是一个完备分割 ). ● j i P P j i ≠∅=, ,(}{i P 是一个完备分割).● 每个区域i P 满足一个谓词,即区域内的所有点有某种共同的性质.● 不同区域的图像,不满足这一谓词.正如上面所表明的,分割满足一个谓词,这一谓词可能是简单的,如分割灰度图像时用的均匀灰度分布、相同纹理等谓词,但在大多数应用场合,谓词十分复杂.在图像理解过程中,分割是一个非常重要的步骤. 二值图像可以通过适当地分割灰度图像得到.如果物体的灰度值落在某一区间内,并且背景的灰度值在这一区间之外,则可以通过阈值运算得到物体的二值图像,即把区间内的点置成1,区间外的点置成0.对于二值视觉,分割和阈值化是同义的.阈值化可以通过软件来实现,也可以通过硬件直接完成.通过阈值运算是否可以有效地进行图像分割,取决于物体和背景之间是否有足够的对比度.设一幅灰度图像],[j i F 中物体的灰度分布在区间],[21T T 内,经过阈值运算后的图像为二值图像],[j i F T ,即:⎩⎨⎧≤≤=其它如果0],[ 1],[21T j i F T j i F T (3.1) 如果物体灰度值分布在几个不相邻区间内时,阈值化方案可表示为: ⎩⎨⎧∈=其它如果0],[ 1],[Z j i F j i F T (3.2) 其中Z 是组成物体各部分灰度值的集合.图3.1是对一幅灰度图像使用不同阈值得到的二值图像输出结果. 阈值算法与应用领域密切相关.事实上,某一阈值运算常常是为某一应用专门设计的,在其它应用领域可能无法工作.阈值选择常常是基于在某一应用领域获取的先验知识,因此在某些场合下,前几轮运算通常采用交互式方式来分析图像,以便确定合适的阈值.但是,在机器视觉系统中,由于视觉系统的自主性能(autonomy )要求,必须进行自动阈值选择.现在已经研究出许多利用图像灰度分布和有关的物体知识来自动选择适当阈值的技术.其中的一些方法将在3.2节介绍.图3.1 一幅灰度图像和使用不同阈值得到的二值图像结果.上左:原始灰度图像,上右:阈值T=100;左下:T=128.右下:T1=100|T2=128. 3.2 几何特性通过阈值化方法从图像中检测出物体后,下一步就要对物体进行识别和定位.在大多数工业应用中,摄像机的位置和环境是已知的,因此通过简单的几何知识就可以从物体的二维图像确定出物体的三维位置.在大多数应用中,物体的数量不是很多,如果物体的尺寸和形状完全不同,则可以利用尺度和形状特征来识别这些物体.实际上在许多工业应用中,经常使用区域的一些简单特征,如大小、位置和方向,来确定物体的位置并识别它们.3.2.1 尺寸和位置一幅二值图像区域的面积(或零阶矩)由下式给出:∑∑-=-==1010],[n i m j j i B A (3.3)在许多应用中,物体的位置起着十分重要的作用.工业应用中,物体通常出现在已知表面(如工作台面)上,而且摄像机相对台面的位置也是已知的.在这种情况下,图像中的物体位置决定了它的空间位置.确定物体位置的方法有许多,比如用物体的外接矩形、物体矩心(区域中心)等来表示物体的位置.区域中心是通过对图像进行“全局”运算得到的一个点,因此它对图像中的噪声相对来说是不敏感的.对于二值图像,物体的中心位置与物体的质心相同,因此可以使用下式求物体的中心位置:∑∑∑∑∑∑∑∑-=-=-=-=-=-=-=-=-==1010101010101010],[],[],[],[n i n i m j m j n i m j n i m j j i iB j i B y j i jB j i B x (3.4)其中x 和y 是区域相对于左上角图像的中心坐标.物体的位置为:Aj i iB y A j i jB x n i m j n i m j ∑∑∑∑-=-=-=-=-==10101010],[],[ (3.5)这些是一阶矩.注意,由于约定y 轴向上,因此方程3.4和3.5的第二个式子的等号右边加了负号.3.2.2 方向计算物体的方向比计算它的位置稍微复杂一点.某些形状(如圆)的方向不是唯一的,为了定义唯一的方向,一般假定物体是长形的,其长轴方向被定义为物体的方向.通常,二维平面上与最小惯量轴同方向的最小二阶矩轴被定为长轴.图像中物体的二阶矩轴是这样一条线,物体上的全部点到该线的距离平方和最小.给出一幅二值图像],[j i B ,计算物体点到直线的最小二乘方拟合,使所有物体点到直线的距离平方和最小:χ220101==-=-∑∑r B i j ij j m i n [,] (3.6)其中r ij 是物体点],[j i 到直线的距离.为了避免直线处于近似垂直时所出现的数值病态问题,人们一般把直线表示成极坐标形式:θθρsin cos y x += (3.7)如图3.2所示,θ是直线的法线与x 轴的夹角,ρ是直线到原点的距离.把点),(j i 坐标代入直线的极坐标方程得出距离r :22)sin cos (ρθθ-+=y x r (3.8)图3.2 直线的极坐标表示将方程3.8代入方程3.6并求极小化问题,可以确定参数ρ和θ:∑∑-=-=-+=101022],[)sin cos (n i m j ij ij j i B y x ρθθχ (3.9) 令2χ对ρ的导数等于零求解ρ得:)sin cos (θθρy x += (3.10) 它说明回归直线通过物体中心),(y x .用这一ρ值代入上面的2χ,则极小化问题变为:θθθθχ222sin cos sin cos c b a ++= (3.11)其中的参数:],[)(],[))((2],[)(10210101010102j i B y y c j i B y y x x b j i B x x a n i m j ij n i m j ij ij n i m j ij ∑∑∑∑∑∑-=-=-=-=-=-=-=--=-= (3.12)是二阶矩.表达式2χ可重写为:θθχ2sin 212cos )(21)(212b c a c a +-++=(3.13) 对2χ微分,并置微分结果为零,求解 值:ca b -=θ2tan (3.14) 因此,惯性轴的方向由下式给出: 2222)(2cos )(2sin c a b ca c ab b -+-±=-+±=θθ (3.15) 所以由2χ的最小值可以确定方向轴.注意,如果c a b ==,0,那么物体就不会只有唯一的方向轴.物体的伸长率E 是2χ的最大值与最小值之比:m inm ax χχ=E (3.16) 3.2.3 密集度和体态比区域的密集度(compact )可用下面的式子来度量:2pA C = (3.17) 其中,p 和A 分别为图形的周长和面积.根据这一衡量标准,圆是最密集的图形,其密集密度为最大值π4/1,其它一些图形的比值要小一些.让我们来看一下圆,当圆后仰时,形状成了一椭圆,面积减小了而周长却不象面积减小的那么快,因此密集度降低了.在后仰到极限角时,椭圆被压缩成了一条无限长直线,椭圆的周长为无穷大,故密集度变成了零.对于数字图像, 2p A 是指物体尺寸(像素点数量)除以边界长度的平方.这是一种很好的散布性或密集性度量方法.这一比值在许多应用中被用作为区域的一个特征.密集度的另一层意义是:在给定周长的条件下,密集度越高,围成的面积就越大.注意在等周长的情况下,正方形密集度大于长方形密集度.体态比定义为区域的最小外接矩形的长与宽之比,正方形和圆的体态比等于1,细长形物体的体态比大于1.图3.3所示的是几种形状的外接矩形.图3。
二值图像形态学算法

thank you!
AB A AB
3.幂等性 在对一个图像A用结构元素进行开运算
开闭运算的性质
后,若再用同一个结构元素进行又一次开 运算,所得结果不变,这种性质叫做幂等 性。同样,闭运算也有幂等性。 A ◦ B ◦ B=A ◦ B A • B • B=A • B
击中击不中变换
在图像分析中,同时探测图像的内部和外 部,而不仅仅是局限于探测图像的内部或 图像的外部,对于研究图像中物体与背景 之间的关系,往往会起到很好的效果。一 个物体的结构一般可以通过物体内部各种 成分之问的关系来确定。为了研究物体 (在这里指图像)的结构,可以逐步地利 用各种成分(如各种结构元素)对其进行 检验,指定哪些成分包括在图像内,哪些 包括在图像外,从而最终确定图像的结构。
开运算可以在分离粘连目标物的同时,基 本保持原目标物的大小。
二值闭运算
闭合(closing):B•S 闭运算是对原图先进行膨胀处理,后再进 行腐蚀的处理。 例:
闭运算可以在合并断裂目标物的同时,基 本保持原目标物的大小。
开闭运算的性质
1.递增性 若
,则
2.延伸性 开运算是非延伸的,A◦B是A的子集; 闭运算是延伸的,A是A•B的子集,即
腐蚀和膨胀的代数性质
上式表明,当图像A用一个大的结构元素 B ⊕ C去腐蚀时,其结果与用B和C连续腐 蚀时相同,而腐蚀结果与用结构元素B、C 的腐蚀顺序无关。根据这一性质,我们可 以只存储一些简单而基本的结构元素B,C 等等,一旦需要时便可由他们对图象做连 续腐蚀,以取代各种复杂的结构元素。
开运算与闭运算
膨胀与腐蚀运算,对目标物的后处理有着 非常好的作用,但是,腐蚀和膨胀运算的 一个缺点是,改变了原目标物的大小。为 了解决这一问题,考虑到腐蚀与膨胀是一 对逆运算,将膨胀与腐蚀运算同时进行, 由此便构成了开运算与闭运算。
二值化方法

二值化方法二值化是图像处理中一种常用的阈值分割方法。
它可以将图像分割成黑白两种颜色,从而使图像更容易处理,并减少图像的尺寸大小。
换句话说,它是一种将图像转换成只有黑白两种颜色的方法。
二值化被广泛应用于各种图像处理应用程序中,包括图像掩码、模板匹配等。
它可以用于在自然图像中提取特定对象,也可以分离噪声,使图像易于识别。
此外,它还可以用于更高级的图像处理应用,如视觉检测和人脸识别。
二值化常用的方法有多种,比如自适应阈值法、最大类间方差法、最小阈值法等。
其中自适应阈值法是一种简单易行的方法,其核心是在每一个像素的领域内,根据灰度值的大小决定阈值。
它可以在不同的图像中针对不同的区域生成更好的阈值,从而产生更好的二值化结果。
最大类间方差法也称为“大津法”,是一种根据图像的灰度直方图来进行阈值分割的算法。
它从图像中提取灰度直方图,并使用类间方差来计算图像的最佳阈值。
它可以有效地分割图像,从而产生更好的二值化结果。
最小阈值法是一种针对噪声图像的阈值分割方法。
它使用一种特殊的算法来识别噪声,并找出最佳的阈值,使得噪声尽可能少地影响最终的二值化结果。
除了上述常用的阈值分割方法之外,还有一些其他的方法,比如变量凝聚分割、迭代阈值匹配等,可以用于更加精细的二值化处理。
此外,有些二值化算法还可以被应用于无线电信号处理。
二值化是图像处理中一种广泛应用的阈值分割方法,它可以使图像更有效地处理,并减少图像的尺寸大小。
它的主要目的是针对不同的图像种类生成最佳的阈值,以使图像得到最佳的二值化结果。
它也被广泛用于图像掩码、模板匹配等多种应用中,并且还可以被应用于更高级的图像处理应用程序,如视觉检测和人脸识别。
然而,由于它的复杂性,二值化方法仍需要更多的研究和改进,以使其在实际应用中产生更好的效果。
05二值图像分析

二值图像及其意义
图像定义
一副数字图像是一个二维阵列,阵列元素值称为灰度值 或亮度值。
二值图像定义
只有黑、白两级灰度的图像。分别用1和0表示。
二值图像优点
去掉无关信息的干扰 几何与拓扑特性的表示与分析 节省资源
L = bwlabel(BW,4) [r, c] = find(L==2); rc = [r c]
区域边界—边界跟踪算法
参考“预处理”部分
距离测量
参考"基础"一章对应内容
描述二值图像的特征
• 基于边界的特征
– 链码、边界长度、边界标记、边界形状数
• 基于区域的特征
– 四叉树、围绕区域、骨架、面积、质心、密度、区域 形状数、不变矩、拓扑特征
第五章 二值图像分析 Chapter 5 Binary Image Analysis
Ref. Book
• 二值图像分析基本过程 预处理-->二值化-->图像描述(特征提取)-->分析识别
(预处理和二值化过程参考前面章节)
二值图像分析的意义
经过图像分割之后,获得了目标物与非目标物两 种不同的对象。但是提取出的目标物存在以下的 问题:
L=N *=L,N中小标号
连通成分标记 — 序贯算法
• [L, num] = bwlabel(BW, n)
BW = logical (... [1 1 1 0 1 1 0 0; 1 1 1 0 1 1 0 0; 1 1 1 0 1 0 0 0; 1 1 1 0 0 0 1 0; 1 0 1 0 0 0 1 0; 1 0 1 0 0 1 1 0; 1 1 1 0 0 1 0 0; 1 1 1 0 0 0 0 1]);
4 二值图像分析

d 4
e
可以描述图形的密集程度,1≤ d ≤ 0 。
3 体态比
区域的最小外接矩形的长与宽之比特性: 1)正方形和圆的体态比等于1 2)细长形物体的体态比大于1 下图是几种形状的外接矩形:
4.3 投影
4.3 投影
• 投影能表现图像的某种特征信息 • 给定一条直线,用垂直该直线的一簇等间距直线将一幅二值图像分割成若干
周长 2 e 面积
emin
周长2 面积
对于圆
2 (2 R) =4 2 R
当图形的形状接近于圆时,e 趋近于最小值(4π),反过来,图形的 形状变得越复杂,e的取值变得越大。
区域的密集度:
C
面积 周长2
根据此标准,圆是最密集的图形。 密集度的另一意义:周长在给定后,密集度越高、所围面积越大。 因此,比值
确定为阈值参数 tp 。
2. 状态法
(直方图分析法-峰谷法)
当给定图像的灰度直方 图(与对象图形和背景相对应)
呈双峰型分布时,只需把
这两个峰间的谷底上的灰 度值作为阈值 t 即可。
t
双峰分布示意图
一幅灰度图像和使用不同阈值到的二值图像结果
1) 原始灰度图像
2) 阈值 T=100
3) T=128(反色) 4) T1=100|T2=128
图像中的物体、背景各具有一灰度值( N ),图像被零均值高斯噪声污 染,灰度分布曲线是由两个正态分布函数叠加而成.图像直方图将会出现 两个分离的峰值,阈值选取波谷最佳。 具有不同灰度均值的多物体图像中.背景和物体灰度值正态分布参数 为:
练习:请用不等 式依次排出 4 个 方差的顺序。
2. 迭代式阈值选择
经试验比较,对于直方图双峰明显,谷底较深的图
图像二值化算法总结

图像二值化算法总结
回首前尘,尽是可耻的的往事。
每当想起这句话,心里惶惶不可终日,兴趣驱动的学习乐在其中,项目驱动的学习不可不为,压力驱动的学习无疾而终。
抛去胡乱YY的国际风雨,社稷民生,我们终究要扎扎实实的度过人生的每个阶段!
2010年的很长时间都在做图像二值化算法方面的工作,看了一些论文,总结了一些算法,总的来说,在这方面的算法特别多,大致可以分成两类,全局阈值二值化和局部阈值二值化。
下面链接了比较基础的几种方法:
•Otsu二值化算法
•Bernsen二值化算法
•Niblack二值化算法
•基于块分析的二值化算法
•Sauvola算法
•循环阈值算法
在使用这些算法的同时,发挥了一下主观能动性,并由此发了一篇paper[1]。
图像二值化属于图像处理比较基础的内容,经过几十年的发展已经比较成熟,只能作为图像处理这个方向的入门。
如果还想在这个领域出一些成果,可以结合当前比较热的一些技术,比如Wavelete,从滤波的角度进行处理。
参考:
[1] An Adaptive Binarization Method for Camera based Document Image
[2] Survey over image thresholding techniques and quantitative performance evaluation。
2.二值化——精选推荐

2.⼆值化⼀、⼆值化⼆值化就是让图像的像素点矩阵中的每个像素点的灰度值为0(⿊⾊)或者255(⽩⾊),也就是让整个图像呈现只有⿊和⽩的效果。
在灰度化的图像中灰度值的范围为0~255,在⼆值化后的图像中的灰度值范围是0或者255。
⿊⾊:⼆值化后的R = 0⼆值化后的G = 0⼆值化后的B = 0⽩⾊:⼆值化后的R = 255⼆值化后的G = 255⼆值化后的B = 255那么⼀个像素点在灰度化之后的灰度值怎么转化为0或者255呢?⽐如灰度值为100,那么在⼆值化后到底是0还是255?这就涉及到取⼀个阀值的问题。
三、阈值求取算法1. 傻⽠法2. ⼤律⼆值算法将图像理解成255个图层,每⼀层分布了不同的像素,这些像素垂直叠加合成了⼀张完整的灰度图。
就是找到⼀个合适的灰度值,⼤于这个值的我们将它称之为背景(灰度值越⼤像素越⿊),⼩于这个值的我们将它称之为前景(灰度值越⼩像素越⽩)。
h:图像的宽度w:图像的⾼度(h*w 得到图像的像素数量)t :灰度阈值(我们要求的值,⼤于这个值的像素我们将它的灰度设置为255,⼩于的设置为0)n0:⼩于阈值的像素,前景n1:⼤于等于阈值的像素,背景n0 + n1 == h * ww0:前景像素数量占总像素数量的⽐例w0 = n0 / (h * w)w1:背景像素数量占总像素数量的⽐例w1 = n1 / (h * w)w0 + w1 == 1u0:前景平均灰度u0 = n0灰度累加和 / n0u1:背景平均灰度u1 = n1灰度累加和 / n1u:平均灰度u = (n0灰度累加和 + n1灰度累加和) / (h * w) 根据上⾯的关系u = w0 * u0 + w1 * u1g:类间⽅差(那个灰度的g最⼤,哪个灰度就是需要的阈值t)g = w0 * (u0 - u)^2 + w1 * (u1 - u)^2根据上⾯的关系,可以推出:(这个⼀步⼀步推导就可以得到)g = w0 * w1 * (u0 - u1) ^ 2然后,遍历每⼀个灰度值,找到这个灰度值对应的 g找到最⼤的 g 对应的 t;算法实现Mat Binary_OSTU(Mat img){// get height and widthint width = img.cols;int height = img.rows;Mat out = Mat::zeros(height, width, CV_8UC1);double p0 = 0;double u0 = 0;double p1 = 0;double u1 = 0;double n0 = 0;double n1 = 0;int val;double max_sb = 0, sb = 0;int threshold = 0;for (int k = 0; k < 255; k++){p0 = 0;u0 = 0;p1 = 0;u1 = 0;n0 = 0;n1 = 0;//分为两类for (int i = 0; i < height; i++){for (int j = 0; j < width; j++){val = (int)(img.at<uchar>(i, j));if (val < k){n0++;u0 += val;}else{n1++;u1 += val;}}}//求出概率,均值u0 = u0 / n0; //第⼀类均值u1 = u1 / n1;p0 = n0 / (width* height);p1 = n1 / (width* height);sb = p0 * p1*pow((u0 - u1), 2);if (sb > max_sb){max_sb = sb;threshold = k;}}cout << "threshold: " << threshold << endl;for (int i = 0; i < height; i++){for (int j = 0; j < width; j++){if ((int)img.at<uchar>(i, j) > threshold)out.at<uchar>(i, j) = 255;elseout.at<uchar>(i, j) = 0;}}return out;}参考⽂献:Otsu N. A threshold selection method from gray-level histogram. IEEE Trans,1979;SMC-9;62-66。
CV02-二值图像分析

亮度成像模型
图像灰度值由两个因素确定:一个是场景中景物本身的亮 度;另一个是成像时如何将景物亮度转化为图像灰度
1. 景物亮度
场景中景物本身的亮度与光辐射的强度有关 对发光的景物,要考虑其辐射的功率或它的光辐射量 对不发光的景物,要考虑其他光源对它的照度 2. 图像灰度:具有相对的意义 (1)入射到可见景物上的光通量; (2)景物对入射光反射的比率。
Y
需要Z坐标确定X和Y坐标
2-D图像平面上的每个点都可能是3-D客观世界中处于一条直 线上的所有点的投影结果
几何成像模型
分离模型
图像平面(原点)与世 界坐标系统的位臵偏差 用矢量D表示,其分量 分别为Dx,Dy,Dz。 这里假设摄像机的扫视 角(x和X轴间的夹角) 为,而倾斜角(z和Z 轴间的夹角)为a
几何成像模型
分离模型
这个不重合的摄像机模型可通过以下一系列步骤转换为前
面的重合模型:
几何成像模型
分离模型
①将图像平面原点按矢量D移出世界坐标系统的原点;②以某个
角(绕z轴)扫视x轴;③以某个a角将z轴倾斜(绕x轴旋转)
几何成像模型
分离模型
几何成像模型
分离模型
一个满足几何关系的摄像机观察到的齐次世界坐标点在摄像机 坐标系统中具有如下的齐次表达
采集模型
图像采集解决的问题
1)利用几何学原理解决场景中目标的投影位臵在图像中的什么
地方的问题;
2)利用辐射度学或光度学原理建立场景中目标的亮度与图像中 对应位臵的灰度联系
图像采集中主要模型
主要模型包括几何成像模型和亮度成像模型
几何成像模型:在图像表达f(x,y)中,(x,y)表示像素的空间位置,由成像时的几 何模型确定 亮度成像模型: f 表示像素的幅度数值(灰度),是由成像时的亮度模型确定
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• • • • • • • • • • • • • • • • • • • • •
if(db/dw>max) { max=db/dw; num=i; } } int k; int cols=bmpFile.m_Cols; int rows=bmpFile.m_Rows; for (i = 0; i < rows; ++i) { for (j= 0; j < cols; ++j) { k = bmpFile.m_pImgDat[i*cols+j]; if (k < num) bmp.m_pImgDat[i*cols+j] = 0; else bmp.m_pImgDat[i*cols+j] = 255; }
•
• void CBmpFile::GLHistoGraph(int* s) • { • for(int j=0;j<256;j++) • { • s[j]=0; • } • int a; • • • • • • • for(int i=0;i<m_Rows*m_Cols;i++) { a=(int)m_pImgDat[i]; s[a]++; }
• • • • • • • • • • •
for(j=i;j<256;j++) { d2+=(m2-s[j])*(m2-s[j]); } d2=d2/w2;
m=1.0*(m1*w1+m2*w2)/(w1+w2); dw=1.0*w1*d1+w2*d2; db=1.0*w1*(m1-m)*(m1-m)+w2*(m2-m)*(m2-m);
• • • • • • • • • • •
for(j=0;j<i;j++) { s1+=j*s[j]; w1+=s[j]; } for(j=i;j<256;j++) { s2+=j*s[j]; w2+=s[j]; }
• • • • • • • •
(w1) m1=1.0*s1/w1; if(w2) m2=1.0*s2/w2; for(j=0;j<i;j++) { d1+=(m1-s[j])*(m1-s[j]); } d1=d1/w1;
• 灰度均值 • (C1像素数*C1均值+ C2像素数*C2均值)/(总像 素数)
• • • • • • • • • • • •
int i=0,j=0; bmpFile.Load4File("E:\\ZZLB.bmp"); CBmpFile bmp; bmp.CreateBmp(bmpFile.m_Cols,bmpFile.m_Row s,bmpFile.m_PxlBytes); int s[256],num; bmpFile.GLHistoGraph(s); double max=0; for(i=1;i<256;i++) { int w1=0,w2=0;//像素数 int s1=0,s2=0;//灰度和 double m1=0,m2=0,d1=0,d2=0,m=0;//灰度 平均值和方差,灰度均值 double dw=0,db=0;
图像二值化 判断分析法
• 用一个阈值T将图像分为两组C1,C2
• • • •
算法的关键是判断阈值 阈值是组间方差与组内方差之比最大对应的T 组间方差为 C1像素数*(C1灰度平均值-灰度均值)+C2像素 数*(C2灰度平均值-灰度均值) • 组内方差: • C1像素数*C1方差+ C2像素数*C2方差