軟體

什麼是機器視覺軟體 ?

Machine Vision Software

在說明機器視覺軟體之前,得先提一下什麼是軟體。

什麼是軟體 ?

軟體 (Software) 泛指所有用邏輯順序對電腦下指令或儲存資料內容的一切集合。有各式各樣的呈現方式,例如程式語言屬於軟體,作業系統屬於軟體,各種應用程式也屬於軟體;電腦是軟體的載體,此電腦兩個字並不狹隘於我們俗稱的 PC,凡有計算能力的東西都可以稱做電腦,例如在工控領域常見的 PLC 也算是電腦,讓 PLC 執行動作所撰寫的階梯圖就是所謂的軟體,而撰寫階梯圖的工具也是一種軟體。

 


專業分工

人類的科技是一直在累積與進步的,因此這個世界存在高度的專業分工,人與人或公司與公司很難獨力完成所有的事情,而是互相合作。從最簡單的例子來說,如您執掌的是一家機器設備製造公司,為了打造一部機台,不會想把所有的設備設計工序都從原始材料開始,例如鐵、鋁、銅、塑膠,而是選購適合的馬達、軸承、滑軌、氣缸、電磁閥等等標準工控零件,配合客製化的鈑件及切削件排列組合而成,掌握的核心關鍵在於知道怎麼進行整合設計使得機器最終的動作、行為、精度符合客戶需要,而不是知道如何製作這些零件。

 

軟體開發也是,因為終端應用往往是複雜且需要客製化的,故許多軟體產品不直接呈現我們接觸到的終端應用的樣子,而是像樂高積木一樣,只因應過程而生,我們稱它作開發工具。例如函示庫,英文名稱叫做 Library,Library 也是開發工具軟體的一種,軟體開發者拿 Library 中的模組功能,就像拼湊樂高積木一樣,將各種元件排列組合成為自己的創作作品,關鍵在於選擇適合的原件進行整合設計,使得應用軟體的動作、行為表現符合客戶需要,而不是知道如何製作這些原件。

 


什麼是機器視覺軟體 ?

在機器視覺領域,為了達到工控或自動化常見的各種終端應用,會將機器視覺所服務的行為粗分成量測、定位、檢測、識別四大類型,依應用複雜度的不同,四種行為可能單獨使用或混合使用。

  • 量測: 獲得物件的長、寬、角度、面積等等量化的幾何尺寸數值,以進行後續之公差篩選。
  • 定位: 獲得物件的位置、方向、輪廓範圍,以進一步抓取物件或用機器手臂導引加工等等。
  • 檢測: 分析表面形貌,得知物件有無缺陷或缺陷所在位置。
  • 識別: 讀取物件形體、讀取條碼、讀取文字圖型,以進行生產記錄或進一步選別物件。

從相機拍攝到影像開始,到完成量測、定位、檢測、識別四大服務類型的過程中,會需要各式各樣的演算法來支持,否則難以實現。

就好像買 Office、防毒軟體那樣,直接針對這個案子需求購買一套訂製的套裝軟體,購買前確認能達到功能、驗收、付錢,不就好了?
機器視覺領域屬高度客製化的行業,套裝軟體很難一開始就猜中使用者要做的是什麼,即使做到了,在這個案子成功了,很少能原封不動移植給別的案子,仍然需要大幅度的修改,因此發展到最後就會做成工具模組的樣子。同樣的,機器視覺也是高度專業分工的行業,就如同我們前面所論述的一樣,開發機器視覺應用的團隊鮮少會把所有功能都從最基礎的開始,用加減乘除、開根號、次方、三角函數、矩陣、迴圈、資料結構一板一眼的刻畫出來,因為這樣太花費時間了。

機器視覺軟體常以開發套件或函示庫 (Library) 的形式呈現,這些開發套件會內涵影像處理、Blob 分析、輪廓分析、1D/2D/3D 量測、深度學習等等的演算法模組,供負責機器設備的視覺軟體開發者快速引用其功能,加以整合,創作出終端應用


機器視覺軟體在設備產業中的定位與價值

由於軟體相對於硬體是比較抽象、難以理解的。特在此強調,機器視覺軟體是工具,而不是應用程式,購買、安裝一套機器視覺軟體,並不能直接帶來讓您的專案應用實現的價值,您還是需要培養軟體開發團隊或與之協同合作,才能實現專案。那麼,機器視覺軟體基於它是一套工具的定位角色,在設備產業中,主要呈現以下價值。

  • 縮短開發時程、減少開發人力成本: 因為開發機器視覺工具的軟體公司長期在全世界的應用中打滾、吸收用戶的反饋,因應市場需要彙整出各種實用工具,只要新專案需要類似的演算法就能隨時彈性取用,減少重工。
  • 模組一致性: 如同您跟一家精密滑軌公司採購零件模組,需要每次採購的零件精度都能保證結果及一致性。如果開發團隊不將軟體工具模組化,而是從原始的加減乘除開始撰寫程式,到完成專案的過中間有太多的變數,即使是類似的任務,也很難保證每個人寫出來的結果都有相同品質。所以軟體開發必然要導入工具模組化,雖不能將變數消除到零,但能夠大幅減少變數風險;由於工具模組化需要高昂的管理成本,機器視覺軟體公司在工具模組的版本控制上幫您做到了這件事。
  • 計算效率: 經過商業化的工具模組因不斷的優化、援引各種可能的加速手段,它不是臨時寫出來的,而是一代一代的版本淬煉,計算效率比臨時從原始的加減乘除開始刻出演算法快得多,甚至也比免費的 Open Source (基於研究、教育等理由而免費分享開放程式碼供人使用的軟體) 快得多。計算效率這件事即使不是直接影響,您用了速度較慢優化較差的軟體來設計機台,逐漸累積之下最後也會間接影響機台產出效益。
  • 技術服務: 基於專業分工原則,當使用中遇到問題或針對嶄新應用現行工具找不到對策,機器視覺軟體公司都是值得信賴的合作對象,不至於像土法煉鋼寫的演算法需要高昂的傳承、維護成本,不至於像 Open Source 僅只於分享,但遇到問題求助無門;並且,這些意見反饋都會成為將來正向成長的養分,取得雙贏。

 


使用相同的機器視覺軟體就能完全仿造專案嗎 ?

這個議題在於,若有競爭對手使用跟您相同的機器視覺軟體,對手是否就能做跟您相同的機台而馬上搶走您在客戶端耕耘許久的生意 ?
這個問題範圍過大,我們稍微縮小一下問題範圍。改成若有人使用跟您相同的機器視覺軟體,他是否就能馬上做出跟您一模一樣的辨識功能 ? 這個答案顯而易見,不一定。

我們前面已經很清楚的論述,基於機器視覺軟體是工具模組這樣的定位價值,您有看過買相同的馬達相同的氣缸,而能做出完全相同的機台設備嗎 ? 如同樂高積木大家都可以買來玩,但有的人做得出令人激賞的藝術成品,有的人只能做出基本的造型。

 

最後,能否達成專案應用,仍然要對需求的深刻理解、對任務的具體拆解,以及靠整合功力加以實現。
一套好用的機器視覺軟體,能幫助的地方在於易於上手,適時起到輔助的作用,那就會您專案上可靠且值得信賴的優良夥伴。