李新疆 王賞貴 王丹
摘 要:在OpenCV框架下的python 3環(huán)境中,開(kāi)發(fā)了一種處理紅棗病害葉片圖像的技術(shù),通過(guò)提取紅棗病害區(qū)域HSV色彩空間分離H、S、V通道顏色分量圖,經(jīng)過(guò)灰度變換得到3個(gè)灰度圖像,對(duì)灰度圖像進(jìn)行腐蝕、膨脹形態(tài)學(xué)處理,去噪后再進(jìn)行平滑及閾值分割操作,最終獲得較佳的紅棗葉片病斑區(qū)域的分割方法。結(jié)果表明,基于HSV色彩空間的病斑分割方法能夠有效地提取紅棗葉片的病害特征,為機(jī)器視覺(jué)在紅棗病蟲(chóng)害識(shí)別的應(yīng)用中提供了依據(jù)。
關(guān)鍵詞:OpenCV-Python;HSV色彩空間;閾值分割;圖像處理
中圖分類(lèi)號(hào) S436文獻(xiàn)標(biāo)識(shí)碼 A文章編號(hào) 1007-7731(2020)04-0085-03
Abstract: In the python 3 environment under the OpenCV framework, a technology for processing leaf image of red jujube disease leaves has been developed. H, S, and V channel color component maps are separated by extracting the HSV color space of the red jujube disease area. For gray-scale images, the gray-scale images are etched and expanded morphologically, and then smoothed and thresholded after denoising. Finally, a better method for segmenting the diseased area of the jujube leaves is obtained. The results show that the lesion segmentation method based on HSV color space can effectively extract the disease characteristics of red jujube leaves, and provide a research basis for the application of machine vision in the identification of jujube diseases and insect pests.
Key words: OpenCV-Python; HSV color space; Threshold segmentation; Image processing
紅棗最早產(chǎn)自于中國(guó)北部地區(qū),核小肉密,食其甘甜可口,不僅具有改善缺血、胃酸過(guò)多、焦慮失眠等癥狀的效果,也是天然補(bǔ)充維生素的良品。我國(guó)每個(gè)省市基本都有種植分布,生產(chǎn)制造的紅棗及相關(guān)產(chǎn)品占據(jù)著97%以上世界市場(chǎng),2017年中國(guó)紅棗的年產(chǎn)量已超過(guò)800萬(wàn)t[1]。
但由于近些年急速擴(kuò)大紅棗的種植規(guī)模,和農(nóng)民相對(duì)滯后的綜合管理能力,致使病蟲(chóng)害的發(fā)生頻率增高,也滋生了新的棗病蟲(chóng)害種類(lèi),病蟲(chóng)害的威脅已經(jīng)嚴(yán)重影響到紅棗品質(zhì)和產(chǎn)量提升,損害果農(nóng)的切身利益[2]。目前,棗病蟲(chóng)害的治理主要還是靠人工,不僅需要投入大量的時(shí)間、精力和資金維系,耗時(shí)耗力,也不能及時(shí)高效的對(duì)病蟲(chóng)害發(fā)生進(jìn)行監(jiān)測(cè),錯(cuò)過(guò)最佳的防治時(shí)機(jī),從而出現(xiàn)農(nóng)藥濫用或使用不適時(shí)的情況,增加人工物料成本。為此,本文提出一種在OpenCV3-python3開(kāi)發(fā)環(huán)境下基于HSV色彩空間的紅棗病斑的分割方法,利用擁有豐富成熟開(kāi)源庫(kù)函數(shù)的python編程語(yǔ)言和OpenCV框架對(duì)病斑區(qū)域紅棗葉片進(jìn)行圖像處理,并有效的分割,以期為紅棗的病蟲(chóng)害識(shí)別做好前期工作和實(shí)驗(yàn)依據(jù),是機(jī)器視覺(jué)代替人眼視覺(jué)在棗病蟲(chóng)害的防治方面的一次探索。
1 操作環(huán)境的搭建
1.1 硬件環(huán)境 固有的硬件條件為:處理器:英特爾Core i7-7700@3.60GHz四核(自帶核顯);主板:華擎Z270 Killer SLI(Z270芯片組);內(nèi)存:12GB(GLOWAY DDR4 2400MHZ 4G/記憶科技DDR4 2666MHz 8G);主硬盤(pán):三星MZVLW128HEGR-000H1(128GB/固態(tài)硬盤(pán));副硬盤(pán):西數(shù)WDC WD10EZEX-08WN4A0(1TB/機(jī)械硬盤(pán));顯卡:AMD Radeon RX 470(4GB/迪蘭恒進(jìn));顯示器:聯(lián)想LEN60ED LS2224(21.7英寸)。
1.2 軟件環(huán)境 本次軟件環(huán)境基礎(chǔ)為Windows 10(64bit)操作系統(tǒng),并且所有本研究應(yīng)用軟件均為windows版本。
(1)下載Anaconda基于python3.7的64bit版本(https://www.anaconda.com/download/),根據(jù)自己的需求選擇安裝路徑,并將Anaconda3文件下的Scripts目錄和Library\bin目錄路徑添加至環(huán)境變量Path下,以保證應(yīng)用程序進(jìn)程更好的運(yùn)行。
(2)安裝集成開(kāi)發(fā)環(huán)境IDE(Integrated Development Environment),采用的IDE是微軟官方的Visual Studio2017代碼編程軟件,也可用Anaconda中自帶的IDE-Jupyter Notebook,用來(lái)編寫(xiě)、運(yùn)行代碼,并快速的調(diào)試和糾錯(cuò)。
(3)進(jìn)入網(wǎng)址(https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv)下載與python 3.7相對(duì)應(yīng)opencv版本的whl文件,在Anaconda Prompt命令窗口的Anaconda3文件目錄下輸入:pip install opencv_python?4.1.2+contrib? cp37? cp37m?win_amd64.whl.
(4)繼續(xù)輸入:pip install opencv_python?4.1.2?cp37? cp37m?win_amd64.whl.
(5)在命令窗口中輸入python進(jìn)入python環(huán)境后,再輸入improve cv2,無(wú)報(bào)錯(cuò)即說(shuō)明已完成OpenCV的安裝,到這一步基本的OpenCV-Python操作環(huán)境就搭載成功了。
2 實(shí)際操作流程
2.1 樣本準(zhǔn)備 通過(guò)掃描儀掃描或相機(jī)拍攝采集高清的紅棗葉片圖像作為實(shí)驗(yàn)樣本,將提取紅棗葉片的病斑部位,進(jìn)行圖像處理操作,如圖1所示。
2.2 HSV色彩空間 色彩幾乎可以用任意的基色集合來(lái)定義,可以將色彩表達(dá)為顏色分量的3或4個(gè)數(shù)值元組,在研究與應(yīng)用中,產(chǎn)生了不同的基色與之相對(duì)應(yīng)的色彩空間。常見(jiàn)的色彩空間有XYZ、RGB、YIQ、CMY、LAB、HSV、HSL等,可在比色學(xué)計(jì)算、存儲(chǔ)、編碼、彩色電視機(jī)、色彩差別、分析、色彩感知、計(jì)算機(jī)圖形學(xué)等不同的場(chǎng)景進(jìn)行應(yīng)用[3]。
HSV色彩空間即色調(diào)(Hue)、飽和度(Saturation)、值(Value)(其中V值就是亮度(brightness),因此HSV也可稱(chēng)作HSB)與常用的RGB空間的混合三原色原理不同,HSV空間有效地分離了色度、飽和度和亮度,更適合于對(duì)人類(lèi)色彩感覺(jué)的描述,在圖像處理中也有更加明顯的優(yōu)勢(shì)[4]。
將提取的病斑原始圖像(圖2)輸入OpenCV-Python中對(duì)RGB的轉(zhuǎn)換得到HSV并分離H、S、V3個(gè)通道(如圖3),設(shè)r、g、b分別是單個(gè)顏色為紅、綠、藍(lán)的坐標(biāo),它們的值都是0~1之間的實(shí)數(shù),設(shè)m為r,g,b中的最大值,設(shè)n為r,g,b中的最小值,公式為:
一般HSV取值范圍為:色調(diào)為0~360°,飽和度為0~100%,亮度值為0~255,但在OpenCV中,對(duì)于HSV,色調(diào)范圍為[0,179],飽和度范圍為[0,255],亮度值范圍為[0,255]。
2.3 灰度化 灰度圖像是指圖像矩陣元素的常見(jiàn)取值范圍為整數(shù),并且其區(qū)間在[0,255],另外還有在用[0,1]區(qū)間的小數(shù)來(lái)表示灰度值[5]。從白色到黑色不同深淺明暗像素過(guò)渡將彩圖中更多的梯度細(xì)節(jié)信息保留了下來(lái),大幅度的提升了運(yùn)算速率,也降低了矩陣維數(shù)。由OpenCV-Python自帶的cvtColor轉(zhuǎn)換函數(shù)運(yùn)算獲得(圖4)
2.4 形態(tài)學(xué)處理 膨脹(擴(kuò)張)、腐蝕(侵蝕)、開(kāi)運(yùn)算、閉運(yùn)算是幾種基本的形態(tài)學(xué)運(yùn)算,膨脹圖像相當(dāng)于對(duì)其反色圖像腐蝕后再取反色,作用是把圖像周?chē)谋尘包c(diǎn)合并:到物體中,膨脹的運(yùn)算符為,A用B來(lái)膨脹,寫(xiě)作A+B,定義為[6]:
腐蝕是膨脹的反運(yùn)算,腐蝕圖像相當(dāng)于對(duì)其反色圖像膨脹后再取反色,它的作用是消除物體邊界點(diǎn),可以把小于結(jié)構(gòu)元素的物體去除,選取不同大小的結(jié)構(gòu)元素可以去掉不同大小的物體,運(yùn)算符為[Θ],A用B來(lái)腐蝕,寫(xiě)作A[Θ]B,定義為[6]:
2.5 平滑去噪 圖像進(jìn)行平滑處理能夠有效消除噪聲,本文采用一種能夠減少邊緣模糊的非線性平滑方法-中值濾波,將形態(tài)學(xué)閉運(yùn)算處理過(guò)的H、S、V圖像在進(jìn)行中值濾波處理(濾波窗口為3x3)效果如圖6所示。
2.6 閾值分割 閾值分割是圖像分割中的常用分割方法,根據(jù)目標(biāo)圖像與其背景的灰度梯度,設(shè)置閾值將不同像素塊進(jìn)行分類(lèi),最終實(shí)現(xiàn)目標(biāo)與背景的分離,本文采用的是OpenCV庫(kù)中自帶的Otsu算法函數(shù)對(duì)圖6中中值濾波處理過(guò)的H、S、V分量圖進(jìn)行分割,再經(jīng)過(guò)二值化處理后得到圖7。
3 結(jié)論
本文通過(guò)在OpenCV-Python環(huán)境中的圖像處理操作工作,提出一種基于HSV色彩空間紅棗葉片病斑分割方法,經(jīng)過(guò)實(shí)驗(yàn)分別對(duì)HSV色彩模型的H、S、V3個(gè)分量圖分別進(jìn)行常規(guī)處理,通過(guò)結(jié)果對(duì)比來(lái)看,HSV-H分量圖的最終分割效果初步能滿(mǎn)足對(duì)葉片病斑區(qū)域的分割要求,也凸顯了OpenCV-Python的易用性與高效性,為后續(xù)進(jìn)一步推進(jìn)紅棗葉片病害識(shí)別工作奠定基礎(chǔ)。
參考文獻(xiàn)
[1]2017-2018年全球紅棗產(chǎn)量產(chǎn)業(yè)規(guī)模及增長(zhǎng)情況統(tǒng)計(jì)回顧[EB/OL].中國(guó)產(chǎn)業(yè)信息網(wǎng).http://www.chyxx.com/industry/201807/663171.html,2018-7-27.
[2]馮宏祖,王立生.新疆棗園病蟲(chóng)草害診斷與防治原色圖譜[M].五家渠:新疆生產(chǎn)建設(shè)兵團(tuán)出版社,2012:1.
[3]Milan Sonka,Vaclav Hlavac,Roger Boyle,著.圖像處理、分析與機(jī)器視覺(jué)(第4版)[M].興軍亮,艾海舟,等譯.北京:清華大學(xué)出版社,2016:25-27.
[4]韓麗娜,熊杰,耿國(guó)華,等.利用HSV空間的雙通道同態(tài)濾波真彩圖像增強(qiáng)[J].計(jì)算機(jī)工程與應(yīng)用,2009,45(27):18-20.
[5]石智鵬.基于人類(lèi)視覺(jué)特征的彩色圖像轉(zhuǎn)灰度圖像算法研究[D].蘭州:蘭州大學(xué),2017.
[6]劉成龍.MATLAB圖象處理[M].北京:清華大學(xué)出版社,2017:370-373.
(責(zé)編:張宏民)