如何只加强黑/灰色,其它颜色不变

panghuhu250 2014-11-18 10:49:35

这样的图片,希望把字的笔画加强,但其它地方不变,该怎么处理?

指点方向即可,有用opencv的示例就更好。多谢了。
...全文
185 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
panghuhu250 2014-11-21
  • 打赏
  • 举报
回复
多谢了。#3像变魔术一样!初步接触图像处理,看着各种处理办法,就是不知道怎么把它们按正确次序组合起来。 谢谢你的例子,我再琢磨琢磨,学学处理的思路。
dianyancao 2014-11-21
  • 打赏
  • 举报
回复
可以分割出字符区域来做增强,根据字符和背景区域的对比度来分割字符
分割出字符区域后降低字符区域的亮度即可

1.灰度化原图像

2.根据字符笔画宽度和字符大小,设置邻域半径为1-20,对比度阈值为10,进行局部二值化

3.设置白色像素数阈值2,黑色像素数阈值7,进行连通域滤波

4.用模板{{1,2,1},{2,8,2},{1,2,1}}对分割出的字符低通滤波

5.将图像4.归一化到0-1之间,和原图像相乘,得到结果
panghuhu250 2014-11-19
  • 打赏
  • 举报
回复
引用 1 楼 ssbqrm 的回复:
加强的意思让灰色的像素变黑?
如果是这样,可以考虑把灰色的像素(rgb三个值差异不大,大于一定的值)的rgb值同时降低

多谢你的建议。这是我试验的结果。

Python+PIL的代码:


from PIL import Image
def adjust_img(img, threshhold, minlevel, maxlevel):
newimg = img.copy()
width, height = newimg.size
for i, px in enumerate(img.getdata()):
r,g,b = px

if all((mn < v < mx) for mn, v, mx in zip(minlevel, px, maxlevel)) and abs(r-g) < threshhold and abs(r-b)<threshhold and abs(g-b)<threshhold:
newimg.putpixel((i%width, i/width), (r/2, g/2, (b-30)/2))
return combine(img, newimg)

# put two images side by side for visual comparision
def combine(img1, img2):
w, h = img1.size
img = Image.new('RGB', (w, h*2))
img.paste(img1, (0,0))
img.paste(img2, (0, h))
return img

差不多最好的结果是用如下参数得到的:


img2 = adjust_img(img, 40, (0,0,0), (150, 150, 200))


结果如下:


看起来还行,如果进一步细化need_to_change中的条件,可能得到更好的结果。

主要问题在于上面的参数是我通过“猜测参数,检查处理的不好的pixel的值,修改参数..."这样的办法得到的,换一幅图,又不适用了。所以问题归结到:怎么改进need_to_change? 灰色和其它颜色的本质区别是什么?
ssbqrm 2014-11-19
  • 打赏
  • 举报
回复
加强的意思让灰色的像素变黑? 如果是这样,可以考虑把灰色的像素(rgb三个值差异不大,大于一定的值)的rgb值同时降低

4,444

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧