【问题标题】:Is it possible to convert a edge detection output to binary image OpenCV是否可以将边缘检测输出转换为二进制图像 OpenCV
【发布时间】:2013-05-09 18:11:25
【问题描述】:

我正在尝试将文本文档转换为二进制图像,方法是首先检测其边缘,然后根据边缘检测的输出将其转换为二进制图像。 有人可以在这方面帮助我。 这是我边缘检测后的图片

【问题讨论】:

    标签: android image opencv image-processing


    【解决方案1】:

    看看non-maxima suppression。用于将梯度边缘图像转换为二进制边缘图像。如果以上是边缘检测的输出,则很难挑选单词。您可能需要更改照明条件。

    据我所知,这是通用算法。您要确保当前像素大于其相邻像素的两个。选择对角线之一时最有效。在这里,我选择了从左上角到右下角的对角线。如果您的像素比它的邻居大,那么它就是局部最大值,您可以将其设置为 1。否则在其空位中有一个像素的值大于它,因此您将其设置为 0。

    for(int i=1; i<image.width;i++){
        for(int j=1; j<image.height;j++){
            if(image[i][j]>=image[i-1][j-1] && image[i][j]> image[i+1][j+1]){
                image[i][j]=1;
            }else{
                image[i][j]=0;
            }
        }
    }
    

    【讨论】:

    • 你能给我一些c++中非极大值抑制的代码吗?
    • 1的值是什么?黑色的值,即“0”或白色“255”??
    • 在本例中,1 为白色,0 为黑色。在您的实现中,您可能必须将其更改为 255(白色)和 0(黑色)
    • 可以直接用单值表示RGB吗?我想边缘检测后的输出仍然是RGB值,那我们可以直接将像素颜色更改为黑色或白色吗?
    • 从边缘检测器返回的图像应该是渐变图像而不是 RGB,这意味着它应该只有一个通道。
    猜你喜欢
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 2014-08-24
    • 2012-10-29
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    相关资源
    最近更新 更多