ERDASENVI下怎样做图像二值化谢谢

ERDASENVI下怎样做图像二值化谢谢,第1张

二值化在ENVI中可以通过band math来实现。band math是利用简单的算术表达式来解决波段运算的功能。二值化的实现,需要用到band math的逻辑运算功能,具体的表达式的书写,你可以查看帮助文件,或者找一本 *** 作指南看看。举个例:将某一波段中灰度值大于等于100的像元赋予10,其他的赋予20。那么表达式就写为:(b1 ge 100)20+(b1 lt 100)10ge 、lt分别表示“大于等于”和“小于”括号内是一个逻辑运算表达式,所以其返回值是0(假)和1(真)。那么,一旦某一像元灰度值大于等于100,第一个括号返回值为1,加号之前的运算的结果就为20;当然,此时该像元得灰度值代入到第二个括号内计算的返回值为0。这样,针对着一个像元,其最终输出之后为20。band math 就是这样一个一个像元进行计算的。

二值化在ENVI中可以通过band math来实现。band math是利用简单的算术表达式来解决波段运算的功能。二值化的实现,需要用到band math的逻辑运算功能,具体的表达式的书写,你可以查看帮助文件,或者找一本 *** 作指南看看。举个例:将某一波段中灰度值大于等于100的像元赋予10,其他的赋予20。那么表达式就写为:(b1 ge 100)20+(b1 lt 100)10ge 、lt分别表示“大于等于”和“小于”括号内是一个逻辑运算表达式,所以其返回值是0(假)和1(真)。那么,一旦某一像元灰度值大于等于100,第一个括号返回值为1,加号之前的运算的结果就为20;当然,此时该像元得灰度值代入到第二个括号内计算的返回值为0。这样,针对着一个像元,其最终输出之后为20。band math 就是这样一个一个像元进行计算的。

较为常用的图像二值化方法有:1)全局固定阈值;2)局部自适应阈值;3)OTSU等。

局部自适应阈值则是根据像素的邻域块的像素值分布来确定该像素位置上的二值化阈值。

这样做的好处在于每个像素位置处的二值化阈值不是固定不变的,而是由其周围邻域像素的分布来决定的。

亮度较高的图像区域的二值化阈值通常会较高,而亮度较低的图像区域的二值化阈值则会相适应地变小。不同亮度、对比度、纹理的局部图像区域将会拥有相对应的局部二值化阈值。

常用的局部自适应阈值有:

1)局部邻域块的均值;

2)局部邻域块的高斯加权和。

在ps 中,想要图形二值化,只能把你的图像转换为位图模式,这时候图形只包括黑和白,但仍然不能转换为你说的线条。位图转换为线条这个问题很难解决,即使转换了也不能使你满意,因为不知道你的是什么样的,假如你的有很多灰度的成分就更加难以识别了。如果你的图像本身就是反差很大,那还好做一些。你可以用Adobe Illustrator 中的实时描摹工具对你的位图进行矢量图转换,在推荐一个独立的软件 Adobe Streamline 40 是专业的图形转换工具,我经常用于书法,及手写字体的转换,非常方便。

图像的二值化是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果。

将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。在数字图像处理中,二值图像占有非常重要的地位,首先,图像的二值化有利于图像的进一步处理,使图像变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。其次,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像。

所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域

一下程序可以实现图像的二值化:

/

函数名:

cvBinaryEx

参 数:

imgSrc - 进行锐化的图像

返回值:

成功锐化返回TRUE,否则返回false;

说 明:

对图进行二值化

/

bool cvBinaryEx(IplImage imgSrc)

{

    IplImage img = cvCreateImage(cvGetSize(imgSrc),imgSrc->depth,imgSrc->nChannels);

    CvScalar s;

    int sum=0;

    for (int i=0; i < imgSrc->height; i++)

    {

        for (int j=0; j < imgSrc->width; j++)

        {

            s =  cvGet2D(imgSrc,i,j);

            sum = (sval[0]+sval[1]+sval[2])/3;

            if (sum > 128)

            {

                sval[0]=sval[1]=sval[2]=255;

                cvSet2D(imgSrc,i,j,s);

            }

            else

            {

                sval[0]=sval[1]=sval[2]=0;

                cvSet2D(imgSrc,i,j,s);

}

}

}

return true;

}

灰度图grayscale

灰度是指只含亮度信息,不含色彩信息的图像。黑白照片就是灰度图,特点是亮度由暗到明,变化是连续的。要表示灰度图,就需要把亮度值进行量化

使用灰度图的好处:

①    RGB的值都一样。

②    图像数据即调色板索引值,就是实际的RGB值,也就是亮度值。

③    因为是256色调色板,所以图像数据中一个字节代表一个像素,很整齐。

所以,做图像处理时都采用灰度图。

将一幅RGB格式的图像转化为灰度图:

IplImage src= cvLoadImage("C:\\homebmp", -1);

IplImage dest ;

cvCvtColor(Src, dest, CV_RGB2GRAY);

然后将灰度图dest转化为二值化图像(保存在src中),可以直接使用cvThreshold函数:

cvThreshold(dest, src, 1, 255, CV_THRESH_BINARY);

一般先将图像灰度化,然后再二值化,然后在进行边缘处理等 *** 作。。。

灰度化-->二值化--->边缘提取>>>

>

以上就是关于ERDAS/ENVI下怎样做图像二值化谢谢全部的内容,包括:ERDAS/ENVI下怎样做图像二值化谢谢、envi软件中如何进行图像二值化、java代码怎么实现图像二值化等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9759119.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存