劉雅
摘要: 傳統的中藥都是通過熬制成為湯劑進行服用,雖然中藥湯劑可以將中藥效果更好地發揮出來,但是多數中藥味苦澀口,難以服用,同時在攜帶等方面都存在較多弊端。因此,中藥顆粒應運而生。顆粒狀藥品生產過程中,難以避免地存在表面污點、糖衣顏色不一、皺紋、邊緣缺損、碎裂等各種不同的缺陷,中藥顆粒的檢測及質量控制就顯得非常重要。本文建立基于python的中藥顆粒表面缺陷檢測算法,可用于顆粒狀中藥的批量快速缺陷檢測,大大提高檢測效率。
關鍵詞: 中藥顆粒;表面缺陷;python;算法設計
中圖分類號: TP3-4?? ?文獻標識碼: A?? ?文章編號: 1672-9129(2018)09-0087-01
Abstract: Traditional Chinese medicines are made by using medlar as a decoction. Although traditional Chinese medicine decoction can better exert the effect of traditional Chinese medicine, most traditional Chinese Medicines are bitter and difficult to take, and there are many disadvantages in carrying. Therefore, Chinese Medicine granules came into being. In the production process of granular drugs, various defects such as surface stains, different colors of sugar coatings, wrinkles, edge defects and chipping are inevitable. The detection and quality control of Traditional Chinese Medicine granules is very important. This paper establishes a python-based Chinese Medicine granules surface defect detection algorithm, which can be used for batch rapid defect detection of Chinese Medicine granules, which greatly improves the detection efficiency.
Key words: ?traditional Chinese Medicine granule;surface defects;python;algorithm design
中藥顆粒的質量與生產、運輸、儲藏等都有著密切的聯系,在臨床上其實對中藥顆粒的質量檢測并沒有嚴格的要求。但是,近年來隨著國家對中醫藥產業的重視和大力扶持,我國中藥行業的發展速度驚人。中藥顆粒作為效果好、儲存和攜帶方便的中醫藥制劑,迅速成為人們治療過程中常用的藥物劑型之一。而中藥顆粒劑生產過程中,難以避免地存在表面污點、糖衣顏色不一、皺紋、邊緣缺損、碎裂等各種不同的缺陷,嚴重影響中藥顆粒劑產品的質量和外觀形象,使得中藥顆粒表面缺陷逐漸引起了業內外的普遍重視。因此,加大中醫藥顆粒檢測,減少缺陷產品,提升中藥顆粒劑產品質量和形象勢在必行。作為一款面向對象的解釋型計算機程序設計語言,Python具有豐富和強大的庫,語法簡潔清晰、通用性好。利用Python對中藥顆粒的表面缺陷檢測方法進行編寫示范,有較強的借鑒作用和應用價值。
本文以橢圓形顆粒狀中藥為例,采用Python編寫的邊緣缺陷檢測算法設計過程如下:
# findContours函數查找圖像里的圖形輪廓
# 函數參數thresh是圖像對象
# 層次類型,參數cv2.RETR_EXTERNAL是獲取最外層輪廓,cv2.RETR_TREE是獲取輪廓的整體結構
# 輪廓逼近方法
# 輸出的返回值,image是原圖像、contours是圖像的輪廓、hier是層次類型
image, contours, hier = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
x, y, w, h = cv2.boundingRect(c)
if w*h>5000 and w*h <8000:
rect = cv2.minAreaRect(c)
box = cv2.boxPoints(rect) # 計算最小面積矩形的坐標
box = np.int0(box) # 將坐標規范化為整數
cv2.drawContours(img, [box], 0, (0, 0, 255), 3) # 繪制矩形
M = cv2.moments(c) # 實際物體面積
area = M[\\'m00\\']
#print(\\'area:\\', area)
ellipse = cv2.fitEllipse(c) # 橢圓面積
cv2.ellipse(img, ellipse, (255, 0, 0), -1)
# # print(w*h)
# cx = M[\\'m10\\']/M[\\'m00\\'] # # 中心
# cy = M[\\'m01\\']/M[\\'m00\\']
ellipse_area = np.pi*ellipse[1][0]*ellipse[1][1]/4
#print(ellipse_area)
if np.abs(ellipse_area-area)<40 and np.abs(ellipse[1][0]-ellipse[1][1])>25: # 判斷
print(\\'無缺陷\\')
else:
print(\\'有缺陷\\')
中藥顆粒的形狀為橢圓,通過計算分割出的藥片的面積大小及其輪廓創建的橢圓。如果是正常中藥顆粒,其形狀為橢圓,根據其輪廓創建的橢圓與藥片形狀近似完全重合;如果中藥顆粒有缺陷,根據其輪廓創建的橢圓與藥片形狀有較大偏差。所以我們根據藥片的面積和橢圓的面積的差值就可以判斷藥片是否存在缺陷。此外,根據完整中藥顆粒創建的橢圓,其長軸和短軸滿足一定的差值關系,所以根據藥片創建的橢圓長軸短軸關系進行判斷,也可找出有缺陷的中藥顆粒。綜合考慮面積關系和長短軸關系,可以得到非常好的缺陷判斷模型。
總結:中藥顆粒的發展,有利于中醫藥事業的發展,更有利于公眾的健康維護。在中藥顆粒發展壯大的路上,我們在注重數量的同時,更應注重產品質量。基于Python的中藥顆粒表面缺陷檢測技術,可以幫助企業更快速地篩選掉有缺陷的產品,提高生產效率的同時,還能夠提高中藥顆粒劑產品質量與外在形象。
參考文獻:
[1]付紅偉,陳鋒,程松,吳笛. 醫學圖像的計算機處理——邊緣檢測[J]//軟件導刊.2011(1):172-173.
[2]劉萍. 基于圖像的產品缺陷特征提取方法[J].西安工業大學學報,2012, (9):707-708.