基于MATLAB的硬幣計數設計_第1頁
基于MATLAB的硬幣計數設計_第2頁
基于MATLAB的硬幣計數設計_第3頁
基于MATLAB的硬幣計數設計_第4頁
基于MATLAB的硬幣計數設計_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第一章緒論1.1引言

近幾年來,數字圖像技術越來越受到人們廣泛的關注。大多數人們接受信息是來自于視覺信息也就是圖像信息,因此這是人類最有效和最重要的信息獲取、交流方式。隨著科技的發(fā)展把圖像當作檢測和傳遞信息的手段或載體,直接對得到的圖像進行分析處理從而獲得我們感興趣的信息已經成為重要的分析和測量手段。

圖像技術的加入解決單純依靠人工進行硬幣的統(tǒng)計分析存在的操作費時、復雜和精度不高等缺陷,而且重要的是用計算機可對硬幣圖像作各種處理,既加快了分析處理的速度,又可以突出人們需要的信息。很多人工直接觀察不到的重要信息,通過計算機圖像處理分析之后能夠很清楚地看到,還可對硬幣圖像作測量和統(tǒng)計分析等,大大擴展了人眼能看到接收到的信息量。這種技術不僅解決了銀行系統(tǒng)和公交系統(tǒng)針對硬幣的處理難度,而且大大提高了對硬幣的計數和整理。對我們的生活有著積極的作用。1.2研究意義

圖像方法應用于硬幣檢測可以大幅度提高速度,減少所用時間,提高準確性,并且通過軟件分析可以實現各種參數的實時分析,圖像曲線顯示等各種功能,應用前景廣闊。正因為圖像方法的重要性和其具有的巨大潛力,圖像的處理和分析方法研究一直受到廣泛重視。其中關于如何從硬幣圖像中準確獲得硬幣外觀輪廓的信息,并進一步測量硬幣的特征參數已經成為研究的熱點,各種對硬幣計數的方法相繼而來。

因為硬幣圖像分析研究的特殊性和復雜性,還有大量的問題需要解決。各種以圖像方法為基礎的硬幣檢測系統(tǒng)實際工作時會受大量其他因素影響,如光照條件、成像方向的變化,硬幣的種類,圖像采集設備的光電特性產生噪聲等,都會對硬幣的計數產生一定的影響,這使得問題變得比較復雜。本次課題研究的意義在于通過探索硬幣的數字圖像處理和分析技術的新方法和新手段,以達到數字圖像技術在對硬幣檢測過程中提高檢測速度、準確性以及檢測應用的廣泛性。針對多種情況作了各自的處理,大大提高了對硬幣檢測的可能性,面對各種情況,通過不同的方法,可以有針對性地分別處理,從而可以準確的獲得硬幣的數量。1.3國內外現狀

目前,歐美國家對圖像物體的統(tǒng)計開展了大量相關的研究。上世紀90年代,美國就組織麻省理工大學等高校開始研究用于民事和軍事的數字圖像處理技術。

國內在MATLAB數字圖像的領域也開展了大量的研究工作,在人臉識別、車輛識別、車牌識別等方面取得了巨大的成就。但是相對于國外的研究現狀而言,我國對計算機視覺技術在農產品領域中的應用起步較晚,技術相對還不成熟。1.4

MATLAB平臺簡介

MATLAB是matrix&laboratory兩個詞的組合,意為矩陣工廠(矩陣實驗室)。是由美國mathworks公司發(fā)布的主要面對科學計算、可視化以及交互式程序設計的高科技計算環(huán)境。它將數值分析、矩陣計算、科學數據可視化以及非線性動態(tài)系統(tǒng)的建模和仿真等諸多強大功能集成在一個易于使用的視窗環(huán)境中,為科學研究、工程設計以及必須進行有效數值計算的眾多科學領域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設計語言(如C、Fortran)的編輯模式,代表了當今國際科學計算軟件的先進水平。

由于這些MATLAB自帶的特點,讓MATLAB處理數字圖像方面的研究課題變得較為方便,因此我們選用MATLAB為這次設計的主要研究工具。第二章系統(tǒng)的總體設計2.1系統(tǒng)的設計目標我國是一個經濟大國,各種硬幣有很多,人工揀選的話雖然成本低廉,但違背了解放生產力的根本目標,我們經常看到銀行的工作人員花幾個小時在哪里數硬幣,這種做法效率太低,所以針對這種問題的研究變得越來越深入,人們已經研究出了許多的解決方法。本課題的設計目標是設計一個基于MATLAB的自動計數系統(tǒng),將測試硬幣均勻分布的圖片通過自動攝像頭讀取程序讀入MATLAB中,然后對其進行預處理后,再經過對其進行一系列的處理運算和算法運算以后,得到最終要計數的圖片,最后運用統(tǒng)計計算函數,計算出圖像中硬幣的數目。2.2系統(tǒng)的設計總框圖本次設計主要包括對圖像預處理,圖像分割,圖像填充和統(tǒng)計計算等部分,具體的設計總框圖如圖1所示:讀取圖像圖像分割圖像濾波圖像灰度化讀取圖像圖像分割圖像濾波圖像灰度化統(tǒng)計計數邊緣處理膨脹與填充邊緣檢測統(tǒng)計計數邊緣處理膨脹與填充邊緣檢測圖1系統(tǒng)總框圖第三章硬幣計數的具體實現3.1圖像的預處理圖像預處理首先是將拍攝到的硬幣圖片導入到系統(tǒng)中,具體的處理步驟包括圖像灰度圖的轉化、圖像增強,濾波,邊緣檢測、圖像膨脹與填充以及圖像的腐蝕等。這些工作都是為了去除干擾和增加最后的效果圖,使灰度圖的硬幣區(qū)域顯得更明顯,處理之后在對硬幣進行統(tǒng)計計數。3.1.1圖像的讀取目前圖像的格式有很多,用的比較多的有.bmp、.jpg、.gif、.tiff、.pcx等格式。本次設計仿真主要采用.jpg的圖像格式,因為它是目前被用的最普遍的圖像格式,而且可以壓縮的很小,不占地方,并且大部分圖片也都以用這種格式保存,使用起來占用空間小還比較方便。首先將要處理的圖片復制到MATLAB中,這有利于我們對圖片進行反復的分析和使用,利用MATLAB對拍攝到的名為photo.jpg的圖片進行讀取,下面是在本次仿真中讀取原圖像并顯示的程序語句:clear;Closeall;p1=imread('photo.jpg');figure(1),imshow(p1);title('原圖');運行程序后得到如圖2:圖2原圖像3.1.2圖像灰度化的處理由于該圖像為彩色RGB格式圖像,而將圖像轉換為灰度圖圖像進行處理,才能充分發(fā)揮MATLAB的語言進行圖像分析的特長。在本次設計仿真中將彩色圖像轉化為灰度圖像使用的函數是rgb2gray(),該函數的功能是將真彩色圖像轉換為灰度圖像,即灰度化處理。對于將原圖灰度化,下面是圖像灰度值H的計算公式:(1)(2)公式(1)用的是權值法,公式(2)用的是均值法,在本次設計仿真中將彩色圖像轉化為灰度圖像用的函數rgb2gray()利用的就是權值法,它的優(yōu)點就是可以突出某個通道,得到灰度圖像后就可以更方便地進行后邊的操作。為了更好地觀察灰度圖像的灰度分布信息,可以用imhist函數創(chuàng)建一個描述圖像灰度分布的直方圖,并且可以顯示在一張圖片上。該函數用于獲取圖像數據直方圖,在圖像增強技術中,圖像灰度級直方圖有著重要的意義,是直方圖修改技術、直方圖均衡化等一些圖像處理技術的基礎??梢酝ㄟ^以下程序代碼將圖像進行格式轉換和顯示具體的灰度分布信息: p2=rgb2gray(p1);figure(2),subplot(1,2,1),imshow(p2);title('灰度圖');figure(2),subplot(1,2,2),imhist(p2);title('灰度圖直方圖');運行程序后得到如圖3:圖3灰度圖像及灰度圖直方圖3.1.3圖像濾波處理由于圖片一般都有雜質或其他影響因素,為進一步提高圖片的清晰度,提高圖像質量,對圖像進行中值濾波處理,是圖像預處理中不可缺少的操作,其處理效果的好壞將直接影響到后續(xù)圖像處理和分析的有效性和可靠性。本次濾波采用的是中值濾波,中值濾波是由Turky在1971年提出,最初用于時間序列分析,后來被用于圖像處理,并在去噪復原中取得了較好的效果。中值濾波器是基于次序統(tǒng)計完成信號恢復的一種典型的非線性濾波器,其基本原理是把圖像或序列中心點位置的值用該域的中值替代,具有運算簡單、速度快、除噪效果好等優(yōu)點,曾被認為是非線性濾波的代表。然而,一方面中值濾波因不具有平均作用,在濾除諸如高斯噪聲時會嚴重損失信號的高頻信息,使圖像的邊緣等細節(jié)模糊;另一方面中值濾波的濾波效果常受到噪聲強度以及濾波窗口的大小和形狀等因素的制約,為使中值濾波器具有更好的細節(jié)保護特性及適應性,人們提出了許多中值濾波器的改進算法。在進行中值濾波前,先對圖片進行對比度的調整,以滿足更好地進行中值濾波,本次設計采用的是imadjust函數,該函數是一個計算機函數,用于調節(jié)灰度圖像的亮度或彩色圖像的顏色矩陣。此外,在進行調整之前,需要找到一個分割閾值向量來改變圖像的對比度。Matlab中的stretchlim主要用于自適應找到一個分割閾值向量來改變一幅圖像的對比度,其通用調用格式如下:low_high=stretchlim(f,tol);可得到一個灰度變換自適應最佳閾值,不用人為規(guī)定,再將其帶入imadjust函數中便可實現灰度圖像對比度的增加或減弱。調整完對比度之后,接下來就是進行中值濾波,中值濾波是一種典型的低通濾波器,屬于非線性濾波技術,它的目的是保護圖像邊緣的同時去除噪聲。所謂中值濾波,是指把以某點(x,y)為中心的小窗口內的所有象素的灰度按從大到小的順序排列,若窗口中的像素為奇數個,則將中間值作為(x,y)處的灰度值。若窗口中的像素為偶數個,則取兩個中間值的平均值作為(x,y)處的灰度值。中值濾波對去除椒鹽噪聲很有效。中值濾波器的缺點是對所有象素點采用一致的處理,在濾除噪聲的同時有可能改變真正象素點的值,引入誤差,損壞圖像的邊緣和細節(jié)。具體的程序代碼如下所示:tol=[01];low_high=stretchlim(p2,tol);tol_low=tol(1);tol_high=tol(2);ilowhigh=zeros(2,1);N=imhist(p2,255);cdf=cumsum(N)/sum(N);ilow=find(cdf>tol_low,1,'first');ihigh=find(cdf>=tol_high,1,'first');ifilow==ihigh;ilowhigh=[1;255];elseilowhigh=[ilow;ihigh];end;low_high=(ilowhigh-1)/(255-1);p3=imadjust(p2,low_high,[0;1]);p4=medfilt2(p3,[55]);figure(3),subplot(1,2,1),imshow(p4);title('中值濾波后的圖像');figure(3),subplot(1,2,2),imhist(p4);title('中值濾波后直方圖');運行程序后得到如圖4所示: 圖4中值濾波后灰度圖像及灰度圖直方圖3.2圖像分割圖像經過濾波處理后,圖像的預處理過程就結束了,已經獲得了比較清晰的原始圖像的灰度圖。接下來就是對圖像進行圖像分割處理,提取所需目標的特征。由于目標圖像與背景有較大區(qū)別,可以利用灰度的梯度信息來實現圖像分割。通過圖像分割,將原始圖像中目標物體顯示為黑色,背景區(qū)域顯示為白色。首先利用graythresh()函數來獲得一個合適的閾值,該函數使用最大類間方差法找到圖片的一個合適的閾值。在使用im2bw函數將灰度圖像轉換為二值圖像時,需要設定一個閾值,這個函數可以幫助我們獲得一個合適的閾值。利用這個閾值通常比人為設定的閾值能更好地把一張灰度圖像轉換為二值圖像。最大類間方差法是由日本學者大津(NobuyukiOtsu)于1979年提出的,是一種自適應的閾值確定的方法,又叫大津法,簡稱OTSU。它是按圖像的灰度特性,將圖像分成背景和目標2部分。背景和目標之間的類間方差越大,說明構成圖像的2部分的差別越大,當部分目標錯分為背景或部分背景錯分為目標都會導致2部分差別變小。因此,使類間方差最大的分割意味著錯分概率最小。如果不使用graythresh函數來獲得閾值,可能需要多次嘗試才能獲得一個合適的閾值。獲得合適的閾值后,再利用im2bw函數將灰度圖像轉換為二值圖像,一般意義上是指只有純黑(0)、純白(255)兩種顏色的圖像。程序代碼如下圖所示:level=graythresh(p4);p5=im2bw(p4,level);figure(4),imshow(p5);title(‘分割處理后的圖像’);程序運行后得到的圖像如下圖5所示:圖5圖像分割處理后的圖像執(zhí)行程序后,從圖片中可以看出,圖中有許多雜質小黑點,這不利于實現正確計數,故在圖像分割時所取閾值并不合適。從MATLAB的workspace中讀取閾值level的值為0.4627,通過給定這個閾值來獲取更好的圖像分割效果。通過采取實驗的方法評估level的值增加或者減少對圖像的影響,通過實驗取值分析,最后獲得閾值為0.3。圖像效果如圖6所示:圖6改變閾值后的圖像3.3圖像邊緣檢測通過圖像閾值分割后,就得到了一個二值圖像的圖片,接下來需要對圖像進行邊緣檢測,已獲得該物體的形狀,利用edge(I,'sobel',thresh)函數根據所指定的敏感度閾值thresh,本次采用的微分算子濾波獲得邊界。比較有名的微分濾波器算子包括Sobel算子、Prewitt算子和Roberts算子等等。在邊緣檢測中,常用的一種模板是Sobel算子。對于復雜圖像一般用Prewitt算子或Sobel算子。與Prewitt算子相比,Sobel算子濾波能夠降低圖像的邊緣模糊程度,對邊界信息保留的較為完整,因此效果更好。用Sobel算子進行邊緣檢測,它忽略了所有小于閾值的邊緣。當thresh為空時,自動選擇閾值。sobel算子是像素圖像邊緣檢測中最重要的算子之一,在機器學習、數字媒體、計算機視覺等信息科技領域起著舉足輕重的作用。在技術上,它是一個離散的一階差分算子,用來計算圖像亮度函數的一階梯度之近似值。在圖像的任何一點使用此算子,將會產生該點對應的梯度矢量或是其法矢量。具體程序代碼如下:p6=edge(p5,'sobel',0.3);figure(5),imshow(p6);title('邊緣檢測后的圖像');運行程序后得到如圖7所示:圖7邊緣檢測后的圖像3.4圖像的膨脹與填充從以上的圖像邊緣檢測中可以看出,物體的形狀不是標準的,而且圖像是不完整的,這對后面的統(tǒng)計有很大的影響,為了進一步最終能得出結果,需要將圖片中的形狀進行調整,并且對于邊緣不完整的圖形還需要刪除。具體要通過膨脹和填充操作實現,既對圖像邊緣進行膨脹處理,將形狀補充完整,然后利用填充命令進行閉合區(qū)域的填充。膨脹是將與物體接觸的所有背景點合并到該物體上,使邊界向外部擴張,通過膨脹可以填充圖像中的小孔及在圖像邊緣處的小凹陷部分。將與物體接觸的所有背景點合并到該物體中,使邊界向外部擴張的過程。利用它可以填補物體中的空洞。B對X膨脹所產生的二值圖像D是滿足以下條件的點(x,y)的集合:如果B的原點平移到點(x,y),那么它與X的交集非空。

數學表達式:C=A⊕B。在MATLAB

圖像處理工具箱中的strel函數可以生成任意維數和形狀的結構元素。Strel

函數支持生成一般的形狀,例如線型、菱形、圓盤、球形、矩形等結構元素。對圖像進行膨脹可以使用MATLAB圖像處理工具箱中的Imdilate函數。具體代碼如下所示:se90=strel('line',50,90);se0=strel('line',50,0);p7=imdilate(p6,[se90,se0]);figure(6),imshow(p7);title('膨脹處理后的圖像');運行程序后得到如圖8所示:圖8膨脹處理后的圖像圖像膨脹處理后,需要進行閉合區(qū)域的填充,以便于后面對物體的統(tǒng)計,進行填充可以利用MATLAB中的imfill函數,具體的代碼如下所示:p8=imfill(p7,'holes');figure(7),imshow(p8);title('填充處理后的圖像');運行程序后得到如圖9所示:圖9填充處理后的圖像3.4圖像的統(tǒng)計計數

bwlabel是用來標記二維的二值圖像中的connected

components的,簡言之,就是黑背景下面有多少白的塊,運行結果能從返回一個和L一樣的矩陣大小和BW一樣一個讀入二值圖像后產生的BW數組(也可能自己創(chuàng)建,只要符合元素是0或者1就行)中,區(qū)別出其中的相互不連接的1有多少塊。N應該是的四方面或者是八方面的聯通應該是表示一個數組和周圍四個或者是周圍八個,用這個方法來確定其中顆粒的邊界。

返回一個和BW大小相同的L矩陣,包含了標記了BW中每個連通區(qū)域的類別標簽,這些標簽的值為1、2、num(連通區(qū)域的個數)。n的值為4或8,表示是按4連通尋找區(qū)域,還是8連通尋找,默認為8。 四連通或八連通是圖像處理里的基本概念:而8連通,是說一個像素,如果和其他像素在上、下、左、右、左上角、左下角、右上角或右下角連接著,則認為他們是聯通的;4連通是指,如果像素的位置在其他像素相鄰的上、下、左或右,則認為他們是連接著的,連通的,在左上角、左下角、右上角或右下角連接,則不認為他們連通。通過以下代碼可以實現統(tǒng)計計算,計算圖片中物體的數目: [labelednumpills]=bwlabel(p9,4); Numpills; 得出的最后結果為: numpills=7;3.5圖像的邊緣處理有的圖像經過膨脹和填充處理后依然存在不完整的圖像元素,也就是存在不完整的硬幣,在這種情況下需要刪去圖像邊緣不完整的部分。例如對下面這張圖片,圖像邊緣有不完整的硬幣時:在對圖片進行上述步驟到最后統(tǒng)計計數時,這時需要對邊緣不完整的硬幣進行處理,利用MATLAB中的

imclearborder(IM,conn)函數,作用是可以抑制和圖像邊界相連的亮對象。若IM是二值圖,imclearborder將刪除和圖像邊界相連的對象。默認情況conn=8。利用該函數可以得到最后的結果。利用以下代碼可以實現對邊緣的處理:p9=imclearborder(p8,4);figure(8),imshow(p9);title('邊緣處理后的圖像');在完成上述步驟后的圖片為:最后的統(tǒng)計結果如下圖所示:第四章總結與展望在本次設計中,主要用到的是matlab中對圖片的讀取,以及matlab中對數字圖像灰度化,二值化等其他的預處理代碼,對硬幣的統(tǒng)計則用到了bwlabel用于甄別二值化圖像中連通區(qū)域的函數。系統(tǒng)的主要難點在于前端對輸入圖像的預處理使其達到bwlabel函數能鑒別的條件,我也是在經過大量的實驗和調試后,才做出最后的運行結果。本次設計依然有許多不足的地方,由于存在許多外界因素的影響,不能全面的考慮到,這也是需要進一步修改的地方,例如,針對圖像中硬幣挨著的情況,我在經過多次試驗后,依然沒有找到合適的預處理方法,很難得到最后的正確結果,由于時間的關系,這一點還需要在以后繼續(xù)努力研究。本次設計的課題用matlab來設計的主要原因也是因為它擁有豐富的函數調用庫,這給我們提供了巨大的便利。我可以在學習各函數調用原理的基礎上更加深入的對如何應用不同的函數以達到實驗目的,當然調用的函數我都是分析理解了其源代碼才結合自己的需要進行調用的,這樣可以更加方便的在其他的地方使用這個硬幣數量統(tǒng)計系統(tǒng)。

代碼:Clc;Clear;p1=imread('photo.jpg');figure(1),imshow(p1);title('原圖');p2=rgb2gray(p1);figure(2),subplot(1,2,1),imshow(p2);title('灰度圖');figure(2),subplot(1,2,2),imhist(p2);title('灰度圖直方圖');tol=[01];low_high=stretchlim(p2,tol);tol_low=tol(1);tol_high=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論