劉雅
摘要: 傳統(tǒng)的中藥都是通過(guò)熬制成為湯劑進(jìn)行服用,雖然中藥湯劑可以將中藥效果更好地發(fā)揮出來(lái),但是多數(shù)中藥味苦澀口,難以服用,同時(shí)在攜帶等方面都存在較多弊端。因此,中藥顆粒應(yīng)運(yùn)而生。顆粒狀藥品生產(chǎn)過(guò)程中,難以避免地存在表面污點(diǎn)、糖衣顏色不一、皺紋、邊緣缺損、碎裂等各種不同的缺陷,中藥顆粒的檢測(cè)及質(zhì)量控制就顯得非常重要。本文建立基于python的中藥顆粒表面缺陷檢測(cè)算法,可用于顆粒狀中藥的批量快速缺陷檢測(cè),大大提高檢測(cè)效率。
關(guān)鍵詞: 中藥顆粒;表面缺陷;python;算法設(shè)計(jì)
中圖分類號(hào): TP3-4?? ?文獻(xiàn)標(biāo)識(shí)碼: A?? ?文章編號(hào): 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
中藥顆粒的質(zhì)量與生產(chǎn)、運(yùn)輸、儲(chǔ)藏等都有著密切的聯(lián)系,在臨床上其實(shí)對(duì)中藥顆粒的質(zhì)量檢測(cè)并沒(méi)有嚴(yán)格的要求。但是,近年來(lái)隨著國(guó)家對(duì)中醫(yī)藥產(chǎn)業(yè)的重視和大力扶持,我國(guó)中藥行業(yè)的發(fā)展速度驚人。中藥顆粒作為效果好、儲(chǔ)存和攜帶方便的中醫(yī)藥制劑,迅速成為人們治療過(guò)程中常用的藥物劑型之一。而中藥顆粒劑生產(chǎn)過(guò)程中,難以避免地存在表面污點(diǎn)、糖衣顏色不一、皺紋、邊緣缺損、碎裂等各種不同的缺陷,嚴(yán)重影響中藥顆粒劑產(chǎn)品的質(zhì)量和外觀形象,使得中藥顆粒表面缺陷逐漸引起了業(yè)內(nèi)外的普遍重視。因此,加大中醫(yī)藥顆粒檢測(cè),減少缺陷產(chǎn)品,提升中藥顆粒劑產(chǎn)品質(zhì)量和形象勢(shì)在必行。作為一款面向?qū)ο蟮慕忉屝陀?jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,Python具有豐富和強(qiáng)大的庫(kù),語(yǔ)法簡(jiǎn)潔清晰、通用性好。利用Python對(duì)中藥顆粒的表面缺陷檢測(cè)方法進(jìn)行編寫示范,有較強(qiáng)的借鑒作用和應(yīng)用價(jià)值。
本文以橢圓形顆粒狀中藥為例,采用Python編寫的邊緣缺陷檢測(cè)算法設(shè)計(jì)過(guò)程如下:
# findContours函數(shù)查找圖像里的圖形輪廓
# 函數(shù)參數(shù)thresh是圖像對(duì)象
# 層次類型,參數(shù)cv2.RETR_EXTERNAL是獲取最外層輪廓,cv2.RETR_TREE是獲取輪廓的整體結(jié)構(gòu)
# 輪廓逼近方法
# 輸出的返回值,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) # 計(jì)算最小面積矩形的坐標(biāo)
box = np.int0(box) # 將坐標(biāo)規(guī)范化為整數(shù)
cv2.drawContours(img, [box], 0, (0, 0, 255), 3) # 繪制矩形
M = cv2.moments(c) # 實(shí)際物體面積
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(\\'無(wú)缺陷\\')
else:
print(\\'有缺陷\\')
中藥顆粒的形狀為橢圓,通過(guò)計(jì)算分割出的藥片的面積大小及其輪廓?jiǎng)?chuàng)建的橢圓。如果是正常中藥顆粒,其形狀為橢圓,根據(jù)其輪廓?jiǎng)?chuàng)建的橢圓與藥片形狀近似完全重合;如果中藥顆粒有缺陷,根據(jù)其輪廓?jiǎng)?chuàng)建的橢圓與藥片形狀有較大偏差。所以我們根據(jù)藥片的面積和橢圓的面積的差值就可以判斷藥片是否存在缺陷。此外,根據(jù)完整中藥顆粒創(chuàng)建的橢圓,其長(zhǎng)軸和短軸滿足一定的差值關(guān)系,所以根據(jù)藥片創(chuàng)建的橢圓長(zhǎng)軸短軸關(guān)系進(jìn)行判斷,也可找出有缺陷的中藥顆粒。綜合考慮面積關(guān)系和長(zhǎng)短軸關(guān)系,可以得到非常好的缺陷判斷模型。
總結(jié):中藥顆粒的發(fā)展,有利于中醫(yī)藥事業(yè)的發(fā)展,更有利于公眾的健康維護(hù)。在中藥顆粒發(fā)展壯大的路上,我們?cè)谧⒅財(cái)?shù)量的同時(shí),更應(yīng)注重產(chǎn)品質(zhì)量。基于Python的中藥顆粒表面缺陷檢測(cè)技術(shù),可以幫助企業(yè)更快速地篩選掉有缺陷的產(chǎn)品,提高生產(chǎn)效率的同時(shí),還能夠提高中藥顆粒劑產(chǎn)品質(zhì)量與外在形象。
參考文獻(xiàn):
[1]付紅偉,陳鋒,程松,吳笛. 醫(yī)學(xué)圖像的計(jì)算機(jī)處理——邊緣檢測(cè)[J]//軟件導(dǎo)刊.2011(1):172-173.
[2]劉萍. 基于圖像的產(chǎn)品缺陷特征提取方法[J].西安工業(yè)大學(xué)學(xué)報(bào),2012, (9):707-708.