A. C#图像处理,对图像进行二值化处理时,为什么要将图像的RGB值转为HSL啊
因为细化算法就是分析HSL的 不是分析RGB的
B. 几种二值化方法c++实现
扫描线划图图像二值化方法可以分为全局方法和局部方法:
全局方法根据线划图像的灰度直方图和灰度空间分布确定一个阈值,由此实现灰度图像N--值图像的转变,比较有代表性的全局算法包括平均灰度法,Otsu方法,迭代最优算法等。
局部方法是通过检查每个像素点的邻域来确定局部阈值,它比全局阈值有着更广泛的应用,典型的局部阈值方法有Niblack方法,Bemsen方法,平均梯度法等。
全局阈值法期望灰度值法:设图像的尺寸为M*N,其灰度取值为厶,厶,厶…..k,用随机变量X来表示每个像素点的灰度值。可以用概率分布来描述图像的灰度分布情况,分别设各灰度级出现的概率为式2.1:^,A=p(厶)(2.1),仍=p(厶),...,PN=p(“)且有∑见=1灰度图像的一个重要的统计量就是灰度期望值,使用它为阈值可以使黑色像素和白色像素的灰度值均等,公式(2.2)即为灰度期望值的计算式:鳓删=∑厶见n-tⅣ(2.2)该算法对于简单图像的效果好,而且计算复杂度较低,缺点是对于亮度不均匀的线划图像效果较差。
Otsu方法:这种方法又被称为最大类间方差方法,是一种自适应的阈值确定方法。它根据灰度特性,将图像分为目标和背景两个部分,目标和背景的方差越大,说明这两个部分的差别越大,因此类间最大方差的分割意味着错分概率最小。对于灰度图像I(x,y),目标和背景的分割阈值为T,属于目标的像素点数占整个图像像素点的比例是‰,其平均灰度值为Po;背景像素点数占整个图像像素点的比例为q,其平均灰度值为“,图像总平均灰度值记为卢,类间方差为g。假设图像M*N的背景比较暗,图像中像素灰度值小于阈值T的像素个数记为%,7第二章细化之前的预处理分析像素灰度值大于阈值T的像素个数记为Ⅳl,所以有式2.3到式2.8成立:嘞=j丽No(2.3)q:熹戗=———L—MxN’(2.4)。IZ.4l、Ⅳo+M=MxN‰+q=1‖=‰肛o+qH(2.5)(2.6)(2.7)(2.8)g=‰(po—JLl)2+q(“一‖)对于灰度图像来说,分别以每个灰度为阈值计算对应的类间方差,其中使类间方差最大化的灰度值即为阈值。该算法对于较简单的线划图像有良好的效果而且有较快的运算速度,所以这种算法的应用非常广泛。
最优阈值法:又被称为逼近迭代算法,这种方法的原理是将直方图用两个或多个正态分布的概率密度函数来近似表示的方法,阈值取为对应两个或多个正态分布的最大值之间的最小概率处的灰度值,其结果是具有最小误差的分割。这里的误差包括两部分:将目标误认为背景而被剔除或将背景、噪声归为目标。最优阈值法的处理步骤:El:计算图像的最小灰度值k和最大灰度值Z二,令阈值初值为式2.9:To=(Zmi。+Z懈)/2(2.9)E2:根据阈值将图像分为目标和背景两部分,求出两部分的平均灰度值Zo和五,分别计算Z0和Zl的平均值,用公式2.10来表示:∑I(i,/)10,J琏TkZo=互=等‰∑I(i,/)T)01.2(1群砸,/)>‘、。一E3:计算新阈值,用式2.1l表示:T“1=(Zo+z1)/2(2.11)如果T‘=T“1或者达到设定的最大迭代次数就结束,否则转向步骤E2。该算法能较好区分图像的目标和背景,但是会导致图像细微信息的丢失。
局部阈值法Niblack方法:基于局部均值和局部标准差,基本公式:T(x,y)=m(x,y)+七’s化少).(2.12)长安大学硕士论文对于图像I(x,y),在(X,y)处的阈值r(x,Y)由局部均值m(x,Y)和局部标准差s(x,Y)决定,k表示调整系数,一般设为.0.2。在Niblack方法中,窗口大小的选择非常重要,既要小到能保持足够的局部细节又要大到能抑制噪声。Niblack方法能很好地保持图像细节,对于清晰的线划图像能够提供很好的二值化结果,但是在一些模糊的线划图像中会保留一些不必要的细节。在最初的Niblack方法中,k值是固定的,但是对于不同的图像,通常需要根据图像的灰度分布情况自动调整k的值才能取得较好的结果,因此后来提出很多改进的算法,其中一个改进的Niblack方法的基本公式为式2.13-T(x,J,):m(x,y)【l+k(1一掣掣)】瓜(2.13)k和R都是经验常量,改进的Niblack方法使用k和R来减少对噪声的敏感度。
C. 有没有指纹图像二值化与细化的算法的MATLAB程序
这是指纹识别的预处理算法;拍摄的原始图片中螺纹颜色为白色,底色为黑色。
首先是去噪;如果某点为白色,且它的8领域内白点数目小于3那么判定它为干扰信号,置为背景黑色。如果某点位黑色,但它的8领域内白点数大于7个;判定它为干扰信号,置为螺纹的白色。
最后反色,置为螺纹黑色,底色白色,大概是为便于观察把
D. excel 如何快速把一张表里面的数据二值化函数怎么写>=0取1 若<0取0或置空 求指点
把问题作为内容(邮件主题一定要包含“excel”,本人以此为依据辨别非垃圾邮件,以免被误删)、excel样表文件(请特别注意:要03版的(如果是03以后的,把文件“另存为”一下,类型框可以选择03的),把现状和目标效果表示出来)作为附件发来看下 [email protected]
E. 什么样的图像可以进行细化
二值的当然不行。
快速zhang并行算法,很好的一种常用方法
具体细化方法:
满足下列四个条件的点可以删除
p3 p2 p9
p4 p1 p8
p5 p6 p7
细化删除条件为: (1)、2 < Nz(p1) <= 6 Nz为八邻域中黑点的数目
(2)、Zo(p1)=1,指中心为黑点
(3)、p2*p4*p8=0 or Zo(p1)!=1 避免黑线被打断
(4)、p2*p4*p6=0 or Zo(p4)!=1
细化算法的分类:
依据是否使用迭代运算可以分为两类:第一类是非迭代算法,一次即产生骨架,如基于距离变换的方法。游程长度编码细化等。第二类是迭代算法,即重复删除图像边缘满足一定条件的像素,最终得到单像素宽带骨架。迭代方法依据其检查像素的方法又可以再分成串行算法和并行算法,在串行算法中,是否删除像素在每次迭代的执行中是固定顺序的,它不仅取决于前次迭代的结果,也取决于本次迭代中已处理过像素点分布情况,而在并行算法中,像素点删除与否与像素值图像中的顺序无关,仅取决于前次迭代的结果。在经典细化算法发展的同时,起源于图像集合运算的形态学细化算法也得到了快速的发展。
Hilditch、Pavlidis、Rosenfeld细化算法:这类算法则是在程序中直接运算,根据运算结果来判定是否可以删除点的算法,差别在于不同算法的判定条件不同。
其中Hilditch算法使用于二值图像,比较普通,是一般的算法; Pavlidis算法通过并行和串行混合处理来实现,用位运算进行特定模式的匹配,所得的骨架是8连接的,使用于0-1二值图像 ;Rosenfeld算法是一种并行细化算法,所得的骨架形态是8-连接的,使用于0-1二值图像 。 后两种算法的效果要更好一些,但是处理某些图像时效果一般,第一种算法使用性强些。
索引表细化算法:经过预处理后得到待细化的图像是0、1二值图像。像素值为1的是需要细化的部分,像素值为0的是背景区域。基于索引表的算法就是依据一定的判断依据,所做出的一张表,然后根据魔鬼要细化的点的八个邻域的情况查询,若表中元素是1,若表中元素是1,则删除该点(改为背景),若是0则保留。因为一个像素的8个邻域共有256中可能情况,因此,索引表的大小一般为256。
F. 基于MATLAB的毕业设计有哪些
毕业设计是教学过程的最后阶段采用的一种总结性的实践教学环节。通过毕业设计,学生可以综合应用所学的各种理论知识和技能,进行全面、系统、严格的技术及基本能力的练习。通常情况下,仅对大专以上学校要求在毕业前根据专业的不同进行毕业设计,对中等专业学校的学生不作要求。
基于MATLAB的毕业设计有:
1、基于MATLAB的视图技术分析
2、二值图像细化算法研究与实现
3、基于MATLAB下的信号分析与处理
4、基于matlab的伪彩色处理与研究
5、matlab进行小波分析
G. 数字图像处理中的膨胀原理是怎样的
1.图像细化的基本原理
⑴ 图像形态学处理的概念
数字图像处理中的形态学处理是指将数字形态学作为工具从图像中提取对于表达和描绘区域形状有用处的图像分量,比如边界、骨架以及凸壳,还包括用于预处理或后处理的形态学过滤、细化和修剪等。图像形态学处理中我们感兴趣的主要是二值图像。
在二值图像中,所有黑色像素的集合是图像完整的形态学描述,二值图像的各个分量是Z2的元素。假定二值图像A和形态学处理的结构元素B是定义在笛卡儿网格上的集合,网格中值为1的点是集合的元素,当结构元素的原点移到点(x,y)时,记为Sxy,为简单起见,结构元素为3x3,且全都为1,在这种限制下,决定输出结果的是逻辑运算。
⑵ 二值图像的逻辑运算
逻辑运算尽管本质上很简单,但对于实现以形态学为基础额图像处理算法是一种有力的补充手段。在图像处理中用到的主要逻辑运算是:与、或和非(求补),它们可以互相组合形成其他逻辑运算。
⑶ 膨胀和腐蚀
膨胀和腐蚀这两种操作是形态学处理的基础,许多形态学算法都是以这两种运算为基础的。
① 膨胀
是以得到B的相对与它自身原点的映像并且由z对映像进行移位为基础的。A被B膨胀是所有位移z的集合,这样, 和A至少有一个元素是重叠的。我们可以把上式改写为:
结构元素B可以看作一个卷积模板,区别在于膨胀是以集合运算为基础的,卷积是以算术运算为基础的,但两者的处理过程是相似的。
⑴ 用结构元素B,扫描图像A的每一个像素
⑵ 用结构元素与其覆盖的二值图像做“与”操作
⑶ 如果都为0,结果图像的该像素为0。否则为1
② 腐蚀
对Z中的集合A和B,B对A进行腐蚀的整个过程如下:
⑴ 用结构元素B,扫描图像A的每一个像素
⑵ 用结构元素与其覆盖的二值图像做“与”操作
⑶ 如果都为1,结果图像的该像素为1。否则为0
腐蚀处理的结果是使原来的二值图像减小一圈。
⑷ 击中(匹配)或击不中变换
假设集合A是由3个子集X,Y和Z组成的集合,击中(匹配)的目的是要在A中找到X的位置,我们设X被包围在一个小窗口W中,与W有关的X的局部背景定义为集合的差(W-X),则X在A内能得到精确拟合位置集合是由X对A的腐蚀后由(W-X)对A的补集Ac腐蚀的交集,这个交集就是我们要找的位置,我们用集合B来表示由X和X的背景构成的集合,我们可以令B=(B1,B2),这里B1=X,B2=(W-X),则在A中对B进行匹配可以表示为:
A⊙B
我们称为形态学上的击中或击不中变换。
⑸ 细化
图像细化一般作为一种图像预处理技术出现,目的是提取源图像的骨架,即是将原图像中线条宽度大于1个像素的线条细化成只有一个像素宽,形成“骨架”,形成骨架后能比较容易的分析图像,如提取图像的特征。
细化基本思想是“层层剥夺”,即从线条边缘开始一层一层向里剥夺,直到线条剩下一个像素的为止。图像细化大大地压缩了原始图像地数据量,并保持其形状的基本拓扑结构不变,从而为文字识别中的特征抽取等应用奠定了基础。细化算法应满足以下条件:
① 将条形区域变成一条薄线;
② 薄线应位与原条形区域的中心;
③ 薄线应保持原图像的拓扑特性。
细化分成串行细化和并行细化,串行细化即是一边检测满足细化条件的点,一边删除细化点;并行细化即是检测细化点的时候不进行点的删除只进行标记,而在检测完整幅图像后一次性去除要细化的点。
常用的图像细化算法有hilditch算法,pavlidis算法和rosenfeld算法等。
注:进行细化算法前要先对图像进行二值化,即图像中只包含“黑”和“白”两种颜色。
还可以参考:http://blog.csdn.net/sunny3106/archive/2007/08/15/1745485.aspx
关键词是 数学形态学,
H. Matlab中的细化函数是怎样的
前几天刚做的指纹识别算法,细化部分,以指纹识别为例:getminu.m
%%%%%%%%%%%%%%%%%%%%%%%%%提取指纹细节点算法,P为细化后图像
function minu=getminu(P,smooth)
[height,width]=size(P);
minu=P;
cn_coding=zeros(height,width);%连接数编码初始化
for i=2:height-1
for j=2:width-1
if P(i,j)==1
cn_coding(i,j)=0.5*(abs(P(i,j+1)-P(i-1,j+1))+abs(P(i-1,j+1)-P(i-1,j))+abs(P(i-1,j)-P(i-1,j-1))+abs(P(i-1,j-1)-P(i,j-1))+abs(P(i,j-1)-P(i+1,j-1))+abs(P(i+1,j-1)-P(i+1,j))+abs(P(i+1,j)-P(i+1,j+1))+abs(P(i+1,j+1)-P(i,j+1)));
if cn_coding(i,j)==1%端点
minu(i-1,j)=1;
minu(i+1,j)=1;
minu(i,j-1)=1;
minu(i,j+1)=1;
minu(i-1,j-1)=1;
minu(i-1,j+1)=1;
minu(i+1,j-1)=1;
minu(i+1,j+1)=1;
elseif cn_coding(i,j)==3%交叉点
minu(i-1,j-1)=1;
minu(i-1,j+1)=1;
minu(i+1,j-1)=1;
minu(i+1,j+1)=1;
end
end
end
end
figure,imshow(1-minu);
%%%%消除伪细节点%%%%%%%%%%%%%
detail=P;%%初始化
mark=smooth;
for i=1:height
for j=1:width
if smooth(i,j)==8
mark(i,j)=0;
else mark(i,j)=1;
end
end
end
%figure,imshow(mark)%背景与前景标志
for i=2:height-1
for j=2:width-1
%%%%注意这块的逻辑关系,括号的作用很关键的
if (cn_coding(i,j)==1||cn_coding(i,j)==3)&&mark(i,j)==1&&mark(i,j+5)*mark(i-5,j)*mark(i,j-5)*mark(i+5,j)==0
cn_coding(i,j)=0;%置为伪细节点
end
if cn_coding(i,j)==1%端点
detail(i-1,j)=1;
detail(i+1,j)=1;
detail(i,j-1)=1;
detail(i,j+1)=1;
detail(i-1,j-1)=1;
detail(i-1,j+1)=1;
detail(i+1,j-1)=1;
detail(i+1,j+1)=1;
elseif cn_coding(i,j)==3%交叉点
detail(i-1,j-1)=1;
detail(i-1,j+1)=1;
detail(i+1,j-1)=1;
detail(i+1,j+1)=1;
end
end
end
figure,imshow(1-detail);
I. 二次函数如何求最值
1、顶点式y=a(x-h)²+k
当a>0时,(抛物线开口向上,图象有最低点,)二次函数有最小值k。
当a<0时,(抛物线开口向下,图象有最高点,)二次函数有最大值k。
2、把二次函数化为一般形式y=ax²+bx+c,利用顶点坐标公式[-b/(2a),(4ac-b²)/(4a)]可求最大或最小值:
当a>0时,(抛物线开口向上,图象有最低点,)二次函数有最小值(4ac-b²)/(4a)。
当a<0时,(抛物线开口向下,图象有最高点,)二次函数有最大值(4ac-b²)/(4a)。
举例说明:已知
,求函数
,
的最大值与最小值。
解:因为
所以
又
,所以
,即
令
,则问题转化为求函数
的最值
因为
所以当
时,
所以,所求函数的最大值是22,最小值是-3。
(9)二值函数细化算法扩展阅读:
二次函数的定义:
一般地,如果
(a,b,c是常数,a≠0),那么y叫做x的二次函数。
二次函数的图像:是一条关于
对称的曲线,这条曲线叫抛物线。
抛物线的主要特征:
1、有开口方向,a表示开口方向;a>0时,抛物线开口向上;a<0时,抛物线开口向下。
2、有对称轴
。
3、有顶点
。
4、c表示抛物线与y轴的交点坐标:(0,c)。
参考资料来源:搜狗网络--顶点式
J. matlab怎么二值化
matlab中,使用im2bw()函数对图片进行二值化。
matlab中DIP工具箱函数im2bw使用阈值(threshold)变换法把灰度图像(grayscale image)转换成二值图像。所谓二值图像, 一般意义上是指只有纯黑(0)、纯白(255)两种颜色的图像。 当然, 也可以是其他任意两种颜色的组合。
在matlab命令行中键入doc im2bw或help im2bw即可获得该函数的帮助信息。
im2bw()的语法如下:
1、BW = im2bw(I, level)
2、BW = im2bw(X, map, level)
3、BW = im2bw(RGB, level)
其中level就是设置阈值的。level取值范围[0, 1]。
(10)二值函数细化算法扩展阅读:
matlab中,使用graythresh()函数智能建议二值化所需的阈值:
在matlab中使用im2bw函数进行图像二值化处理时(将图像转换为 二值图像), 人为设定阈值并不总是十分有效。matlab工具箱为我们提供了graythresh函数。该函数使用最大类间方差法得到一个阈值, 利用这个阈值进行图像二值化通常是十分有效的。