2018年8月28日 星期二

影像型能學運算 (Morphological Operations)



影像型能學運算 (Morphological Operations)

形態學主要用於二值化後的影像,根據使用者的目的,用來凸顯影像的形狀特徵,像邊界和連通區域等,同時像細化、像素化、修剪毛刺等技術也常用於圖像的預處理和後處理,
In short: A set of operations that process images based on shapes. Morphological operations apply a structuring element to an input image and generate an output image.

The most basic morphological operations are two: Erosion and Dilation. They have a wide array of uses, i.e. :


  1. Removing noise
  2. Isolation of individual elements and joining disparate elements in an image.
  3. Finding of intensity bumps or holes in an image



Dilation ==> 白色區域影像變胖

Left image: original image inverted, right image: resulting dilatation




Erosion  ==>  白色區域影像變瘦

Left image: original image inverted, right image: resulting erosion




Opening: 先Erosion再Dilation 可以將硬幣分離



Closing Dilation 再 Erosion







References:

  1. http://monkeycoding.com/?p=577
  2. http://blog.christianperone.com/2014/06/simple-and-effective-coin-segmentation-using-python-and-opencv/

2018年8月26日 星期日

HAAR Face Detection


Face Detection using Haar Cascades

利用 HAAR 分類器(包含不同的偵測dataSet), 用一個windw size 下, 不同Feature都有得到不同的分數.  再用不同window size, 再去掃,


整個演算法跑完之後, 顯示的這些不同矩形框,就是那些"疑似有人臉"出現的地方..








上課範例:

Haar-cascade Detection in OpenCV




2018年8月18日 星期六

18650電池




單顆充電電池(鎳氫電池)充飽電大概是1.2V
單顆18650電池(鋰電池)充飽電大概是4.2V (電壓掉到3.4~3.6v以下就要充電了)



18650 battery Size: 18mm x 65mm
18650電池的單顆電壓為3.7V,容量約為1000mAH左右 (以1000mA電流輸出能力持續1小時)


※電池電力尚未用至最低之前就充電,電池壽命將更長。
※將電池使用至低電量或完全沒電才進行充電,會造成新式鋰電池無法充電。
※電池金屬面積較小的一端為正極(+),較大的一端為負極(-)。


C是指 C 倍的放電效率




1C指的是在1小時內,可以把電池內全部的容量充飽或放光,而0.2C則因電流比較小,所以充電/放電的時間就是1/0.2 = 5小時了,換句話說2C的充/放電時間就是1/2 = 0.5小時了模型店使用的電池,由於需要大電流放電才能驅動馬達,所以幾C就很重要了,一般標稱8C,10C等,就是說電池有大電流放電的能力,基本上數值越大越好


2200mah 7.4V 3C
1300mah 7.4V 10C
第一組電池代表他放電電流是 2.2ax3=6.6a 的電流
第二組是 1.3ax10= 13a 的電流
容量來說,第一組比較大。可以用比較久 但是第二組可以放第一組二倍的電流





2018年8月11日 星期六

VS2017 設定Tesseract-OCR的編譯環境





Tesseract是一個光學字元識別引擎,支援多種作業系統。

[Include 目錄] (增加一項)


[程式庫目錄] 


[其他相依性] 


[C/C++ 前置處理器] 前置處理器定義






設定完成後, 執行上課範例, 可以看見原始影像為TAW-8686.jpg 然後看看Tesseract識別引擎的效果. 理論上"乾淨"的圖識別的效果應該100%正確!




但實際上取得的車牌影像不會如此乾淨, 車牌會有污點、影像對比度可能也不足(光線影響)、拍攝角度不對以及有其他的文字、符號等等., 都得再經過影像處理的手法重新把影像"惡搞"後,才能丟入OCR去做後續的文字分析識別


台灣的車牌


影像經過二值化處理,將原始影影像轉換成"黑白"影像, 至於Threshold value 怎麼選, 這就是學問所在啦~


若想要用自己的識別引擎去分析文字或一些特定的符號,也可以自己去訓練。訓練的方法可以用現在很夯的AI方法如Deep Learning  CNN來訓練模型,像是 MINST 手寫數字辨識 這種資料集(Data Set) 模型可以讓你識別出0~9的手寫數字。

不過在做真正的影像識別的應用,通常得經過一些影像處理的技巧, 例如進行二值化 (Thresholding)、閾值分析、影像去雜訊、影像模糊、影像強化、影像縮放、色彩空間轉換及影像切割等,才餵進到識別引擎,以獲得較高的辡別率。因此,對影像進行預處理,總是避免不了~



異質計算機結構



異質計算機結構? 
指的是用和CPU不同的計算裝置,例如使用顯示卡做計算的GPGPU運算, 目前常看的的API有CUDA、OpenCL等。

CUDA only for nVidia

OpenCL is a generic graphic computing , it can be used for AMD GPU, nVidia,...


From Wiki:

https://zh.wikipedia.org/wiki/OpenCL

OpenCLOpen Computing Language,開放計算語言)是一個為異構平台編寫程式的框架,此異構平台可由CPUGPUDSPFPGA或其他類型的處理器與硬體加速器所組成。OpenCL由一門用於編寫kernels(在OpenCL裝置上執行的函式)的語言(基於C99)和一組用於定義並控制平台的API組成。OpenCL提供了基於任務分割和資料分割的平行計算機制。

http://www.ittraining.com.tw/ittraining/index.php/course/hardware/fpga


2018年6月26日 星期二

Invalid MIT-MAGIC-COOKIE-1 ??



python3 tkui.py 直接執行可以..但是無法在開機時自動執行, 原因是執行X Window應用程式(X X Client),若要能連接到X Server 時, X Client 必須要提供兩個設置


  1. 設置遠端 XServer  DISPLAY 環境變數。
    export DISPLAY=:0.0
  2. 能讀到 Xauthority下的cookie檔 ( 位在每個user 的HOME目錄的.Xauthority 目錄)
    export XAUTHORITY=/home/<YOUR-USER-NAME>/.Xauthority


通常用自己登入帳號去執行X Client 程式沒有問題, 但若不是或經由 sudo 去執行,則必須設定  Xauthority的位置.


用pi 帳戶, 執行 python3 tkui.py 沒有問, 但是用 sudo python3 tkui.py 會出現錯誤

例如:

pi@raspberrypi:~ $ sudo python3 tkui.py
Invalid MIT-MAGIC-COOKIE-1 keyInvalid MIT-MAGIC-COOKIE-1 keyTraceback (most recent call last):
  File "tkui.py", line 16, in <module>
    win=Tk.Tk()
  File "/usr/lib/python3.5/tkinter/__init__.py", line 1880, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: couldn't connect to display ":0.0"



解決方式: 

pi@raspberrypi:~ $ export XAUTHORITY=/home/pi/.Xauthority
pi@raspberrypi:~ $ sudo python3 tkui.py   ==> 能正常執行,因為能找到Xauthority 檔案



References:

https://iwf1.com/quick-fix-invalid-mit-magic-cookie-1-sudo

2018年6月24日 星期日

使用pyserial讀取Serial資料










Trouble Shooting


 pip3 install pyserial

Traceback (most recent call last):
  File "serial.py", line 1, in <module>
    import serial
  File "/home/pi/serial.py", line 3, in <module>
    port = serial.Serial("/dev/ttyUSB0", baudrate=9600, timeout=3.0)
AttributeError: module 'serial' has no attribute 'Serial'

解法:  pip3 uninstall serial

>>> import serial
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: bad magic number in 'serial': b'\x03\xf3\r\n'

解法:  find . -name \*.pyc -delete




https://goo.gl/EcCcj7