亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于模糊圖像邊緣檢測(cè)算法的改進(jìn)

        2020-09-02 12:39:34王偉家
        現(xiàn)代計(jì)算機(jī) 2020年21期
        關(guān)鍵詞:像素點(diǎn)噪音算子

        王偉家

        (蘭州大學(xué)信息科學(xué)與工程學(xué)院,蘭州730000)

        0 引言

        邊緣是一幅圖像中最重要的特征之一,它會(huì)攜帶著一幅圖片中的絕大多數(shù)信息,例如,它可以反映圖像的面積、圖像的形狀、圖像的周長(zhǎng)、圖像之間的包含關(guān)系等最基本的特征。那么邊緣又是如何定義的?所謂邊緣是指其周?chē)袼鼗叶戎涤忻黠@變化的像素點(diǎn)的集合,而邊緣檢測(cè)算法的目的便是準(zhǔn)確的找到這些像素點(diǎn)。當(dāng)前存在的大部分邊緣檢測(cè)算法即是根據(jù)像素點(diǎn)在邊緣區(qū)域的跳躍性變化來(lái)檢測(cè),反映在數(shù)學(xué)上即是根據(jù)邊緣鄰近的一階或二階方向?qū)?shù)的變換規(guī)律,來(lái)判斷圖像邊緣點(diǎn)。

        基于一階和二階導(dǎo)數(shù)來(lái)進(jìn)行圖像邊緣檢測(cè)的算法也已經(jīng)存在多種,例如:結(jié)合了高斯平滑和微分求導(dǎo),并采用了卷積核來(lái)檢測(cè)圖像邊緣的Sobel 算子;使用圖像梯度以及對(duì)圖像進(jìn)行二階求導(dǎo)的Laplace 算子;利用高斯平滑濾波器去除噪音,并采用一階求導(dǎo)的有限差分來(lái)檢測(cè)圖像邊緣的Canny 算子等。上述的各種算子已經(jīng)存在相應(yīng)的集成函數(shù),但是,上述的邊緣檢測(cè)技術(shù),對(duì)圖像中各區(qū)域像素灰度對(duì)比度大的邊緣提取效果較好,也就是所謂的邊緣明顯的圖像,而對(duì)對(duì)比度較小的邊緣,其檢測(cè)效果則不理想,有的模糊圖像的邊緣甚至根本無(wú)法檢測(cè)出來(lái)。

        針對(duì)于上述模糊圖像的邊緣檢測(cè)效果差的情況,設(shè)計(jì)了一種利用邊緣像素點(diǎn)與周?chē)袼攸c(diǎn)的差值與閾值之間的關(guān)系來(lái)檢測(cè)邊緣的算法。這種算法主要經(jīng)過(guò)四個(gè)核心的步驟:

        圖1

        1 模糊圖像邊緣檢測(cè)的分析與設(shè)計(jì)

        1.1 區(qū)域劃分

        由于一幅圖像中可能存在著多個(gè)圖形,或者可能存在多個(gè)圖形嵌套的情況,那么這便會(huì)使圖像中存在多個(gè)圖像的邊緣,而對(duì)于要檢測(cè)的某一個(gè)圖形來(lái)說(shuō),其

        他多余的圖形的邊緣信息便會(huì)對(duì)要檢測(cè)的圖形的邊緣產(chǎn)生干擾。因此,第一部分所要做的工作便是將圖片中所要檢測(cè)的圖形的外接矩形區(qū)域切割出來(lái),可以利用圖像查看器將要檢測(cè)圖像的左上角以及圖像的右下角信息記錄下來(lái),利用這兩個(gè)信息確定出包含要檢測(cè)圖像的外接矩形。

        1.2 閾值選取、邊緣檢測(cè)

        由于圖像分為彩色圖像和灰度圖像,所以在相應(yīng)的外接矩形區(qū)域劃分出來(lái)之后,利用OpenCV 中的cvt-Color 方法將相應(yīng)的彩色圖像轉(zhuǎn)換為灰度圖像,針對(duì)轉(zhuǎn)變?yōu)榈幕叶葓D像,設(shè)置適當(dāng)?shù)拈撝禐門(mén),對(duì)灰度圖像的每一行選取適當(dāng)?shù)南袼攸c(diǎn)為邊緣像素點(diǎn)。

        下面主要為實(shí)現(xiàn)的思想:

        假設(shè)處理的圖片為img,利用Python 中的len(img[0])求出像素點(diǎn)的列數(shù),利用len(img)求出像素點(diǎn)的行數(shù)。由于要求模糊圖像的邊緣,而邊緣分為封閉圖形的邊緣和未封閉圖形的邊緣,封閉圖形的邊緣例如圓形、正方形等,未封閉圖形的邊緣例如半圓、半正方形等??梢岳蒙鲜鰣D形邊緣的性質(zhì),在檢測(cè)模糊圖像邊緣時(shí),對(duì)于每一行分別從左向右、從右向左進(jìn)行檢測(cè)。從左向右檢測(cè)時(shí),當(dāng)檢測(cè)到第一組符合邊緣性質(zhì)的像素點(diǎn)時(shí),將符合要求的像素點(diǎn)的位置記錄下來(lái),并停止從左向右檢測(cè)此行的邊緣。從右向左檢測(cè)時(shí),當(dāng)檢測(cè)到第一組符合邊緣性質(zhì)的像素點(diǎn)時(shí),將符合要求的像素點(diǎn)的位置記錄下來(lái),并停止從右向左檢測(cè)此行的邊緣。上述步驟完成后,對(duì)于封閉圖形來(lái)說(shuō),每一行像素點(diǎn)中都已經(jīng)暫時(shí)確定了左邊緣和右邊緣,對(duì)于未封閉圖形來(lái)說(shuō),每一行像素點(diǎn)都會(huì)集中到一組邊緣像素點(diǎn)。

        圖2 封閉模糊圖形檢測(cè)邊緣示意圖

        圖3 未封閉模糊圖形檢測(cè)邊緣示意圖

        具體的實(shí)現(xiàn)細(xì)節(jié)如下:

        設(shè)置當(dāng)前行的下標(biāo)為i,從左向右檢測(cè)邊緣時(shí),在每一行像素點(diǎn)中從第五個(gè)像素點(diǎn)開(kāi)始,依次進(jìn)行判斷,設(shè)為列像素點(diǎn)j。當(dāng)在當(dāng)前行i 下,某一個(gè)j 開(kāi)始的像素點(diǎn)與j-5 的像素點(diǎn)的差值超過(guò)設(shè)置的閾值時(shí),判斷j接下來(lái)的連續(xù)k 個(gè)像素點(diǎn)是否與j+k-5 的像素點(diǎn)的差值超過(guò)閾值。如果從j 開(kāi)始的k 個(gè)像素點(diǎn)與前面的像素點(diǎn)都超過(guò)了設(shè)定的閾值,就將其中的img[i][j]像素點(diǎn)暫定為邊緣像素點(diǎn),即滿足下列的公式:

        上述公式中j 的范圍為[5,col],i 的范圍為[1,row](col 為圖像像素點(diǎn)的列數(shù),row 為圖像像素點(diǎn)的行數(shù)),并且上述公式實(shí)現(xiàn)從左向右檢測(cè)左邊緣,下述公式實(shí)現(xiàn)的是從右向左檢測(cè)右邊緣:

        上述公式中j 是從col 開(kāi)始,到5 結(jié)束,i 的范圍為[1,row]。

        1.3 去除噪音

        上述閾值選取和邊緣檢測(cè)步驟完成之后,模糊圖像的大體邊緣已經(jīng)可以呈現(xiàn)出來(lái),但是,還是存在一個(gè)問(wèn)題:圖中檢測(cè)的邊緣中會(huì)存在著部分的噪音點(diǎn),這些噪音點(diǎn)組成的像素點(diǎn)的集合也會(huì)被上述的步驟誤判為邊緣,那么,這就會(huì)導(dǎo)致這一塊的邊緣檢測(cè)出現(xiàn)錯(cuò)誤,這一部分所要做的就是去除圖片中的噪音點(diǎn)。

        實(shí)現(xiàn)的思想如下:

        當(dāng)1.2 步驟完成之后,對(duì)于每一行像素點(diǎn)來(lái)說(shuō),依靠步驟2 已經(jīng)找到了疑似邊緣的像素點(diǎn),并且這個(gè)像素點(diǎn)的橫縱坐標(biāo)已經(jīng)記錄下來(lái)了。設(shè)定一個(gè)閾值T,假定此時(shí)的行下標(biāo)為i,找到的像素點(diǎn)的縱坐標(biāo)為pixel[i],這時(shí),求出[i,pixel[i]]這個(gè)像素點(diǎn)與[i-1,pixel[i-1]]、[i-2,pixel[i-2]]、[i+1,pixel[i+1]]、[i+2,pixel[i+2]]像素點(diǎn)的距離總和,當(dāng)距離總和的值超過(guò)設(shè)定的閾值T 時(shí),判定此像素點(diǎn)為噪音點(diǎn),當(dāng)求得的像素點(diǎn)的距離總和小于設(shè)定的閾值T 時(shí),判定此像素點(diǎn)為邊緣點(diǎn)。

        假設(shè)檢測(cè)出來(lái)的噪音點(diǎn)的坐標(biāo)為(i,pixel[i]),噪音點(diǎn)的坐標(biāo)(i,pixel[i])與(i-1,pixel[i-1])、(i+1,pixel[i+1])的距離超過(guò)了設(shè)定的閾值,那么此時(shí)我們可以使用(i-1,pixel[i-1])以及(i+1,pixel[i+1])來(lái)對(duì)噪音點(diǎn)進(jìn)行糾正,取pixel[i-1]和pixel[i+1]的中值來(lái)替代pixel[i],就可以有效地將噪音點(diǎn)去除,使得檢測(cè)模糊圖片的邊緣達(dá)到較好的效果。

        1.4 邊緣像素值替換

        經(jīng)過(guò)上述的三個(gè)步驟之后,已經(jīng)可以十分準(zhǔn)確地確定出模糊圖片的邊緣,此時(shí),圖片邊緣點(diǎn)的坐標(biāo)已經(jīng)記錄了下來(lái),接下來(lái)要做的工作便是將這些邊緣在圖片中表示出來(lái),這里我們采用的是像素點(diǎn)值替換的方法:確定圖片的邊緣點(diǎn)之后,重新遍歷圖片的邊緣點(diǎn),將圖片邊緣點(diǎn)的像素值全部替換為255,那么此時(shí),再次顯示圖片的時(shí)候便可以直觀地觀察到模糊圖像的邊緣。

        1.5 算法步驟

        (1)利用OpenCV 中的imread()函數(shù)讀入需要檢測(cè)的模糊圖像,并使用cvtColor 函數(shù)將圖像統(tǒng)一轉(zhuǎn)變?yōu)榛叶葓D像,之后利用Python 中的len()函數(shù)求出圖像的橫縱像素的總數(shù),分別記為col 和row,用于表示行數(shù)和列數(shù)。

        (2)利用open()函數(shù)來(lái)讀取存放檢測(cè)圖像的外接矩形的左上角和右下角的坐標(biāo),使用數(shù)組存放起來(lái)。

        (3)依靠步驟2 所存放外接矩形的左上角和右下角的坐標(biāo),指明了一張圖片在哪一個(gè)區(qū)域開(kāi)始進(jìn)行檢測(cè),此時(shí),循環(huán)的上界和下界便已經(jīng)確定下來(lái)。對(duì)圖像檢測(cè)區(qū)域的每一行分別從左到右、從右到左檢測(cè)邊緣,并提前設(shè)置好適當(dāng)?shù)拈撝?。先?zhí)行從左向右檢測(cè),當(dāng)此行下存在一組像素點(diǎn)符合行檢測(cè)邊緣的要求時(shí),記錄下此像素點(diǎn)的行坐標(biāo)和列坐標(biāo),跳出循環(huán),如果此行下所有的像素點(diǎn)都無(wú)法滿足邊緣點(diǎn)的要求,將此行對(duì)應(yīng)的數(shù)組值設(shè)置為-1。從左向右檢測(cè)完畢之后,此時(shí)圖像的左邊部分的邊緣點(diǎn)已經(jīng)找出并存儲(chǔ),此時(shí),執(zhí)行從右向左的邊緣檢測(cè),同樣,當(dāng)檢測(cè)到符合要求的像素點(diǎn)時(shí),記錄下此像素點(diǎn)的坐標(biāo),如果沒(méi)有找到符合要求的像素點(diǎn),將相應(yīng)的數(shù)組值設(shè)置為-1。

        (4)步驟3 求出每一行的邊緣點(diǎn),此時(shí)求出的邊緣點(diǎn)中還存在著噪音點(diǎn),之后利用每一行的邊緣點(diǎn)與此行的前兩行與后兩行之間的距離與設(shè)置的閾值之間的大小來(lái)判斷是否是噪音點(diǎn)。如果檢測(cè)的是噪音點(diǎn),利用此行的前一行和后一行的中值來(lái)糾正噪音點(diǎn),并存放其糾正后的像素點(diǎn)的坐標(biāo),最后達(dá)到去除噪音點(diǎn)的目的。

        (5)此時(shí)精確的邊緣點(diǎn)已經(jīng)全部存在相應(yīng)的數(shù)組中,最后利用一個(gè)循環(huán),將每一行的邊緣像素點(diǎn)的值替換為255,利用OpenCV 中的imwrite()函數(shù)將處理好的圖片保存在特定的文件夾下,至此,模糊圖像的邊緣檢測(cè)已經(jīng)完成。

        1.6 算法的時(shí)間復(fù)雜度和空間復(fù)雜度的分析

        由于要對(duì)模糊圖像中的每一個(gè)像素進(jìn)行分析與判斷,所以需要遍歷圖像中的每一行和每一列,所以該算法的時(shí)間復(fù)雜度應(yīng)該為O(col×row),col 表示的是檢測(cè)圖像的列數(shù),row 表示的是檢測(cè)圖像的行數(shù)。

        空間復(fù)雜度:由于該算法是對(duì)圖像的每一行分別從左到右、從右向左尋找邊緣點(diǎn),所以每一行需要2 個(gè)位置來(lái)存儲(chǔ)像素點(diǎn),而圖像中一共有row 行,則算法的空間復(fù)雜度為O(2×row)。

        2 實(shí)驗(yàn)過(guò)程以及結(jié)果分析

        實(shí)驗(yàn)過(guò)程均運(yùn)行在VS code 的Python 環(huán)境下,需要依賴(lài)Python 下的OpenCV 函數(shù)庫(kù)以及numpy 函數(shù)庫(kù),圖像數(shù)據(jù)為1 組模糊圖像,在附件中保存。

        下述的實(shí)驗(yàn)過(guò)程將會(huì)通過(guò)本篇文章中介紹的算法與傳統(tǒng)的邊緣檢測(cè)算法Sobel、Canny、Laplacian 進(jìn)行比較來(lái)分析模糊圖像邊緣檢測(cè)的優(yōu)劣。實(shí)驗(yàn)中的圖片都是事先經(jīng)過(guò)了OpenCV 的灰度處理,并且經(jīng)過(guò)了區(qū)域劃分的操作。

        圖中的a 表示的是二氧化硅在589 攝氏度下的灰度圖,圖中的邊緣表現(xiàn)的非常模糊。

        C.1 圖片和C.2 的圖片都是利用Sobel 算子檢驗(yàn)邊緣的效果圖,C.1 和C.2 都是使用了大小為5 的卷積核進(jìn)行的操作,不過(guò)C.1 是分別從x 和y 方向分別進(jìn)行了求導(dǎo),最后通過(guò)addWeighted()方法將兩個(gè)方向的結(jié)果合并到了一起,C.2 是直接運(yùn)行Sobel 函數(shù)對(duì)x 和y 方向一起進(jìn)行了求導(dǎo),圖中展示的即為效果圖。從C.1的效果圖可以看出,對(duì)x 和y 方向分別進(jìn)行求導(dǎo),最終通過(guò)addWeighted 函數(shù)合并在一起的邊緣檢測(cè)效果較好,但是,有一些模糊的邊緣以及細(xì)節(jié)處,它未能有效的提取出邊緣,其次,圖中除去邊緣之外,其他部分摻雜的噪音過(guò)多,這將會(huì)對(duì)邊緣周長(zhǎng)的計(jì)算或者圖形面積的計(jì)算產(chǎn)生較大的干擾,C.2 的圖片中對(duì)模糊圖像的邊緣檢測(cè)效果較差,甚至無(wú)法辨認(rèn)出模糊圖像的邊緣。

        D 圖片是利用了Canny 算子檢驗(yàn)邊緣的效果圖,Canny 是通過(guò)使用兩種不同的閾值分別用來(lái)檢測(cè)圖片中的強(qiáng)邊緣和弱邊緣,它的實(shí)現(xiàn)方法相對(duì)簡(jiǎn)單,Canny算子是利用了高斯模糊去除噪音,但這樣會(huì)存在一個(gè)缺點(diǎn),在去除噪音的過(guò)程中也同時(shí)會(huì)平滑邊緣,這樣做的結(jié)果是使邊緣信息減弱,可能會(huì)在后面的步驟中漏掉一些需要的邊緣,特別是一些孤立的邊緣和弱邊緣,可能在雙閾值和聯(lián)通計(jì)算中被剔除。可以預(yù)想到,如果加大高斯模糊的半徑,就會(huì)對(duì)噪音的平滑力度進(jìn)一步增強(qiáng),也會(huì)使得后面得到的圖像邊緣圖中的邊緣明顯減少。雖然噪音會(huì)有效地降低,但是,有效的邊緣信息也消失了很多。圖D 就是很好的證明,雖然D 圖中的噪音大部分被平滑掉了,但是圖中的邊緣也同樣被平滑掉了太多,導(dǎo)致檢測(cè)的邊緣十分不完整,只有一部分很明顯的邊緣被檢測(cè)了出來(lái)。

        E 圖片是采用Laplacian 算子對(duì)模糊圖片邊緣檢測(cè)的效果圖,Laplacian 算法對(duì)圖片中存在的噪音比較敏感,因此如果圖片中存在大量的噪音,就導(dǎo)致模糊圖片的邊緣檢測(cè)效果過(guò)差,從效果圖可以看出,已經(jīng)達(dá)到無(wú)法辨認(rèn)邊緣的層次,但實(shí)際中Laplacian 算子很少用來(lái)檢測(cè)邊緣,它大多數(shù)是用來(lái)判定邊緣像素為圖像的亮區(qū)還是暗區(qū)。

        圖4

        經(jīng)過(guò)C 圖、D 圖、E 圖的比較,可以看到Sobel 邊緣檢測(cè)算子計(jì)算速度快,邊緣連續(xù)性較好,但細(xì)節(jié)完整效果粗略,一些模糊的邊緣以及一些細(xì)節(jié)之處,它未能有效地提取出邊緣。而Canny 算子利用兩種不同的閾值來(lái)見(jiàn)測(cè)強(qiáng)邊緣和弱邊緣,實(shí)現(xiàn)簡(jiǎn)單,但噪音平滑的過(guò)程中會(huì)使部分的邊緣點(diǎn)減少,從而使檢測(cè)邊緣的無(wú)法較大。Laplacian 算子對(duì)噪音的敏感度太高,導(dǎo)致圖片中的絕大多數(shù)噪音無(wú)法去除,對(duì)邊緣的檢測(cè)效果過(guò)差。從H 圖可以看出,本文提出的邊緣檢測(cè)算法在選擇合適的閾值的前提下的得到的圖像邊緣在邊緣的定位精度。完整程度、連續(xù)性以及噪音去除方面都比Sobel 算子的效果強(qiáng)很多,雖然時(shí)間復(fù)雜度高一點(diǎn),但是這種方法的抗噪能力比較強(qiáng),當(dāng)對(duì)模糊圖片進(jìn)行邊緣檢測(cè)時(shí),此種方法的效果比較好,并且,由于噪音去除效果比較好,在計(jì)算模糊圖形的面積和周長(zhǎng)等方便也有很大的便利之處,但是,此種方法也有一些缺點(diǎn),一方面實(shí)現(xiàn)起來(lái)需要寫(xiě)的代碼比較繁雜,沒(méi)有集成的函數(shù),另一方面,如果圖像的上下邊緣較為平滑,那么檢測(cè)上下邊緣時(shí)的效果就比較差,從圖中的H 中就可以觀察到這一點(diǎn),在圖片的上邊緣和下邊緣的邊緣檢測(cè)相對(duì)于中間的邊緣檢測(cè)來(lái)說(shuō)比較差。

        3 結(jié)語(yǔ)

        本文通過(guò)先對(duì)模糊圖像的每一行像素點(diǎn)進(jìn)行邊緣檢測(cè)達(dá)到檢測(cè)行邊緣的效果,但是,上述產(chǎn)生的邊緣像素點(diǎn)存在大量的噪音,此時(shí),再依據(jù)邊緣的連續(xù)性,利用列像素點(diǎn)的關(guān)系達(dá)到去除噪音的目的。上述陳述的算法都是運(yùn)用基本的數(shù)學(xué)運(yùn)行來(lái)實(shí)現(xiàn)的,有思想簡(jiǎn)單的特點(diǎn),其次,該算法基于的是灰度圖像的檢驗(yàn),因?yàn)榛叶葓D像與彩色圖像的閾值選取差別較大,如果要對(duì)模糊的彩色圖像進(jìn)行邊緣檢測(cè),可以先將其轉(zhuǎn)變?yōu)榛叶葓D像,之后,再對(duì)轉(zhuǎn)變成的灰度圖像進(jìn)行邊緣檢測(cè)。

        猜你喜歡
        像素點(diǎn)噪音算子
        擬微分算子在Hp(ω)上的有界性
        噪音,總是有噪音!
        各向異性次Laplace算子和擬p-次Laplace算子的Picone恒等式及其應(yīng)用
        無(wú)法逃避的噪音
        一類(lèi)Markov模算子半群與相應(yīng)的算子值Dirichlet型刻畫(huà)
        基于canvas的前端數(shù)據(jù)加密
        噪音的小把戲
        白噪音的三種用法
        Coco薇(2017年9期)2017-09-07 22:09:28
        基于逐像素點(diǎn)深度卷積網(wǎng)絡(luò)分割模型的上皮和間質(zhì)組織分割
        Roper-Suffridge延拓算子與Loewner鏈
        一本久到久久亚洲综合| 蜜桃视频一区二区三区四| 91精品亚洲成人一区二区三区| 4hu四虎永久免费地址ww416| 成人aaa片一区国产精品| 国产精品久久久久久久免费看| 怡春院欧美一区二区三区免费| 无码AⅤ最新av无码专区| 国产亚洲精品综合一区二区| 精品人妻久久一日二个| 日本丰满少妇裸体自慰| 麻豆一区二区99久久久久| 国产乱色国产精品免费视频| 综合久久加勒比天然素人| 浓毛老太交欧美老妇热爱乱| 日本xxxx色视频在线播放| 中文字幕第一页亚洲| 国内精品91久久久久| 精品蜜桃在线观看一区二区三区| 六月婷婷亚洲性色av蜜桃| 久久人人爽av亚洲精品| av片在线观看免费| 国产成人午夜福利在线小电影| 国内精品人人妻少妇视频| 国产精品国产三级国产av18| 亚洲中文字幕无码不卡电影 | 乱伦一区二| 黄色av三级在线免费观看| 水蜜桃在线精品视频网| 久久青青草原亚洲av无码麻豆| 亚洲无码一二专区| 国产自拍伦理在线观看| 亚洲爆乳无码精品aaa片蜜桃 | 人妻少妇激情久久综合| 日韩综合无码一区二区| 亚洲日本va午夜在线电影| 无码国产精品一区二区免费式芒果 | 国产亚洲2021成人乱码| 色妺妺视频网| 亚洲欧美变态另类综合| 人妻熟女中文字幕av|