基金項(xiàng)目:重慶市教委科學(xué)技術(shù)研究計(jì)劃項(xiàng)目青年項(xiàng)目(KIQN202102403);重慶市教育科學(xué)規(guī)劃課題2023年度一般課題(K23YG22
40419)
作者簡(jiǎn)介:陳欣(1987-),女,碩士,講師。研究方向?yàn)殡娮油ㄐ拧?/p>
DOI:10.19981/j.CN23-1581/G3.2024.21.013
摘" 要:圖像技術(shù)在計(jì)算機(jī)技術(shù)的發(fā)展推動(dòng)下,被廣泛應(yīng)用于各個(gè)領(lǐng)域,且呈現(xiàn)出良好的應(yīng)用效果?;跈C(jī)器視覺(jué)的數(shù)字圖像處理系統(tǒng),已經(jīng)成為現(xiàn)代科學(xué)和技術(shù)中不可缺少的工具。該文以此為出發(fā)點(diǎn),探究基于機(jī)器視覺(jué)的數(shù)字圖像處理系統(tǒng)設(shè)計(jì)方案,并思考系統(tǒng)的實(shí)際應(yīng)用價(jià)值。
關(guān)鍵詞:機(jī)器視覺(jué);數(shù)字圖像處理系統(tǒng);系統(tǒng)設(shè)計(jì);精度;攝像機(jī)
中圖分類號(hào):U414" " " 文獻(xiàn)標(biāo)志碼:A" " " " " 文章編號(hào):2095-2945(2024)21-0052-04
Abstract: With the development of computer technology, image technology has been widely applied in various fields and has shown good application effects. The digital image processing system based on machine vision has become an indispensable tool in modern science and technology. This paper takes this as a starting point to explore the design scheme of a digital image processing system based on machine vision, and considers the practical application value of the system.
Keywords: machine vision; digital image processing system; system design; accuracy; camera
機(jī)器視覺(jué)技術(shù)融合了人工智能、圖像處理及計(jì)算機(jī)科學(xué)等多領(lǐng)域知識(shí),通過(guò)模擬人類視覺(jué)功能,高效地從圖像中提取并處理信息。該技術(shù)已廣泛應(yīng)用于各行業(yè),尤其在禽蛋品質(zhì)檢測(cè)等領(lǐng)域表現(xiàn)卓越,有效避免人為誤差。機(jī)器視覺(jué)能迅速獲取大量信息并自動(dòng)處理,還可在高?;蛉斯ひ曈X(jué)無(wú)法滿足需求的場(chǎng)景中發(fā)揮作用,顯著提升檢測(cè)質(zhì)量和效率[1]。此外,它還助力機(jī)械操作優(yōu)化,保障產(chǎn)品安全,成為現(xiàn)代工業(yè)不可或缺的技術(shù)支撐。
1" 數(shù)字圖像處理的優(yōu)勢(shì)
1.1" 再現(xiàn)性好
在傳統(tǒng)的模擬圖像處理中,圖像在復(fù)制、傳輸或保存過(guò)程中往往會(huì)損失質(zhì)量,出現(xiàn)模糊、失真等現(xiàn)象,數(shù)字圖像處理技術(shù)則徹底改變了這一狀況。基于數(shù)字編碼的方式將圖像信息轉(zhuǎn)化為計(jì)算機(jī)可識(shí)別的數(shù)據(jù),從而實(shí)現(xiàn)圖像高質(zhì)量復(fù)制和傳輸。數(shù)字化處理方式的應(yīng)用,可使圖像無(wú)論被復(fù)制多少次,其質(zhì)量都不會(huì)發(fā)生任何變化。此外,數(shù)字圖像還可以在不同的設(shè)備和平臺(tái)上進(jìn)行無(wú)縫傳輸和展示,無(wú)需擔(dān)心兼容性問(wèn)題,為長(zhǎng)期保存和廣泛傳播圖像提供保障。
1.2" 處理精度高
在數(shù)字圖像處理中,圖像被分解為無(wú)數(shù)個(gè)像素點(diǎn),每個(gè)像素點(diǎn)都有其精確的數(shù)值表示。數(shù)字化的表示方式使圖像處理人員精細(xì)的調(diào)整和操作圖像,如亮度調(diào)整、對(duì)比度增強(qiáng)、色彩校正等。此外,數(shù)字圖像處理技術(shù)還支持圖像識(shí)別、圖像分析、圖像增強(qiáng)等各種復(fù)雜算法和應(yīng)用,以實(shí)現(xiàn)更高級(jí)別的圖像處理需求。
1.3" 通用性強(qiáng)
數(shù)字圖像處理技術(shù)具有極強(qiáng)的通用性,被廣泛應(yīng)用在醫(yī)學(xué)、軍事、航空航天等高科技領(lǐng)域。同時(shí)在日常生活、娛樂(lè)等普通領(lǐng)域,數(shù)字圖像處理也發(fā)揮著重要作用。在醫(yī)學(xué)領(lǐng)域,數(shù)字圖像處理技術(shù)應(yīng)用于醫(yī)學(xué)影像分析、病變檢測(cè)等方面,為醫(yī)生提供準(zhǔn)確、可靠的診斷依據(jù)。在軍事領(lǐng)域,數(shù)字圖像處理技術(shù)則被用于遙感監(jiān)測(cè)、目標(biāo)識(shí)別等方面,為軍事決策提供支持。在航空航天領(lǐng)域,數(shù)字圖像處理技術(shù)則成為飛行器導(dǎo)航、星球探測(cè)等方面不可或缺的技術(shù)手段。此外,在日常生活中,數(shù)字圖像處理技術(shù)也無(wú)處不在,如手機(jī)拍照、視頻聊天等都離不開(kāi)它的支持[2]。
2" 總體設(shè)計(jì)方案
2.1" 系統(tǒng)構(gòu)成和工作過(guò)程
在工業(yè)檢測(cè)流水線上,當(dāng)傳感器探測(cè)到待檢測(cè)物體逐漸接近攝像機(jī)的拍攝中心時(shí),會(huì)迅速觸發(fā)一個(gè)脈沖信號(hào),這個(gè)信號(hào)會(huì)被精確地發(fā)送給圖像采集卡。圖像采集卡,作為系統(tǒng)的“大腦”,會(huì)根據(jù)預(yù)先設(shè)定的程序和延時(shí)要求,有條不紊地將啟動(dòng)脈沖分別傳遞給照明系統(tǒng)和攝像機(jī)。
對(duì)于攝像機(jī)而言,這個(gè)啟動(dòng)脈沖意味著它將結(jié)束當(dāng)前的拍照任務(wù),轉(zhuǎn)而開(kāi)始新的一輪圖像捕捉。如果攝像機(jī)在接收啟動(dòng)脈沖前處于待機(jī)狀態(tài),那么脈沖的到來(lái)會(huì)使其立即激活,并在開(kāi)始新的拍照前自動(dòng)打開(kāi)曝光構(gòu)件,曝光時(shí)間已經(jīng)事先被精準(zhǔn)設(shè)定。同時(shí),另一個(gè)啟動(dòng)脈沖也被發(fā)送給光源,要求其與攝像機(jī)的曝光時(shí)間達(dá)到完美同步,以保證圖像質(zhì)量[3]。
隨后,攝像機(jī)快速掃描目標(biāo)并輸出圖像,圖像采集卡則負(fù)責(zé)接收這些信號(hào),并通過(guò)A/D轉(zhuǎn)換技術(shù)將模擬信號(hào)轉(zhuǎn)化為數(shù)字格式,或者直接接收攝像機(jī)已經(jīng)數(shù)字化的視頻數(shù)據(jù)。一旦數(shù)據(jù)被采集卡接收并處理,數(shù)字圖像就會(huì)被安全地存儲(chǔ)在計(jì)算機(jī)的內(nèi)存中,等待進(jìn)一步的指令。
2.2" 圖像預(yù)處理模塊設(shè)計(jì)
將彩色圖像轉(zhuǎn)換為灰度圖像,簡(jiǎn)化圖像信息并減少計(jì)算量。最常用的灰度化公式是基于加權(quán)平均法,其公式為
Gray(i,j)=0.299×R(i,j)+0.587×G(i,j)+0.114×B(i,j) , " (1)
式中:R(i,j)代表圖像在(i,j)位置的紅色分量,G(i,j)代表圖像在(i,j)位置的綠色分量,B(i,j)代表圖像在(i,j)位置的藍(lán)色分量,Gray(i,j)代表轉(zhuǎn)換后的灰度值。
高斯濾波器用于平滑圖像,減少噪聲。二維高斯函數(shù)公式為
G(x,y,σ)=e 。 (2)
在實(shí)際應(yīng)用中,二維高斯函數(shù)會(huì)被離散化,并且與圖像的每個(gè)像素及其鄰域進(jìn)行卷積。
直方圖均衡化用于提高圖像的對(duì)比度,特別是當(dāng)圖像的對(duì)比度較低時(shí)。其公式基于圖像的直方圖(像素值分布)
sk=T(rk)=(L-1)∑pr(rj) , (3)
式中:sk代表輸出圖像的灰度級(jí),rk代表輸入圖像的灰度級(jí),L代表灰度級(jí)的數(shù)量,pr(rj)代表輸入圖像的灰度級(jí)為rj的像素出現(xiàn)的概率值。
Sobel算子用于檢測(cè)圖像中的邊緣,其水平和垂直方向的卷積核分別為
Gx=-1 0 1-2 0 2-1 0 1 , (4)
Gy= 1" "2" 1 0" "0" 0-1 -2 -1 。 (5)
梯度幅值計(jì)算公式如下
M(x,y)="。 (6)
將灰度圖像轉(zhuǎn)換為二值圖像,通常使用閾值分割法。公式為
Binary(i,j)=1,if Gray(i,j)gt;T0,otherwise," "(7)
式中:T代表設(shè)定的閾值,Binary(i,j)代表二值化后的結(jié)果。
2.3 特征提取與圖像分割模塊設(shè)計(jì)
特征提取是從圖像中提取有意義的信息,以便于后續(xù)的分類、識(shí)別和分析?;叶裙采仃嚕℅LCM)用于描述圖像中灰度級(jí)別的空間關(guān)系。其分析涉及統(tǒng)計(jì)灰度級(jí)對(duì)出現(xiàn)的頻率,進(jìn)而計(jì)算如對(duì)比度、能量、熵等紋理特征。
Contrast=∑∑(i-j)2 P(i,j) , (8)
式中:L代表灰度級(jí)別數(shù),P(i,j)代表灰度共生矩陣中元素(i,j)的概率。
邊界矩(Boundary Moments)用于描述物體邊界的形狀特性。傅里葉描述符(Fourier Descriptors)將邊界上的點(diǎn)轉(zhuǎn)換為頻域表示。圖像分割是將圖像劃分為若干個(gè)具有相似特性的區(qū)域,基本閾值分割
g(x,y)=1,if f(x,y)gt;T0,otherwise , (9)
式中:g(x,y)代表輸出圖像,f(x,y)輸入圖像在(x,y)的灰度值。
從種子點(diǎn)開(kāi)始,將與種子點(diǎn)相似(根據(jù)預(yù)定義的相似性準(zhǔn)則)的鄰域像素合并到同一區(qū)域。聚類分割利用K-均值(K-means),將圖像像素分為K個(gè)聚類,使每個(gè)像素與其所屬聚類的中心點(diǎn)的距離之和最小
J=∑‖xi-uk‖2 , (10)
式中:J代表?yè)p失函數(shù),Ck代表第k個(gè)聚類,xi是屬于Ck的像素,uk是Ck的中心點(diǎn)。
2.4 圖像后處理模塊設(shè)計(jì)
在基于機(jī)器視覺(jué)的數(shù)字圖像處理系統(tǒng)中,圖像后處理模塊通常涉及對(duì)已經(jīng)處理過(guò)的圖像進(jìn)行進(jìn)一步的分析、優(yōu)化或轉(zhuǎn)換,以便于最終的決策或輸出。
膨脹
A?茌B=z|∩A≠?覫 , (11)
式中:A代表原始圖像,B代表結(jié)構(gòu)元素,是B的反射,z是位移,膨脹操作會(huì)使圖像中的白色區(qū)域(前景)擴(kuò)大。
腐蝕
A?苓B=z|B?哿A。 (12)
腐蝕操作會(huì)使圖像中的白色區(qū)域(前景)縮小。
開(kāi)運(yùn)算
A" B=(A?苓B)?茌B 。 (13)
閉運(yùn)算
A·B+(A?茌B)?苓B。 (14)
閉運(yùn)算通常用于填充小的孔洞或連接鄰近的物體。
在圖像后處理中,將提取的特征與預(yù)定義的模型或數(shù)據(jù)庫(kù)中的特征進(jìn)行匹配,涉及計(jì)算特征之間的相似性或距離度量。
d(x,y)=", (15)
式中:x和y是2個(gè)特征向量,n是特征的維度。
圖像變換包括仿射變換、投影變換等,用于圖像的校正、配準(zhǔn)或?qū)R,其中仿射變換
x′y′1=a b txc d ty0 0 1xy1 , (16)
式中:x、y為原始坐標(biāo),x′、y′為變換后的坐標(biāo),a、b、c、d、tx和ty是仿射變換的參數(shù)。
3" 系統(tǒng)實(shí)現(xiàn)與性能測(cè)試
3.1 系統(tǒng)開(kāi)發(fā)環(huán)境搭建
在硬件方面,一臺(tái)配備高性能處理器的計(jì)算機(jī)是不可或缺的,如Intel Core i9或AMD Ryzen Threadripper系列,這些處理器能夠處理復(fù)雜的圖像處理任務(wù)。同時(shí),NVIDIA或AMD的高端圖形處理單元(GPU)也是加速圖像處理的關(guān)鍵組件。攝像頭方面,可選擇工業(yè)級(jí)的高分辨率相機(jī),如Basler或Point Grey的產(chǎn)品,捕捉高質(zhì)量的圖像。
在軟件方面,操作系統(tǒng)選擇穩(wěn)定的Windows 10 Professional版本,以此提供良好的穩(wěn)定性和兼容性。編程環(huán)境選擇Python,配合OpenCV圖像處理庫(kù),這是一個(gè)廣泛使用的開(kāi)源圖像處理庫(kù),提供了豐富的圖像處理功能。此外,對(duì)于機(jī)器學(xué)習(xí)和深度學(xué)習(xí)算法的支持,可以選擇TensorFlow,為圖像處理提供了強(qiáng)大的工具。在開(kāi)發(fā)過(guò)程中,硬件和軟件的兼容性是必須考慮的。選擇的硬件和軟件組件應(yīng)該能夠無(wú)縫地集成在一起,提供高效的圖像處理性能[4]。
3.2" 各功能模塊的實(shí)現(xiàn)
圖像采集模塊負(fù)責(zé)從實(shí)際環(huán)境中捕獲目標(biāo)物體的圖像,為后續(xù)處理提供原始數(shù)據(jù)。圖像采集模塊功能實(shí)現(xiàn)必須借助專業(yè)攝像頭設(shè)備,這些設(shè)備具有高分辨率、高靈敏度等特點(diǎn),能夠捕捉到細(xì)節(jié)豐富、質(zhì)量上乘的圖像。同時(shí),為了保證圖像穩(wěn)定性和實(shí)時(shí)性,圖像采集模塊還需精確校準(zhǔn)和配置攝像頭,保證其能夠準(zhǔn)確地捕捉到目標(biāo)物體的圖像。
預(yù)處理模塊負(fù)責(zé)初步處理采集到的原始圖像,消除圖像中的噪聲、增強(qiáng)圖像的對(duì)比度、改善圖像的亮度等。預(yù)處理模塊功能實(shí)現(xiàn)需要運(yùn)用多種圖像處理算法,如濾波算法、直方圖均衡化算法等。算法能夠有效地提升圖像的質(zhì)量,使后續(xù)處理更加準(zhǔn)確和高效。
特征提取模塊負(fù)責(zé)從預(yù)處理后的圖像中提取出邊緣、紋理、顏色等有意義的信息,這些信息對(duì)于圖像的分類、識(shí)別和分析具有重要意義。特征提取模塊的實(shí)現(xiàn)需運(yùn)用邊緣檢測(cè)算法、紋理分析算法等圖像處理領(lǐng)域高級(jí)技術(shù),進(jìn)而準(zhǔn)確地提取出圖像中的關(guān)鍵特征,為后續(xù)處理提供有力的支持。
圖像分割模塊負(fù)責(zé)將圖像劃分為多個(gè)區(qū)域,每個(gè)區(qū)域具有相似的特征。圖像分割模塊借助閾值分割、邊緣檢測(cè)、區(qū)域生長(zhǎng)等復(fù)雜的算法實(shí)現(xiàn),根據(jù)圖像的灰度、顏色、紋理等特征將圖像劃分為不同的區(qū)域,從而實(shí)現(xiàn)圖像的準(zhǔn)確分割。考慮分割后的區(qū)域之間的連續(xù)性和平滑性,提升分割結(jié)果準(zhǔn)確性[5]。
決策與輸出模塊負(fù)責(zé)根據(jù)前面模塊的處理結(jié)果做出判斷,并將結(jié)果以適當(dāng)?shù)姆绞捷敵?。決策與輸出模塊功能實(shí)現(xiàn)要求綜合考慮系統(tǒng)應(yīng)用場(chǎng)景和用戶需求,確定最佳的輸出方式和展示效果。
3.3" 系統(tǒng)集成與調(diào)試
3.3.1" 圖像采集
圖像采集通常涉及與攝像頭的交互。
import cv2
# 初始化攝像頭
cap = cv2.VideoCapture(0)
# 檢查攝像頭是否成功打開(kāi)
if not cap.isOpened():
print(\"Error: Could not open camera.\")
exit()
# 循環(huán)采集圖像
while True:
# 讀取一幀圖像
ret, frame = cap.read()
# 檢查是否成功讀取圖像
if not ret:
print(\"Error: Failed to read frame.\")
break
# 在此處添加圖像處理代碼
# 顯示圖像
cv2.imshow(\"Image\", frame)
# 等待按鍵,如果按下′q′鍵則退出循環(huán)
if cv2.waitKey(1) amp; 0xFF == ord(′q′):
break
# 釋放攝像頭并關(guān)閉所有窗口
cap.release()
cv2.destroyAllWindows()
3.3.2" 預(yù)處理
預(yù)處理可以包括圖像灰度化、去噪等操作。
import cv2
# 讀取圖像
image = cv2.imread(\"example.jpg\")
# 將圖像轉(zhuǎn)換為灰度圖
gray_image = cv2.cvtColor(image, cv2.COLOR_BG R2GRAY)
# 在此處添加其他預(yù)處理操作
# 顯示灰度圖像
cv2.imshow(\"Gray Image\", gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
3.3.3" 特征提取
特征提取涉及邊緣檢測(cè)、角點(diǎn)檢測(cè)等算法。
import cv2
import numpy as np
# 讀取圖像
image = cv2.imread(\"example.jpg\")
# 轉(zhuǎn)換為灰度圖
gray_image = cv2.cvtColor(image, cv2.COLOR_BG R2GRAY)
# 應(yīng)用Canny邊緣檢測(cè)
edges = cv2.Canny(gray_image, 50, 150)
# 在此處添加其他特征提取操作
# 顯示邊緣檢測(cè)結(jié)果
cv2.imshow(\"Edges\", edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
3.3.4" 決策輸出
決策輸出通?;谔崛〉奶卣鬟M(jìn)行分類或識(shí)別。
import cv2
import numpy as np
# 讀取圖像并進(jìn)行預(yù)處理
# ...
# 提取特征(此處以邊緣檢測(cè)為例)
# ...
# 假設(shè)edges是提取的邊緣特征
# 進(jìn)行簡(jiǎn)單的二值化決策,根據(jù)邊緣數(shù)量判斷是否為特定物體
edge_count = np.sum(edges != 0)
threshold = 1000" # 閾值,根據(jù)實(shí)際情況調(diào)整
if edge_count gt; threshold:
print(\"Detected object.\")
else:
print(\"No object detected.\")
4" 結(jié)束語(yǔ)
經(jīng)過(guò)設(shè)計(jì)與實(shí)現(xiàn)過(guò)程,本文成功構(gòu)建了基于機(jī)器視覺(jué)的數(shù)字圖像處理系統(tǒng)。系統(tǒng)結(jié)合了先進(jìn)的算法與高效的硬件配置,展現(xiàn)出強(qiáng)大的圖像處理能力。無(wú)論是在靜態(tài)還是動(dòng)態(tài)場(chǎng)景下,系統(tǒng)都能快速、準(zhǔn)確地捕捉并處理圖像,為后續(xù)的圖像分析與應(yīng)用提供了有力支持。
參考文獻(xiàn):
[1] 許春和,孫培剛,張全禹,等.基于機(jī)器視覺(jué)的數(shù)字圖像處理系統(tǒng)設(shè)計(jì)[J].大眾標(biāo)準(zhǔn)化,2022(19):128-130.
[2] 趙恩銘,姚志強(qiáng),楊松,等.基于機(jī)器視覺(jué)的自動(dòng)目標(biāo)跟隨系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].大理學(xué)院學(xué)報(bào),2022(6):42-47.
[3] 許林.基于機(jī)器視覺(jué)的瀝青延度儀試模測(cè)量系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].福建交通科技,2023(8):87-92.
[4] 鐘飛,趙子丹,夏軍勇,等.基于機(jī)器視覺(jué)的編織袋表面缺陷檢測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].包裝工程,2022,43(13):247-256.
[5] 梅志敏,陳艷,胡杭,等.機(jī)器人與機(jī)器視覺(jué)的垃圾分揀系統(tǒng)設(shè)計(jì)[J].機(jī)械設(shè)計(jì)與制造,2022(4):275-278.