網路城邦
上一篇 回創作列表 下一篇  字體:
如何將螺絲釘影像快速轉正?
2021/08/10 14:36:19瀏覽911|回應0|推薦8

看到這種影像也能辨識成功,即使是一個月前的我自己都會覺得很神奇?這確實是個艱鉅的工程,但是正如愚公移山,一步一步地推進,終於還是可以達到目的的!我不會說這個過程中有甚麼神祕神奇的創新演算法?就是人眼視覺常識的精準翻譯而已!人眼可以辨識的話,一定有合理的邏輯可以依循,只是需要解析的認知過程,需要寫的程式真的很多!

首先是找到最適當的灰階策略,既然是用紅光拍的,當然就是取紅光了!

接著是二值化,如果使用的策略洽當就可以做成上面的程度,雜訊那麼少就是我使用了一些AI技術了!具體的說是:顏色變化相對較小的區域,我以貝氏定理的機率統計方式壓低了它們出現為前景黑色區塊的機率!這些技術有點複雜,絕對不是你可以在書上找到的,但是已經用在我的車牌辨識核心上了,所以我沒在此花掉很多時間。

但是如何才能將影像上的字元盡量轉成水平呢?這不像車牌辨識,正常拍攝的車牌傾斜頂多45度,這種影像是360度的任何角度都有可能的!總不能每個目標都一一旋轉360度,辨識360次看看哪個角度能辨識出最佳字元吧?那一定會速度慢到讓人抓狂!

我用的方法如果小氣一點就可以當作商業機密了!甚至申請個專利讓你自己想出一樣的方法時都不准用!要付錢給我,你才能用你自己想出來的方法?這就是我不想申請專利的原因!其實各種演算法隨時都在我的日常研究中如跑馬燈一樣在轉,其他聰明的研發者應該也是一樣,何必做這種討人厭的事情呢?

其實影像辨識有點像打球運動,即使戴資穎詳細解說她的絕招,你還是無法像她打得一樣好的!因為細節太多了,給你知道一兩個關鍵又怎麼樣?你要複製她的球技還是非常非常困難的!只是會比沒人指導進步快一點而已,我在此部落格就是想做這種事情!

看到上圖的綠色水平線了嗎?對比前面的一張未旋轉的二值化圖,你看出了甚麼東西?是不是當字元都轉正呈水平時,會有最大比例的綠線「切空」?所以我可以用二分逼近法的概念,先轉幾個間隔較大的角度,找到切空綠線較多的那個角度,再以該角度為中心搜尋最佳角度,我的程式只用十幾毫秒就可以找到最佳角度,再用10毫秒將圖完整轉正就搞定了!

當然故事不會那麼簡單,還有很多細節必須處理,譬如上面的案例,人眼是看得很清楚四字加上二字,但是細看其實有十幾個破碎的目標,但是因為已知是兩行水平分布的字元,所以此時要「融合」它們成為合理的字元只要考慮水平方向是否重疊?是不是大致再同一行的高度?即可,每個字的上下邊可以強制為相同,那即使字元破碎一點也不怕了!

當然這些人腦可以輕鬆處理的邏輯,還是費了我一天半的時間才寫成一樣功能的程式碼,大概有五六百行吧?錢不是那麼好賺的!也再度證明了,以自己的眼睛大腦為師是一定可行的方向!你不需要依賴CNNMLDL也一定可以像我一樣做出非常AI的影像辨識軟體!事實上會比使用那些技術更快做好,辨識率更好,執行速度也越快!完勝就對了啦!

( 心情隨筆工作職場 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=yccsonar&aid=166321161