Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing PIL-图像处理-如何在没有噪声背景的情况下获得干净的图像?阐述了二值化步骤?_Image Processing_Python Imaging Library_Ocr_Tesseract - Fatal编程技术网

Image processing PIL-图像处理-如何在没有噪声背景的情况下获得干净的图像?阐述了二值化步骤?

Image processing PIL-图像处理-如何在没有噪声背景的情况下获得干净的图像?阐述了二值化步骤?,image-processing,python-imaging-library,ocr,tesseract,Image Processing,Python Imaging Library,Ocr,Tesseract,下午好 我正在写一个ocr程序来检测图像上的文本。到目前为止,我得到了很好的结果,但当文本是黑色和背景是白色。如何改进浅色背景(黄色、绿色等)上有白色文本的图像 一个原始示例图像可以是: 到目前为止,我只是使用以下方法将其转换为灰度: image = image.convert('L') 然后应用一系列过滤器,例如: 锐化 光滑的 变得模糊不清 等 然后我像这样进行二值化: image = image.point(lambda x: 0 if x<128 else 255, '1')

下午好

我正在写一个ocr程序来检测图像上的文本。到目前为止,我得到了很好的结果,但当文本是黑色和背景是白色。如何改进浅色背景(黄色、绿色等)上有白色文本的图像

一个原始示例图像可以是:

到目前为止,我只是使用以下方法将其转换为灰度:

image = image.convert('L')
然后应用一系列过滤器,例如: 锐化 光滑的 变得模糊不清 等

然后我像这样进行二值化:

image = image.point(lambda x: 0 if x<128 else 255, '1') #refers to http://stackoverflow.com/questions/18777873/convert-rgb-to-black-or-white and also to http://stackoverflow.com/questions/29923827/extract-cow-number-from-image

image=image.point(lambda x:0如果x我用ImageMagick尝试过这个,它也有Python绑定-除了我在命令行做的。我想你可以很容易地适应我所做的-我不会说Python也不会使用PIL,但希望它能给你一些关于可能途径的见解

convert http://i.stack.imgur.com/2cFk3.jpg -fuzz 50% -fill black +opaque white -threshold 50% x.png
基本上,它采用任何不在白色50%以内的颜色,并用黑色填充,然后将结果阈值设置为纯黑色和白色

另一种选择是根据颜色的饱和度对图像进行阈值设置。因此,将图像转换为HSB颜色空间,分离通道并丢弃色调和亮度。然后,剩下的饱和度阈值如下所示:

convert http://i.stack.imgur.com/2cFk3.jpg -colorspace hsb -separate -delete 0,2 -threshold 50% x.png
加入一个
-否定
,得到黑色的白色字母

我已经为PIL复制了一些其他代码,并且正在对其进行某种/某种程度的修改,使其接近您所需要的内容-请记住,我不懂Python:

import colorsys
from PIL import Image
im = Image.open(filename)
ld = im.load()
width, height = im.size
for y in range(height):
    for x in range(width):
        r,g,b = ld[x,y]
        h,s,v = colorsys.rgb_to_hsv(r/255., g/255., b/255.)

        if s>0.5:                     // <--- here onwards is my attempted Python
           ld[x,y] = (0,0,0)
        else:
           ld[x,y] = (255,255,255)
导入colorsys 从PIL导入图像 im=Image.open(文件名) ld=im.load() 宽度、高度=im尺寸 对于范围内的y(高度): 对于范围内的x(宽度): r、 g,b=ld[x,y] h、 s,v=colorsys.rgb_至hsv(r/255,g/255,b/255.)
如果s>0.5://那么现在我必须弄清楚如何使用pil,谢谢!任何人都可以帮我“翻译”成Python语言吗?:)我能看到Mark所做的和你所做的唯一区别是灰度转换。有不同的方法可以将rgb转换为灰色,50%(或128)的阈值适用于其中一种,但不适用于您使用的阈值。这里真正的解决方案不是改变灰度转换或阈值,使其适用于黄白图像,而是编写一个算法,搜索合适的阈值。一个例子是按颜色进行聚类,然后识别白色和黑色的聚类,并将它们全部涂黑。我仍然不知道任何Python,但我相信您应该能够将图像转换为
numpy
数组(无论是什么),然后使用,您可以将饱和值设置为50%,以获得我的第二个建议答案。感谢您的澄清@dvhamme。当你说“一个例子是按颜色进行聚类,然后识别白色和黑色的聚类,并将它们全部涂黑”时,你是说自适应阈值?