基于模式匹配的PCB基準標記檢測
點擊下方“AI算法與圖像處理”,一起進步!
重磅干貨,第一時間送達

為什么PCB需要基準標記?
預(yù)處理


#?創(chuàng)建一個合成基準圖像
??pattern_sizeHW?=?[args.fiducialOuterDiameterInPixels,?args.fiducialOuterDiameterInPixels]
??if?args.fiducialOuterDiameterInPixels?%2?==?0:??#?確保圖案大小是奇數(shù)
??????pattern_sizeHW[0]?+=?1
??????pattern_sizeHW[1]?+=?1
??fiducial_pattern?=?np.zeros(pattern_sizeHW,?dtype=np.uint8)
??cv2.circle(fiducial_pattern,?(pattern_sizeHW[1]//2,?pattern_sizeHW[0]//2),?args.fiducialOuterDiameterInPixels//2,?70,?cv2.FILLED)??#?外層是深灰色
??cv2.circle(fiducial_pattern,?(pattern_sizeHW[1]//2,?pattern_sizeHW[0]//2),?args.fiducialInnerDiameterInPixels//2,?255,?cv2.FILLED)??#?內(nèi)部是白色的
??#?標準化模式圖像
??standardized_fiducial_pattern?=?(fiducial_pattern.astype(np.float32)?-?fiducial_pattern.mean())/fiducial_pattern.std()

模式匹配
#?模式匹配
match_img?=?cv2.matchTemplate(grayscale_img.astype(np.float32),?standardized_fiducial_pattern,?cv2.TM_CCOEFF_NORMED)
#?用于可視化,填充0以獲得與原始圖像相同大小的圖像
padded_match_8bits_img?=?np.zeros((img_shapeHWC[0],?img_shapeHWC[1]),?dtype=np.uint8)
padded_match_8bits_img[fiducial_pattern.shape[0]//2:?fiducial_pattern.shape[0]//2?+?match_img.shape[0],
????fiducial_pattern.shape[1]//2:?fiducial_pattern.shape[1]//2?+?match_img.shape[1]]?=?(128?*?(match_img?+?1.0)).astype(np.uint8)

#?找到最優(yōu)閾值,以檢測預(yù)期的基準數(shù)
blob_detector?=?blob_analysis.BinaryBlobDetector()
optimal_threshold?=?None
optimal_seedPoint_boundingBox_list?=?None
optimal_annotated_blobs_img?=?None
for?threshold?in?range(255,?1,?-1):
????_,?thresholded_img?=?cv2.threshold(padded_match_8bits_img,?threshold,?255,?cv2.THRESH_BINARY)
????#?計算blobs的數(shù)量
????seedPoint_boundingBox_list,?annotated_blobs_img?=?blob_detector.DetectBlobs(thresholded_img)
????logging.info("threshold?=?{};?len(seedPoint_boundingBox_list)?=?{}".format(threshold,?len(seedPoint_boundingBox_list)?))
????if?len(seedPoint_boundingBox_list)?>=?args.numberOfFiducials:
????????optimal_threshold?=?threshold
????????optimal_seedPoint_boundingBox_list?=?seedPoint_boundingBox_list
????????optimal_annotated_blobs_img?=?annotated_blobs_img
????????break
logging.info("The?optimal?match?threshold?is?{}.?The?number?of?found?blobs?is?{}".format(optimal_threshold,?len(optimal_seedPoint_boundingBox_list)))

變換矩陣的計算

交流群
歡迎加入公眾號讀者群一起和同行交流,目前有美顏、三維視覺、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群
個人微信(如果沒有備注不拉群!) 請注明:地區(qū)+學校/企業(yè)+研究方向+昵稱
下載1:何愷明頂會分享
在「AI算法與圖像處理」公眾號后臺回復(fù):何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結(jié)分析
下載2:終身受益的編程指南:Google編程風格指南
在「AI算法與圖像處理」公眾號后臺回復(fù):c++,即可下載。歷經(jīng)十年考驗,最權(quán)威的編程規(guī)范!
下載3 CVPR2021 在「AI算法與圖像處理」公眾號后臺回復(fù):CVPR,即可下載1467篇CVPR?2020論文 和 CVPR 2021 最新論文

評論
圖片
表情
