?

掛面精計量過程中掛面根數計數研究

2022-06-30 11:52李昆祥王志山付俊輝徐雪萌孫智聰賈世豪
糧食加工 2022年3期
關鍵詞:掛面像素點算子

李昆祥,王志山,付俊輝,徐雪萌,孫智聰,賈世豪

(1.河南工業大學機電工程學院,鄭州 450001;2.登封市啟明軒程控設備有限公司,河南 登封 452470)

掛面計量是掛面包裝中的一道重要工序,計量的速度往往影響著整個包裝過程的速度。據調研,目前市面上掛面的計量方式主要采用稱重式計量,稱重式計量又分為人工稱量和機器自動稱量。人工稱量,工人拿取掛面放到計量秤上,根據目標重量值進行增減操作。機器自動稱量的方法主要是二次給料方式,即粗加料和細加料。一般粗加料加到目標重量的80%~90%,不足的部分由細加料補充,直至達到目標重量值。

在稱重計量過程中,掛面對秤體的沖擊,會對計量的速度和精度造成影響。譚鵬飛[1]指出下料沖擊、秤體的震動以及存留于空中的物料等因素會帶來稱重誤差,采用高精度的稱重模塊可使以上誤差得以克服。付君等[2]指出稱量法的計量精度受到“落差”影響,由物料落料口與稱量裝置之間高度差所引起的計量誤差稱為“落差”,設計了伸縮板大大減少了“落差”引起的誤差。蘇俊明等[3]通過分析兩級給料切換點對包裝機包裝精度和速度的影響,提出了兩級給料切換點最優取值的計算方法。稱重式計量由于稱重傳感器的滯后特性,在計量速度和精度上存在制約關系,精加料速度快時,由于空中物料增多,計量誤差會變大,計量精度限制著計量速度。

根據國家質量監督檢驗檢疫總局 《定量包裝商品計量監督管理辦法》[4],對于2.5 kg規格的掛面定量包裝,允許短缺量為1.5%,即37.5 g。但是根據行業規定,計量誤差默認為±5 g。單根掛面質量約為0.6 g,也就是說,對這種掛面計數計量誤差在8根以內即符合規定,應用基于圖像處理的掛面根數計數技術則可以使得計量誤差符合規定。計數計量的方法不必考慮稱重傳感器的滯后特性,使得計量速度擺脫計量精度的限制。計數計量為掛面的計量提供了一種新思路和創新方法。對掛面包裝發展而言,掛面包裝設備需要與一些新興技術結合并創新,從而推動掛面包裝設備行業整體創新升級。本文即研究基于圖像處理掛面計數,為高速計量提供技術基礎。

1 計數系統設計

整個計量過程分為粗計量和精計量,首先進行粗計量使其逼近目標重量值,然后進行精計量,根據“缺多少補多少”的原則,把缺少的重量換算成掛面根數,以根數為單位進行精確計量。

掛面計數系統主要由計算機、工業相機、存料槽和可調支架等組成。其中軟件系統以Python語言編寫,以Pycharm為開發環境,軟件版本為PyCharm Community Edition 2020。OpenCV是以Python開發的開源計算機視覺庫,在圖像處理和計算機視覺方面廣泛應用,在計算機視覺的物體計數領域應用也十分廣泛。本文借助OpenCV開源庫實現基于距離變換的自動計數系統。系統構成如圖1所示。

圖1 掛面計數系統

本文采用的方法為:對采集到的圖像進行預處理,使用OTSU算法[5]進行二值化處理,運用全局閾值完成圖像分割;對圖像運用開運算進行濾波處理以去除圖像中孤立的小點和毛刺;通過距離變換解決粘連問題;邊緣檢測求取連通域;當仍然存在一部分粘連時,提取連通域周長信息,即連通域周長除以單個標準周長得到粘連部分掛面數量,最后基于連通域方法進行計數。

2 掛面計數過程與方法

2.1 圖像預處理

圖像預處理的目的是為了消除圖像中無關的信息,減少干擾,恢復真實的目標信息,方便后續的圖像處理[6]。常用的預處理方法有:灰度化、二值化、形態學操作等。

2.1.1 圖像灰度化

灰度化處理主要是為了減少對圖像處理過程中的運算量,這樣能極大地提高運算的效率,提升整體的運行速度。因為采集到的圖像為彩色RGB圖像,所以需要進行灰度化處理。

圖像灰度化的原理就是在RGB模型中,由于三個通道的值不相等,需要用統一的灰度值表征該點的亮度,灰度值的范圍是0到255,一共有256級灰度值[7]。圖像灰度化的方法主要有平均值法、加權平均法和最大值法,由于平均值法和最大值法在灰度化時的效果較加權平均法效果較差,所以本文采用加權平均法。

加權平均法RGB灰度化的公式為:

OpenCV提供了灰度化函數cv2.cvtColor(input_img,flat),其中的兩個參數input_img和flat分別表示要處理的灰度圖像和轉換類型。對于RGB→灰度轉換,本文使用轉換類型cv2.COLOR_BGR2GRAY實現。圖2和圖3分別為灰度化處理前后的對比圖:

圖2 原始圖像

圖3 灰度圖像

2.1.2 圖像二值化

圖像的二值化處理就是把圖像上每一像素點的灰度值變為0或255,使得整幅圖像表現出明顯的黑白效果,其中0表示黑色,255表示白色[8]。即將具有256個亮度等級的灰度圖像通過適當的閾值選取而獲得仍然可以反映圖像整體和局部特征的二值化圖像[9]。這樣有利于在對圖像做進一步處理時,圖像的性質只與像素值為0或255的點的位置有關,不再涉及像素的多級值,使處理變得簡單。一個像素點在灰度化之后的灰度值怎么轉化為0或者255,這涉及到閾值選取的問題。

閾值選取一般分為全局閾值和局部閾值,全局閾值指的是整幅圖像使用單一的閾值。全局閾值處理的實現方式比較簡單,只需對圖像像素逐個進行掃描,按其灰度值大于或小于設定的閾值,把像素相應地標記為目標或背景即可實現圖像分割,即灰度值大于閾值的像素設為255,小于或等于閾值的像素設為0??梢杂孟率奖硎荆?/p>

其中,I(x,y)表示第x行、第y列像素的灰度值;0(x,y)表示全局閾值處理后的圖像,thresh表示選取的閾值。全局閾值是最簡單的閾值處理技術,適用于目標和背景的灰度值相差較大、直方圖有明顯谷底的情況。

局部閾值又稱自適應閾值,不再像全局閾值一樣,整個圖像只有一個閾值,而是針對輸入圖像每一個位置的灰度值都設有相應的閾值。OTSU算法[10],又被稱為最大類間方差法,是一種自適應的閾值選取的方法。它是按圖像的灰度特性,將圖像分成背景和目標兩部分。背景和目標之間的類間方差越大,說明構成圖像的兩部分的差別越大,當部分目標錯分為背景或部分背景錯分為目標都會導致兩部分差別變小。因此,使類間方差最大的分割意味著錯分概率最小。OTSU算法原理:將一幅圖像中的所有像素分為兩類,即C1和C2,這兩類像素的均值分別為M1和M2,整個圖像的均值為M,整個圖像中的每個像素被分為C1和C2的概率分別為P1和P2。圖像的灰度級范圍為[0,L-1],所以有:

由方差的定義,得類間方差表達式:

由此可得:

求出使得上式最大化的灰度級k就可以得到OTSU閾值,其中:

算法實現:OpenCV中提供了二值化函數cv2.threshold(src,thresh,maxval,type)

其中的4個參數src,thresh,maxval,type分別指的是源圖像、閾值、像素值的最大值、閾值的類型。因為本文閾值處理使用OTSU方法,所以參數類型type使用cv2.THRESH_OTSU。經過OTSU方法二值化處理后的圖像如圖4所示:

圖4 OTSU二值化圖像

2.1.3 形態學操作開運算

形態學操作是基于形態學對圖像處理的算法,即結構元在每個像素位置上與原二值化圖像對應的區域進行特定的邏輯運算錯誤,未找到引用源。最常見的形態學操作有腐蝕和膨脹,把這兩種操作進行組合還可以進行開運算和閉運算的操作[11]。

腐蝕原理:遍歷原二值圖像的每一個像素,如果結構元完全處于前景圖像中,就將結構元中心點所對應的像素點處理成前景;如果結構元未完全處于前景中,就將結構元中心點對應的像素點處理成背景。用公式表達為:

b為所有屬于結構元B的元素,(B)z表示結構元B平移z之后的集合。

那么結構元B對二值圖像A腐蝕表示為:

膨脹原理:遍歷原二值圖像的每一個像素,如果結構元中任意一點處于前景圖像中,就將對應的像素點處理成前景;如果結構元完全處于背景外,就將對應的像素點處理成背景。用公式表達為:

那么結構元B對二值圖像A的膨脹表示為:

開運算的具體實現:先進行腐蝕操作,再進行膨脹操作,就可以實現。在移除小的對象時候很有用,被用來去除噪聲。

算法實現:OpenCV中提供了開運算操作的函數cv2.morphologyEx(src,cv2.MORPH_OPEN,kernel,dst,iterations)可以實現開運算操作。經開運算之后的圖像如圖5所示:

圖5 開運算操作

2.2 距離變換

距離變換的基本思想是計算一個圖像中非零像素點到最近零點像素點間的距離,也就是到所有零像素點的最短距離[12]。建立距離變換圖像可以方便提取目標元素。距離變換的輸入圖像是二值圖像,變換后的結果是灰度圖像。距離變換的結果圖像的某一點灰度值表示該像素點與其最近的零點之間的距離。距離背景邊緣越遠像素點的灰度值越大。距離方法有歐式距離、棋盤距離、城市街區距離等,歐式距離變換是二維空間中兩點之間最短的距離,由于歐式距離的計算精度高[13],所以選用歐式距離變換。

2.2.1 距離變換的算法原理

距離變換是針對二值圖像進行處理,處理完之后的結果是一副灰度圖像,核心就是求圖像中非零像素點到最近零像素點間的距離。整個圖像上像素點u=(i,j),像素點v=(k,l),歐式距離De表示為:

距離變換是針對二值圖像的一種變換,計算整幅圖像中非零像素點到最近零像素點的距離。具體的算法原理是:

(1)計算一幅圖像上所有的內部點和非內部點即邊緣點和孤立點,點集分別為Q1和Q2。

(2)內部點 Q1中的點(x,y),使用上式計算出該點到Q2中的最小距離,計算出所有的最小距離,這些最小距離構成集合Q3。

(3)計算出集合Q3中最大值max和最小值min。

(4)整個圖像的每個內部點,轉換后的灰度值G(x,y)可以用下式表示:

2.2.2 距離變換結果

距離變換的算法實現:OpenCV中提供了變換函數cv2.distanceTransform(src,distanceType,mask-Size),參數src,distanceType,maskSize分別表示源圖像,距離變換類型,距離變換的掩膜模板。本文使用歐式距離變換,所以參數distanceType選擇為cv2.DIST_L2;參數maskSize選擇為7,即7×7掩膜模板;距離變換的結果如圖6所示:

圖6 距離變換結果

經過距離變換之后提取出大致的前景區域,然后通過閾值處理剝離出前景區域;距離變換之后可以解決粘連的問題,使得求取連通區域變得簡單,在距離變換后通過閾值處理可以得到距離變換二值圖像,如圖7、圖8示。最后進行腐蝕處理如圖9所示。

圖7 閾值處理

圖8 二值圖像

圖9 腐蝕處理

2.3 邊緣檢測

求取連通區域之前先進行邊緣檢測,通過計算圖像中像素的差值獲取變化率,求導運算,變化率大的地方就是邊緣點。求邊緣點的梯度算子有Sobel算子、Robert算子、Prewitt算子、LoG算子及Canny算子等。

Sobel算子是一種常用的邊緣檢測算子[14],相比其它算子具有計算簡單、運算速度快的優點。計算出水平方向導數的近似值,將Sobel算子與原始圖像進行卷積運算,計算水平方向像素值的變化情況。具有很好的邊緣檢測性能。卷積運算實際就是對指定區域的像素灰度值進行加權求和的計算過程[15]。

Sobel算子屬于一階導數的邊緣檢測算子[16],在算法原理上,通過3×3模板作為該圖像中的每一個像素點進行卷積運算,最后選取閾值提取出邊緣。Sobel算子算法原理:

(1)計算原始圖像與 Sobel算子 x方向的卷積Gx,

(2)計算原始圖像與 Sobel算子 y方向的卷積Gy,

(3)利用圖像上每個像素點的橫向及縱向梯度值,通過下式可以計算出該點梯度值G,

另外,為了減少運算時間,提高運算效率,使用不開平方的式子代替,即

經Sobel算子邊緣檢測處理的圖像如圖10示。

圖10 Sober算子邊緣檢測

2.4 連通域標記

經過距離變換之后解決了粘連問題,當前景圖像沒有發生粘連時,計數結果比較準確;當仍然存在粘連問題時,計數結果往往不準確,所以可以基于連通域周長達到計數目的。對于粘連掛面的連通域,提取其周長特征,這種方式不是基于連通域的個數實現計數,所以可以克服由粘連現象引起的誤差[17]。

統計出連通域的個數,可以用A表示;由連通域可以計算出每個連通域的周長,并用B來表示其周長。經過二值化后的圖像會受到噪聲干擾,產生較小的連通域,為了消除噪聲干擾,添加參數連通域周長閾值TB,當連通域周長小于TB的視為噪聲,大于TB的連通域則視為目標區域。圖像中一些較大的連通區域則是由2根及以上數目組成的,單根掛面連通域的周長記為As,以較大粘連連通域周長除以單個標準掛面周長即可得到該連通域對應掛面的根數。

由上面的分類可以得到連通域周長與此連通域所包含的掛面根數之間的關系,設連通域周長為Ak,則此連通域所包含的掛面根數為Nk,k表示各連通域的標記;Ak與Nk之間的關系如下所示:

經過連通域標記處理后得到如圖11所示的結果,圖片中實際掛面數量為40根,圖像處理結果顯示為39根,計數準確率達到了97.5%,符合掛面計量的誤差要求。

圖11 連通域標記

3 結語

本文基于圖像處理對掛面根數計數做了相關研究分析,對粘連嚴重的掛面采用了先分割再計數的方法,通過距離變換提取出掛面端面的骨架信息,使得圖像中掛面端面“細化”,從而解決掛面粘連的問題;通過計算連通域周長信息從而得到掛面根數,連通域周長與標準單根掛面周長的比值即為根數,有效解決了嚴重粘連時計數困難的問題,結果顯示,計數準確率達到了97.5%,為后續的掛面高速計量奠定了技術基礎。

猜你喜歡
掛面像素點算子
與由分數階Laplace算子生成的熱半群相關的微分變換算子的有界性
圖像二值化處理硬件加速引擎的設計
中江掛面:銀絲飄香九百年
基于局部相似性的特征匹配篩選算法
Domestication or Foreignization:A Cultural Choice
一把掛面——脫貧攻堅鄉村行走4
基于像素點篩選的艦船湍流尾跡檢測算法
掛面怎么煮才好吃
基于canvas的前端數據加密
“媽媽牌”掛面
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合