作者f496328mm (123)
看板Python
标题[心得] 验证码影像处理 灰度 去杂点 切割
时间Tue Sep 12 22:58:40 2017
先感谢这篇留言的大大
https://webptt.com/cn.aspx?n=bbs/Python/M.1504617371.A.CF2.html
给我一些关键字,之後我就靠着 google,做些修正,加入自己的想法,
以下范例是 台铁验证码
原始图
https://imgur.com/BVqh2hY
灰度&去杂点
https://imgur.com/TdeOWV0
分割成个别数字
https://imgur.com/OqaXK4q
https://imgur.com/e1pFLBd
https://imgur.com/DI2LTJs
https://imgur.com/bBag7rS
https://imgur.com/BEpv1io
如果有兴趣,code 我已经上传 github ,不懂可以再寄信给我
https://github.com/f496328mm/Verification_code_image
另外我想请问,影像处理还有什麽方法?除了我目前做的验证码之外
我目前在做 CIFAR-10 我用VGG,准确率都在0.8左右,
不知道要如何冲上0.9,甚至是0.95,
我只有做最基本的---除以255
我目前知道的方法有这些 不过详细并不清楚
基本影像处理(裁减、模糊、锐化)
影像分割(线、圆圈、斑点)
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.137.164.234
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1505228328.A.7F4.html
※ 编辑: f496328mm (220.137.164.234), 09/12/2017 23:09:49
2F:→ vi000246: 训练出来的成功率98% 但遇到相黏的字成功率为0 09/13 01:24
3F:→ vi000246: 应该说 单个字成功率98% 验证码成功率是0.98^6 09/13 01:33
黏住不好切 可能要试试别的方法 或是让DL学习 一次判断两个数字这样
4F:推 HenryLiKing: 还没点进code里面去看 09/13 07:17
5F:→ HenryLiKing: 但是请问一下你的分隔字是怎麽做到的呀? 09/13 07:17
https://imgur.com/TdeOWV0
灰度去杂点後
用 x 轴去切 只要是'白色' 就存入x座标
以上就会得到一串数列 举例来说 11,12,13...27,63,64...95,129,130...
可以看出来 11~27 是一个数字 63~95 是一个数字
这样就切出数字了
https://imgur.com/rv7z1Wl
像这样 之後 y 轴的切法也一样
6F:推 husky0427: 有用到opening和closing吗 09/13 09:07
没耶 这是什麽
7F:推 vi000246: 我能判断出相黏的数字位置 但要怎麽切就没想法了 09/13 13:39
9F:→ neil987: 至於切字 我有做切线相关的想法 不过还没实做 09/13 13:41
我没学过影像相关 想请问
open or close 这些可以帮助影像辨识吗? 为什麽? 是因为比较好抓边界吗?
另外有些人会做'去均值',为什麽这样会变好??
https://goo.gl/AQKk2N
我在做 CIFAR-10,目前已经将边框加大,
这样 filter 跟 pooling 才不会预测边界的问题,
原图
https://imgur.com/s4CdlgA
放大
https://imgur.com/LIGLcTs
不过结果没什麽变@@
--------------------------------------------
对影像做锐化or强化,可能会比较有帮助??上网找是说可以强化边缘位置,
cv2.dilate(im3, (2, 2), iterations=1)
验证码我是这样做
另外'模糊化'是只去杂点吗? 在验证码,我是先灰度->去杂点->强化
10F:推 HenryLiKing: 喔喔喔喔!我懂了 但是每张图的字位置不会一样吧(?) 09/13 18:40
11F:→ HenryLiKing: 这样会不会有点针对某张图分析呀 09/13 18:40
12F:→ HenryLiKing: open 是扩张 close 是收缩(我的理解啦xd 09/13 18:41
字的位置不一样没关系啊 最後都是切成正方形
就像下图 不管字在哪 切成这样後 再用DL去单独预测就好
https://imgur.com/OqaXK4q
13F:推 billy4195: 先推个 09/14 00:56
14F:推 laladeer: 去杂讯之後那个图很漂亮,直接dilate到一团,然後用fin 09/14 05:06
15F:→ laladeer: d contour找rect,不用自己数,比较简单比较快 09/14 05:06
不好意思 我还是初学者 可以请大大说清楚一点吗? 谢谢
※ 编辑: f496328mm (220.137.164.234), 09/14/2017 10:28:14
16F:推 neil987: findContour就是找轮廓 09/14 13:27
17F:推 neil987: 正确说是平滑化 是用来除杂讯的 但是相对代价是影像会变 09/14 13:37
18F:→ neil987: 模糊 09/14 13:37
19F:→ neil987: 参照 opencv blur 09/14 13:37
20F:推 neil987: 我发现我推文有点跳痛 我平滑化那边是讲模糊化这件事 09/14 13:54
喔喔 了解 用轮廓去辨识 正确性应该会比较高
※ 编辑: f496328mm (220.137.164.234), 09/14/2017 14:55:17
21F:推 Kazimir: 你是直接用vgg这些inference吗? 09/18 14:04
22F:→ Kazimir: 或许你人工做一些资料 再用VGG transferlearning ? 09/18 14:05