是否可以将边缘检测输出转换为二进制图像OpenCV

时间:2013-05-15 08:43:56

标签: android image opencv image-processing

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

后,这是我的图像

1 个答案:

答案 0 :(得分: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;
        }
    }
}