2015年11月10日 星期二

how to extract hand drawn figures from photos

當你用手機拍照手畫圖案時,常常會因為採光關係,出現深淺不一色調,如左圖所示。這時若用photoshop之類的影像處理軟體,其提供的單一臨界值調整(threshold adjustment)工具,很難單獨萃取手畫圖案出來。


若會python程式,建議改用opencv套件提供的adaptiveThreshold方法,可自動調整臨界值,萃取手畫圖案。經適當調整參數,發現效果不錯,如右圖所示。其程式寫法如下:
       去處圖destin = adaptiveThreshold(src來源圖, maxValue像素最大值, 
                adaptiveMethod自動調整法, thresholdType臨界值套用法,
                blockSize參考方塊邊長_像素為單位, C方塊內像素加權和扣掉常數值當成臨界值)
        --
        import cv2
        import matplotlib.pyplot as plt
        %matplotlib inline

        input = 'c:/path/source.jpg'
        output = 'c:/path/destin.jpg'
        img = cv2.imread(input,0)
        img = cv2.medianBlur(img,5)
        newimg = cv2.adaptiveThreshold(img, 255,\
            cv2.ADAPTIVE_THRESH_GAUSSIAN_C,  cv2.THRESH_BINARY, \
            11, 10)
        cv2.imwrite( output, newimg )

沒有留言: