需求突然轉(zhuǎn)換到,識(shí)別有背景的戶型圖: 具體效果參考空間大師,首先提出墻體,然后識(shí)別門窗、家具。 空間大師對(duì)實(shí)現(xiàn)思路幾乎沒有幫助,絕望之際找到一篇論文,看結(jié)果還不錯(cuò),于是我們就開始根據(jù)論文一步步實(shí)現(xiàn)。 論文為:基于形狀與邊緣特征的戶型圖識(shí)別研究_江州,有兩種方法: 一、基于形狀特征的戶型圖識(shí)別 1、墻體線分割 彩色圖-->灰度圖-->統(tǒng)計(jì)灰度直方圖,最大值即為背景灰度。 墻體的幾何特征,平直度: 若某灰度值的平直度越高,則代表該灰度值的整體分布越趨于平直化。 墻體分割算法的主要流程為: (1)統(tǒng)計(jì)全局圖像的灰度值,(2)計(jì)算分布圖中峰值灰度的平直度,(3)平直度最高的灰度值即為墻體線的灰度,(4)二值化閾值(通常取灰度域)。 2、墻體線降噪 觀察發(fā)現(xiàn),噪聲部分連圖片連通區(qū)大小遠(yuǎn)小于墻體線構(gòu)成的連通區(qū),且峰值連通區(qū)的數(shù)目決定了墻體的數(shù)量。 提出,基于連通區(qū)的快速去噪算法,主要思路:(1)統(tǒng)計(jì)全局的連通區(qū)大小,(2)找到能分割出所有峰值連通區(qū)對(duì)應(yīng)的最小閾值,(3)以該閾值的1/2作為分割閾值,對(duì)圖像中的連通區(qū)進(jìn)行分割。 3、墻體線矯正與分析 4、門窗的分割與識(shí)別 窗:平行線的紋理特征 門:圓弧所分割兩個(gè)區(qū)域的面積比 二、基于邊緣特征的戶型圖識(shí)別(我們進(jìn)行了代碼實(shí)現(xiàn)) 1、像素級(jí)邊緣提取 對(duì)于邊緣提取,canny算子的效果最好,保留了圖像更多的細(xì)節(jié),且對(duì)部分破損邊緣進(jìn)行修補(bǔ),但處理時(shí)間長; sobel算子,能較好地保持邊緣細(xì)節(jié),速度快,但自動(dòng)過濾掉了一部分不關(guān)注的邊緣。 選擇了sobel算子進(jìn)行邊緣檢測(cè)。 (1)去標(biāo)尺,得到處理圖像的邊界(灰度值投影找峰值的方法) imageWithoutRuler(image, imageWithoutR, border); (2)邊緣梯度的計(jì)算,計(jì)算四個(gè)方向的sobel梯度模板,選取最大的作為其梯度值及方向。 采用四個(gè)方向的梯度模板的好處在于充分利用8鄰域內(nèi)像素灰度信息的同時(shí),判斷方向快速且只涉及到加法。 sobelGrad(src_gray, gradImage, thetaImage, ShowthetaImage, border); 梯度圖: 方向圖: (3)閾值分割及非極大值抑制 閾值分割,對(duì)感興趣的圖像進(jìn)行分離,提取出梯度較高的像素點(diǎn),這些像素點(diǎn)灰度值變化劇烈,為邊緣的候選點(diǎn)。 論文推薦分割的閾值: 非極大值抑制,保證該店為局部范圍內(nèi)梯度最大的點(diǎn),保證邊緣為單像素寬度,方便進(jìn)行后續(xù)的邊緣追蹤。 方法:在該梯度上,該像素點(diǎn)大于等于相鄰的兩個(gè)像素點(diǎn)的梯度值。 threshold_nms(gradImage, thetaImage, gradImage1, border, 0.3); (4)去冗余點(diǎn)與毛刺 (冗余點(diǎn)的定義沒看懂。) 毛刺,即分支點(diǎn)的特征為:在像素的八鄰域內(nèi),有不超過一個(gè)像素點(diǎn)。 removeBurr(gradImage1, gradImage2, border); (5)邊緣跟蹤 為了方便后續(xù)對(duì)邊緣數(shù)據(jù)進(jìn)行參數(shù)化,必須對(duì)提取的邊緣進(jìn)行編碼。其編碼算法的步驟如下: 步驟 1:從左到右,從上到下,檢索出所有連續(xù)邊界的起始點(diǎn),記下起始點(diǎn)坐標(biāo),并將該點(diǎn)的灰度值,置為背景灰度 0; 步驟 2:以該點(diǎn)的梯度方向?yàn)樗阉鞣较颍粩嘌h(huán)檢索下一個(gè)頂點(diǎn)。若找到,則加下該檢索方向,并將該點(diǎn)的灰度值置為背景灰度 0;若沒找到,說明該點(diǎn)是孤立點(diǎn),即邊緣的終點(diǎn),跳出循環(huán); 步驟 3:以像素?cái)?shù)目門限對(duì)跟蹤結(jié)果進(jìn)行過濾,低于門限的邊緣被濾除。 該邊緣編碼方案與傳統(tǒng)的編碼方法進(jìn)行比較,一方面,直接對(duì)源圖像內(nèi)的像素點(diǎn)進(jìn)行置零操作,極大地減少了遍歷次數(shù);另一方面,在檢索下一個(gè)邊界點(diǎn)時(shí),把上一個(gè)檢索方向作為優(yōu)先檢索方向,檢索效率得到了較大的提升。 edgeTracking(gradImage2, thetaImage, border, lines_before); 2、亞像素級(jí)邊緣提取 。。。。。。 我們的困境在于不知道怎么去除干擾項(xiàng),實(shí)現(xiàn)了部分代碼后,發(fā)現(xiàn)論文中是手動(dòng)去除干擾。。放棄。 |
|