日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

只腐蚀毛刺 腐蚀算法_图像的腐蚀 膨胀及细化

發(fā)布時間:2023/12/10 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 只腐蚀毛刺 腐蚀算法_图像的腐蚀 膨胀及细化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)載:http://blog.sina.com.cn/s/blog_4bdb170b0100sgtj.html

今天所講的內(nèi)容屬于一門新興的學(xué)科:數(shù)學(xué)形態(tài)學(xué)(Mathematical Morphology)。說起來很有意思,它是法國和德國的科學(xué)家在研究巖石結(jié)構(gòu)時建立的一門學(xué)科。形態(tài)學(xué)的用途主要是獲取物體拓?fù)浜徒Y(jié)構(gòu)信息,它通過物體和結(jié)構(gòu)元素相互作用的某些運算,得到物體更本質(zhì)的形態(tài)。在圖象處理中的應(yīng)用主要是:(1)利用形態(tài)學(xué)的基本運算,對圖象進(jìn)行觀察和處理,從而達(dá)到改善圖象質(zhì)量的目的;(2)描述和定義圖象的各種幾何參數(shù)和特征,如面積、周長、連通度、顆粒度、骨架和方向性等。

限于篇幅,我們只介紹二值圖象的形態(tài)學(xué)運算,對于灰度圖象的形態(tài)學(xué)運算,有興趣的讀者可以閱讀有關(guān)的參考書。在程序中,為了處理的方便,還是采用256級灰度圖,不過只用到了調(diào)色板中的0和255兩項。

先來定義一些基本符號和關(guān)系。

1. 元素

設(shè)有一幅圖象X,若點a在X的區(qū)域以內(nèi),則稱a為X的元素,記作a∈X,如圖6.1所示。

2. B包含于X

設(shè)有兩幅圖象B,X。對于B中所有的元素ai,都有ai∈X,則稱B包含于(included in)X,記作B X,如圖6.2所示。

3. B擊中X

設(shè)有兩幅圖象B,X。若存在這樣一個點,它即是B的元素,又是X的元素,則稱B擊中(hit)X,記作B↑X,如圖6.3所示。

4. B不擊中X

設(shè)有兩幅圖象B,X。若不存在任何一個點,它即是B的元素,又是X的元素,即B和X的交集是空,則稱B不擊中(miss)X,記作B∩X=Ф;其中∩是集合運算相交的符號,Ф表示空集。如圖6.4所示。

圖6.1 元素

圖6.2 包含

圖6.3 擊中

圖6.4 不擊中

5. 補(bǔ)集

設(shè)有一幅圖象X,所有X區(qū)域以外的點構(gòu)成的集合稱為X的補(bǔ)集,記作Xc,如圖6.5所示。顯然,如果B∩X=Ф,則B在X的補(bǔ)集內(nèi),即B Xc。

圖6.5 補(bǔ)集的示意圖

6. 結(jié)構(gòu)元素

設(shè)有兩幅圖象B,X。若X是被處理的對象,而B是用來處理X的,則稱B為結(jié)構(gòu)元素(structure element),又被形象地稱做刷子。結(jié)構(gòu)元素通常都是一些比較小的圖象。

7. 對稱集

設(shè)有一幅圖象B,將B中所有元素的坐標(biāo)取反,即令(x,y)變成(-x,-y),所有這些點構(gòu)成的新的集合稱為B的對稱集,記作Bv,如圖6.6所示。

8. 平移

設(shè)有一幅圖象B,有一個點a(x0,y0),將B平移a后的結(jié)果是,把B中所有元素的橫坐標(biāo)加x0,縱坐標(biāo)加y0,即令(x,y)變成(x+x0,y+y0),所有這些點構(gòu)成的新的集合稱為B的平移,記作Ba,如圖6.7所示。

圖6.6 對稱集的示意圖

圖6.7 平移的示意圖

好了,介紹了這么多基本符號和關(guān)系,現(xiàn)在讓我們應(yīng)用這些符號和關(guān)系,看一下形態(tài)學(xué)的基本運算。

6.1 腐蝕

把結(jié)構(gòu)元素B平移a后得到Ba,若Ba包含于X,我們記下這個a點,所有滿足上述條件的a點組成的集合稱做X被B腐蝕(Erosion)的結(jié)果。用公式表示為:E(X)={a| Ba X}=X

B,如圖6.8所示。

圖6.8 腐蝕的示意圖

圖6.8中X是被處理的對象,B是結(jié)構(gòu)元素。不難知道,對于任意一個在陰影部分的點a,Ba 包含于X,所以X被B腐蝕的結(jié)果就是那個陰影部分。陰影部分在X的范圍之內(nèi),且比X小,就象X被剝掉了一層似的,這就是為什么叫腐蝕的原因。

值得注意的是,上面的B是對稱的,即B的對稱集Bv=B,所以X被B腐蝕的結(jié)果和X被 Bv腐蝕的結(jié)果是一樣的。如果B不是對稱的,讓我們看看圖6.9,就會發(fā)現(xiàn)X被B腐蝕的結(jié)果和X被 Bv腐蝕的結(jié)果不同。

圖6.9 結(jié)構(gòu)元素非對稱時,腐蝕的結(jié)果不同

圖6.8和圖6.9都是示意圖,讓我們來看看實際上是怎樣進(jìn)行腐蝕運算的。

在圖6.10中,左邊是被處理的圖象X(二值圖象,我們針對的是黑點),中間是結(jié)構(gòu)元素B,那個標(biāo)有origin的點是中心點,即當(dāng)前處理元素的位置,我們在介紹模板操作時也有過類似的概念。腐蝕的方法是,拿B的中心點和X上的點一個一個地對比,如果B上的所有點都在X的范圍內(nèi),則該點保留,否則將該點去掉;右邊是腐蝕后的結(jié)果??梢钥闯?#xff0c;它仍在原來X的范圍內(nèi),且比X包含的點要少,就象X被腐蝕掉了一層。

圖6.10 腐蝕運算

圖6.11為原圖,圖6.12為腐蝕后的結(jié)果圖,能夠很明顯地看出腐蝕的效果。

圖6.11 原圖

圖6.12 腐蝕后的結(jié)果圖

下面的這段程序,實現(xiàn)了上述的腐蝕運算,針對的都是黑色點。參數(shù)中有一個BOOL變量,為真時,表示在水平方向進(jìn)行腐蝕運算,即結(jié)構(gòu)元素B為 ;否則在垂直方向上進(jìn)行腐蝕運算,即結(jié)構(gòu)元素B為 。

BOOL Erosion(HWND hWnd,BOOL Hori)

{

DWORD????????????????????? ?????? OffBits,BufSize;

LPBITMAPINFOHEADER??? lpImgData;

LPSTR????????????? ???? lpPtr;

HLOCAL?????? ?????????? hTempImgData;

LPBITMAPINFOHEADER??? lpTempImgData;

LPSTR????????????? ?????? ?????? lpTempPtr;

HDC??????????????? ????? hDc;

HFILE????????????? ????? hf;

LONG?????????????? ???? x,y;

unsigned char????? ??????? num;

int??????????????? ??????? i;

//為了處理方便,仍采用256級灰度圖,不過只用調(diào)色板中0和255兩項

if( NumColors!=256){

MessageBox(hWnd,"Must be a mono bitmap with grayscale palette!",

"Error Message",MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

OffBits=bf.bfOffBits-sizeof(BITMAPFILEHEADER);

//BufSize為緩沖區(qū)大小

BufSize=OffBits+bi.biHeight*LineBytes;

//為新的緩沖區(qū)分配內(nèi)存

if((hTempImgData=LocalAlloc(LHND,BufSize))==NULL)

{

MessageBox(hWnd,"Error alloc memory!","Error Message",

MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData);

lpTempImgData=(LPBITMAPINFOHEADER)LocalLock(hTempImgData);

//拷貝頭信息和位圖數(shù)據(jù)

memcpy(lpTempImgData,lpImgData,BufSize);

if(Hori)

{

//在水平方向進(jìn)行腐蝕運算

for(y=0;y

//lpPtr指向原圖數(shù)據(jù),lpTempPtr指向新圖數(shù)據(jù)

lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes)+1;

lpTempPtr=(char*)lpTempImgData+

(BufSize-LineBytes-y*LineBytes)+1;

for(x=1;x

//注意為防止越界,x的范圍從1到寬度-2

num=(unsigned char)*lpPtr;

if (num==0){? //因為腐蝕掉的是黑點,所以只對黑點處理

*lpTempPtr=(unsigned char)0;? //先置成黑點

for(i=0;i<3;i++){

num=(unsigned char)*(lpPtr+i-1);

if(num==255){

//自身及上下鄰居中若有一個不是黑點,則將該點腐

//蝕成白點

*lpTempPtr=(unsigned char)255;

break;

}

}

}

//原圖中就是白點的,新圖中仍是白點

else *lpTempPtr=(unsigned char)255;

//指向下一個象素

lpPtr++;

lpTempPtr++;

}

}

}

else{

//在垂直方向進(jìn)行腐蝕運算

for(y=1;y

//lpPtr指向原圖數(shù)據(jù),lpTempPtr指向新圖數(shù)據(jù)

lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes);

lpTempPtr=(char *)lpTempImgData+(BufSize-LineBytes-y*LineBytes);

for(x=0;x

num=(unsigned char)*lpPtr;

if (num==0){ //因為腐蝕掉的是黑點,所以只對黑點處理

*lpTempPtr=(unsigned char)0; //先置成黑點

for(i=0;i<3;i++){

num=(unsigned char)*(lpPtr+(i-1)*LineBytes);

if(num==255){

//自身及上下鄰居中若有一個不是黑點,則將該點腐

//蝕成白點

*lpTempPtr=(unsigned char)255;

break;

}

}

}

//原圖中就是白點的,新圖中仍是白點

else *lpTempPtr=(unsigned char)255;

//指向下一個象素

lpPtr++;

lpTempPtr++;

}

}

}

if(hBitmap!=NULL)

DeleteObject(hBitmap);

hDc=GetDC(hWnd);

//產(chǎn)生新的位圖

hBitmap=CreateDIBitmap(hDc,(LPBITMAPINFOHEADER)lpTempImgData,

(LONG)CBM_INIT,

(LPSTR)lpTempImgData+

sizeof(BITMAPINFOHEADER)+

NumColors*sizeof(RGBQUAD),

(LPBITMAPINFO)lpTempImgData, DIB_RGB_COLORS);

//起不同的結(jié)果文件名

if(Hori)

hf=_lcreat("c:\\herosion.bmp",0);

else

hf=_lcreat("c:\\verosion.bmp",0);

_lwrite(hf,(LPSTR)&bf,sizeof(BITMAPFILEHEADER));

_lwrite(hf,(LPSTR)lpTempImgData,BufSize);

_lclose(hf);

//釋放內(nèi)存及資源

ReleaseDC(hWnd,hDc);

LocalUnlock(hTempImgData);

LocalFree(hTempImgData);

GlobalUnlock(hImgData);

return TRUE;

}

6.2 膨脹

膨脹(dilation)可以看做是腐蝕的對偶運算,其定義是:把結(jié)構(gòu)元素B平移a后得到Ba,若Ba擊中X,我們記下這個a點。所有滿足上述條件的a點組成的集合稱做X被B膨脹的結(jié)果。用公式表示為:D(X)={a | Ba↑X}=X

B,如圖6.13所示。圖6.13中X是被處理的對象,B是結(jié)構(gòu)元素,不難知道,對于任意一個在陰影部分的點a,Ba擊中X,所以X被B膨脹的結(jié)果就是那個陰影部分。陰影部分包括X的所有范圍,就象X膨脹了一圈似的,這就是為什么叫膨脹的原因。

同樣,如果B不是對稱的,X被B膨脹的結(jié)果和X被 Bv膨脹的結(jié)果不同。

讓我們來看看實際上是怎樣進(jìn)行膨脹運算的。在圖6.14中,左邊是被處理的圖象X(二值圖象,我們針對的是黑點),中間是結(jié)構(gòu)元素B。膨脹的方法是,拿B的中心點和X上的點及X周圍的點一個一個地對,如果B上有一個點落在X的范圍內(nèi),則該點就為黑;右邊是膨脹后的結(jié)果??梢钥闯?#xff0c;它包括X的所有范圍,就象X膨脹了一圈似的。

圖6.13 膨脹的示意圖

圖6.14 膨脹運算

圖6.15為圖6.11膨脹后的結(jié)果圖,能夠很明顯的看出膨脹的效果。

圖6.15 圖6.11膨脹后的結(jié)果圖

下面的這段程序,實現(xiàn)了上述的膨脹運算,針對的都是黑色點。參數(shù)中有一個BOOL變量,為真時,表示在水平方向進(jìn)行膨脹運算,即結(jié)構(gòu)元素B為 ;否則在垂直方向上進(jìn)行膨脹運算,即結(jié)構(gòu)元素B為 。

BOOL Dilation(HWND hWnd,BOOL Hori)

{

DWORD ??????????????????????????? OffBits,BufSize;

LPBITMAPINFOHEADER??? lpImgData;

LPSTR????????????? ???? lpPtr;

HLOCAL???????????? ???? hTempImgData;

LPBITMAPINFOHEADER??? lpTempImgData;

LPSTR???? ? ????????????? lpTempPtr;

HDC??????????????? ???? hDc;

HFILE????????????? ????? hf;

LONG ?????????????????? x,y;

unsigned char????? ??????? num;

int??????????????? ??????? i;

//為了處理的方便,仍采用256級灰度圖,不過只調(diào)色板中0和255兩項

if( NumColors!=256){

MessageBox(hWnd,"Must be a mono bitmap with grayscale palette!",

"Error Message",MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

OffBits=bf.bfOffBits-sizeof(BITMAPFILEHEADER);

//BufSize為緩沖區(qū)大小

BufSize=OffBits+bi.biHeight*LineBytes;

//為新的緩沖區(qū)分配內(nèi)存

if((hTempImgData=LocalAlloc(LHND,BufSize))==NULL)

{

MessageBox(hWnd,"Error alloc memory!","Error Message",

MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData);

lpTempImgData=(LPBITMAPINFOHEADER)LocalLock(hTempImgData);

//拷貝頭信息和位圖數(shù)據(jù)

memcpy(lpTempImgData,lpImgData,BufSize);

if(Hori)

{

//在水平方向進(jìn)行膨脹運算

for(y=0;y

//lpPtr指向原圖數(shù)據(jù),lpTempPtr指向新圖數(shù)據(jù)

lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes)+1;

lpTempPtr=(char*)lpTempImgData+

(BufSize-LineBytes-y*LineBytes)+1;

for(x=1;x

//注意為防止越界,x的范圍從1到寬度-2

num=(unsigned char)*lpPtr;

//原圖中是黑點的,新圖中肯定也是,所以要考慮的是那些原圖

//中的白點,看是否有可能膨脹成黑點

if (num==255){

*lpTempPtr=(unsigned char)255; //先置成白點

for(i=0;i<3;i++){

num=(unsigned char)*(lpPtr+i-1);

//只要左右鄰居中有一個是黑點,就膨脹成黑點

if(num==0){

*lpTempPtr=(unsigned char)0;

break;

}

}

}

//原圖中就是黑點的,新圖中仍是黑點

else *lpTempPtr=(unsigned char)0;

//指向下一個象素

lpPtr++;

lpTempPtr++;

}

}

}

else{

//在垂直方向進(jìn)行腐蝕運算

for(y=1;y

lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes);

lpTempPtr=(char *)lpTempImgData+(BufSize-LineBytes-y*LineBytes);

for(x=0;x

num=(unsigned char)*lpPtr;

if (num==255){

*lpTempPtr=(unsigned char)255;

for(i=0;i<3;i++){

num=(unsigned char)*(lpPtr+(i-1)*LineBytes);

//只要上下鄰居中有一個是黑點,就膨脹成黑點

if(num==0){

*lpTempPtr=(unsigned char)0;

break;

}

}

}

else *lpTempPtr=(unsigned char)0;

lpPtr++;

lpTempPtr++;

}

}

}

if(hBitmap!=NULL)

DeleteObject(hBitmap);

hDc=GetDC(hWnd);

//產(chǎn)生新的位圖

hBitmap=CreateDIBitmap(hDc,(LPBITMAPINFOHEADER)lpTempImgData,

(LONG)CBM_INIT,

(LPSTR)lpTempImgData+

sizeof(BITMAPINFOHEADER)+

NumColors*sizeof(RGBQUAD),

(LPBITMAPINFO)lpTempImgData,

DIB_RGB_COLORS);

//起不同的結(jié)果文件名

if(Hori)

hf=_lcreat("c:\\hdilation.bmp",0);

else

hf=_lcreat("c:\\vdilation.bmp",0);

_lwrite(hf,(LPSTR)&bf,sizeof(BITMAPFILEHEADER));

_lwrite(hf,(LPSTR)lpTempImgData,BufSize);

_lclose(hf);

//釋放內(nèi)存及資源

ReleaseDC(hWnd,hDc);

LocalUnlock(hTempImgData);

LocalFree(hTempImgData);

GlobalUnlock(hImgData);

return TRUE;

}

腐蝕運算和膨脹運算互為對偶的,用公式表示為(X

B)c=(Xc

B),即X 被B腐蝕后的補(bǔ)集等于X的補(bǔ)集被B膨脹。這句話可以形象的理解為:河岸的補(bǔ)集為河面,河岸的腐蝕等價于河面的膨脹。你可以自己舉個例子來驗證一下這個關(guān)系。在有些情況下,這個對偶關(guān)系是非常有用的。例如:某個圖象處理系統(tǒng)用硬件實現(xiàn)了腐蝕運算,那么不必再另搞一套膨脹的硬件,直接利用該對偶就可以實現(xiàn)了。

6.3 開

先腐蝕后膨脹稱為開(open),即OPEN(X)=D(E(X))。

讓我們來看一個開運算的例子(見圖6.16):

圖6.16開運算

在圖16上面的兩幅圖中,左邊是被處理的圖象X(二值圖象,我們針對的是黑點),右邊是結(jié)構(gòu)元素B,下面的兩幅圖中左邊是腐蝕后的結(jié)果;右邊是在此基礎(chǔ)上膨脹的結(jié)果??梢钥吹?#xff0c;原圖經(jīng)過開運算后,一些孤立的小點被去掉了。一般來說,開運算能夠去除孤立的小點,毛刺和小橋(即連通兩塊區(qū)域的小點),而總的位置和形狀不變。這就是開運算的作用。要注意的是,如果B是非對稱的,進(jìn)行開運算時要用B的對稱集Bv膨脹,否則,開運算的結(jié)果和原圖相比要發(fā)生平移。圖6.17和圖6.18能夠說明這個問題。

圖6.17 用B膨脹后,結(jié)果向左平移了

圖6.18 用Bv膨脹后位置不變

圖6.17是用B膨脹的,可以看到,OPEN(X)向左平移了。圖18是用Bv膨脹的,可以看到,總的位置和形狀不變。

圖6.19為圖6.11經(jīng)過開運算后的結(jié)果。

圖6.19 圖6.11經(jīng)過開運算后的結(jié)果

開運算的源程序可以很容易的根據(jù)上面的腐蝕,膨脹程序得到,這里就不給出了。

6.4 閉

先膨脹后腐蝕稱為閉(close),即CLOSE(X)=E(D(X))。

讓我們來看一個閉運算的例子(見圖6.20):

圖6.20 閉運算

在圖6.20上面的兩幅圖中,左邊是被處理的圖象X(二值圖象,我們針對的是黑點),右邊是結(jié)構(gòu)元素B,下面的兩幅圖中左邊是膨脹后的結(jié)果,右邊是在此基礎(chǔ)上腐蝕的結(jié)果可以看到,原圖經(jīng)過閉運算后,斷裂的地方被彌合了。一般來說,閉運算能夠填平小湖(即小孔),彌合小裂縫,而總的位置和形狀不變。這就是閉運算的作用。同樣要注意的是,如果B是非對稱的,進(jìn)行閉運算時要用B的對稱集Bv膨脹,否則,閉運算的結(jié)果和原圖相比要發(fā)生平移。

圖6.21為圖6.11經(jīng)過閉運算后的結(jié)果。

圖6.21 圖.611經(jīng)過閉運算后的結(jié)果

閉運算的源程序可以很容易的根據(jù)上面的膨脹,腐蝕程序得到,這里就不給出了。

你大概已經(jīng)猜到了,開和閉也是對偶運算,的確如此。用公式表示為(OPEN(X))c=CLOSE((Xc)),或者(CLOSE(X))c =OPEN((Xc))。即X 開運算的補(bǔ)集等于X的補(bǔ)集的閉運算,或者X 閉運算的補(bǔ)集等于X的補(bǔ)集的開運算。這句話可以這樣來理解:在兩個小島之間有一座小橋,我們把島和橋看做是處理對象X,則X的補(bǔ)集為大海。如果漲潮時將小橋和島的外圍淹沒(相當(dāng)于用尺寸比橋?qū)挻蟮慕Y(jié)構(gòu)元素對X進(jìn)行開運算),那么兩個島的分隔,相當(dāng)于小橋兩邊海域的連通(對Xc做閉運算)。

6.5 細(xì)化

細(xì)化(thinning)算法有很多,我們在這里介紹的是一種簡單而且效果很好的算法,用它就能夠?qū)崿F(xiàn)從文本抽取骨架的功能。我們的對象是白紙黑字的文本,但在程序中為了處理的方便,還是采用256級灰度圖,不過只用到了調(diào)色板中0和255兩項。

所謂細(xì)化,就是從原來的圖中去掉一些點,但仍要保持原來的形狀。實際上,是保持原圖的骨架。所謂骨架,可以理解為圖象的中軸,例如一個長方形的骨架是它的長方向上的中軸線;正方形的骨架是它的中心點;圓的骨架是它的圓心,直線的骨架是它自身,孤立點的骨架也是自身。文本的骨架嘛,前言中的例子顯示的很明白。那么怎樣判斷一個點是否能去掉呢?顯然,要根據(jù)它的八個相鄰點的情況來判斷,我們給幾個例子(如圖6.22所示)。

圖6.22 根據(jù)某點的八個相鄰點的情況來判斷該點是否能刪除

圖6.22中,(1)不能刪,因為它是個內(nèi)部點,我們要求的是骨架,如果連內(nèi)部點也刪了,骨架也會被掏空的;(2)不能刪,和(1)是同樣的道理;(3)可以刪,這樣的點不是骨架;(4)不能刪,因為刪掉后,原來相連的部分?jǐn)嚅_了;(5)可以刪,這樣的點不是骨架;(6)不能刪,因為它是直線的端點,如果這樣的點刪了,那么最后整個直線也被刪了,剩不下什么;(7)不能刪,因為孤立點的骨架就是它自身。

總結(jié)一下,有如下的判據(jù):(1)內(nèi)部點不能刪除;(2)孤立點不能刪除;(3)直線端點不能刪除;(4)如果P是邊界點,去掉P后,如果連通分量不增加,則P可以刪除。

我們可以根據(jù)上述的判據(jù),事先做出一張表,從0到255共有256個元素,每個元素要么是0,要么是1。我們根據(jù)某點(當(dāng)然是要處理的黑色點了)的八個相鄰點的情況查表,若表中的元素是1,則表示該點可刪,否則保留。

查表的方法是,設(shè)白點為1,黑點為0;左上方點對應(yīng)一個8位數(shù)的第一位(最低位),正上方點對應(yīng)第二位,右上方點對應(yīng)的第三位,左鄰點對應(yīng)第四位,右鄰點對應(yīng)第五位,左下方點對應(yīng)第六位,正下方點對應(yīng)第七位,右下方點對應(yīng)的第八位,按這樣組成的8位數(shù)去查表即可。例如上面的例子中(1)對應(yīng)表中的第0項,該項應(yīng)該為0;(2)對應(yīng)37,該項應(yīng)該為0;(3)對應(yīng)173,該項應(yīng)該為1;(4)對應(yīng)231,該項應(yīng)該為0;(5)對應(yīng)237,該項應(yīng)該為1;(6)對應(yīng)254,該項應(yīng)該為0;(7)對應(yīng)255,該項應(yīng)該為0。

這張表我已經(jīng)替大家做好了,可花了我不少時間呢!

static int erasetable[256]={

0,0,1,1,0,0,1,1,??? ????? 1,1,0,1,1,1,0,1,

1,1,0,0,1,1,1,1,???????????? 0,0,0,0,0,0,0,1,

0,0,1,1,0,0,1,1,???????????? 1,1,0,1,1,1,0,1,

1,1,0,0,1,1,1,1,???????????? 0,0,0,0,0,0,0,1,

1,1,0,0,1,1,0,0,???????????? 0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,???????????? 0,0,0,0,0,0,0,0,

1,1,0,0,1,1,0,0,???????????? 1,1,0,1,1,1,0,1,

0,0,0,0,0,0,0,0,???????????? 0,0,0,0,0,0,0,0,

0,0,1,1,0,0,1,1,???????????? 1,1,0,1,1,1,0,1,

1,1,0,0,1,1,1,1,???????????? 0,0,0,0,0,0,0,1,

0,0,1,1,0,0,1,1,???????????? 1,1,0,1,1,1,0,1,

1,1,0,0,1,1,1,1,???????????? 0,0,0,0,0,0,0,0,

1,1,0,0,1,1,0,0,???????????? 0,0,0,0,0,0,0,0,

1,1,0,0,1,1,1,1,???????????? 0,0,0,0,0,0,0,0,

1,1,0,0,1,1,0,0,???????????? 1,1,0,1,1,1,0,0,

1,1,0,0,1,1,1,0,???????????? 1,1,0,0,1,0,0,0

};

有了這張表,算法就很簡單了,每次對一行一行的將整個圖象掃描一遍,對于每個點(不包括邊界點),計算它在表中對應(yīng)的索引,若為0,則保留,否則刪除該點。如果這次掃描沒有一個點被刪除,則循環(huán)結(jié)束,剩下的點就是骨架點,如果有點被刪除,則進(jìn)行新的一輪掃描,如此反復(fù),直到?jīng)]有點被刪除為止。

實際上,該算法有一些缺陷。舉個簡單的例子,有一個黑色矩形,如圖6.23所示。

圖6.23經(jīng)過細(xì)化后,我們預(yù)期的結(jié)果是一條水平直線,且位于該黑色矩形的中心。實際的結(jié)果確實是一條水平直線,但不是位于黑色矩形的中心,而是最下面的一條邊。

為什么會這樣,我們來分析一下:在從上到下,從左到右的掃描過程中,我們遇到的第一個黑點就是黑色矩形的左上角點,經(jīng)查表,該點可以刪。下一個點是它右邊的點,經(jīng)查表,該點也可以刪,如此下去,整個一行被刪了。每一行都是同樣的情況,所以都被刪除了。到了最后一行時,黑色矩形已經(jīng)變成了一條直線,最左邊的黑點不能刪,因為它是直線的端點,它右邊的點也不能刪,因為如果刪除,直線就斷了,如此下去,直到最右邊的點,也不能刪,因為它是直線的右端點。所以最下面的一條邊保住了,但這并不是我們希望的結(jié)果。

解決的辦法是,在每一行水平掃描的過程中,先判斷每一點的左右鄰居,如果都是黑點,則該點不做處理。另外,如果某個黑點被刪除了,那么跳過它的右鄰居,處理下一個點。這樣就避免了上述的問題。

圖6.23 黑色矩形

圖6.24 圖6.23細(xì)化后的結(jié)果

解決了上面的問題,我們來看看處理后的結(jié)果,如圖6.24所示。這次變成一小段豎線了,還是不對,是不是很沮喪?別著急,讓我們再來分析一下:在上面的算法中,我們遇到的第一個能刪除的點就是黑色矩形的左上角點;第二個是第一行的最右邊的點,即黑色矩形的右上角點;第三個是第二行的最左邊的點;第四個是第二行的最右邊的點;……;整個圖象處理這樣一次后,寬度減少2。每次都是如此,直到剩最中間一列,就不能再刪了。為什么會這樣呢?原因是這樣的處理過程只實現(xiàn)了水平細(xì)化,如果在每一次水平細(xì)化后,再進(jìn)行一次垂直方向的細(xì)化(只要把上述過程的行列換一下),就可以了。

這樣一來,每處理一次,刪除點的順序變成:(先是水平方向掃描)第一行最左邊的點;第一行最右邊的點;第二行最左邊的點;第二行最右邊的點;……最后一行最左邊的點;最后一行最右邊的點;(然后是垂直方向掃描)第二列最上邊的點(因為第一列最上邊的點已被刪除);第二列最下邊的點;第三列最上邊的點;第三列最下邊的點;……倒數(shù)第二列最上邊的點(因為倒數(shù)第一列最上邊的點已被刪除);倒數(shù)第二列最下邊的點。我們發(fā)現(xiàn),剛好剝掉了一圈,這也正是細(xì)化要做的事。實際的結(jié)果也驗證了我們的想法。

以下是源程序,黑體字部分是值得注意的地方。

BOOL Thinning(HWND hWnd)

{

DWORD????????????????????? ?????? OffBits,BufSize;

LPBITMAPINFOHEADER??? lpImgData;

LPSTR????????????? ?????? ?????? lpPtr;

HLOCAL???????????? ???? hTempImgData;

LPBITMAPINFOHEADER??? lpTempImgData;

LPSTR????????????? ???? lpTempPtr;

HDC??????????????? ????? hDc;

HFILE????????????? ????? hf;

LONG?????????????? ???? x,y;

int????????????????? ?????? ??????? ?????? num;

BOOL?????????????? ????? Finished;

int??????????????? ??????? nw,n,ne,w,e,sw,s,se;

//為了處理的方便,仍采用256級灰度圖,不過只用調(diào)色板中0和255兩項

if( NumColors!=256){

MessageBox(hWnd,"Must be a mono bitmap with grayscale palette!",

"Error Message",MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

OffBits=bf.bfOffBits-sizeof(BITMAPFILEHEADER);

//BufSize為緩沖區(qū)大小

BufSize=OffBits+bi.biHeight*LineBytes;

//為新的緩沖區(qū)分配內(nèi)存

if((hTempImgData=LocalAlloc(LHND,BufSize))==NULL)

{

MessageBox(hWnd,"Error alloc memory!","Error Message",

MB_OK|MB_ICONEXCLAMATION);

return FALSE;

}

lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData);

lpTempImgData=(LPBITMAPINFOHEADER)LocalLock(hTempImgData);

//拷貝頭信息和位圖數(shù)據(jù)

memcpy(lpTempImgData,lpImgData,BufSize);

//結(jié)束標(biāo)志置成假

Finished=FALSE;

while(!Finished){ //還沒有結(jié)束

//結(jié)束標(biāo)志置成假

Finished=TRUE;

//先進(jìn)行水平方向的細(xì)化

for (y=1;y

//lpPtr指向原圖數(shù)據(jù),lpTempPtr指向新圖數(shù)據(jù)

lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes);

lpTempPtr=(char *)lpTempImgData+(BufSize-LineBytes-y*LineBytes);

x=1; //注意為防止越界,x的范圍從1到寬度-2

while(x

if(*(lpPtr+x)==0){ //是黑點才做處理

w=(unsigned char)*(lpPtr+x-1);? //左鄰點

e=(unsigned char)*(lpPtr+x+1);? //右鄰點

if( (w==255)|| (e==255)){

//如果左右兩個鄰居中至少有一個是白點才處理

nw=(unsigned char)*(lpPtr+x+LineBytes-1); //左上鄰點

n=(unsigned char)*(lpPtr+x+LineBytes); //上鄰點

ne=(unsigned char)*(lpPtr+x+LineBytes+1); //右上鄰點

sw=(unsigned char)*(lpPtr+x-LineBytes-1); //左下鄰點

s=(unsigned char)*(lpPtr+x-LineBytes); //下鄰點

se=(unsigned char)*(lpPtr+x-LineBytes+1); //右下鄰點

//計算索引

num=nw/255+n/255*2+ne/255*4+w/255*8+e/255*16+

sw/255*32+s/255*64+se/255*128;

if(erasetable[num]==1){ //經(jīng)查表,可以刪除

//在原圖緩沖區(qū)中將該黑點刪除

*(lpPtr+x)=(BYTE)255;

//結(jié)果圖中該黑點也刪除

*(lpTempPtr+x)=(BYTE)255;

Finished=FALSE; //有改動,結(jié)束標(biāo)志置成假

x++; //水平方向跳過一個象素

}

}

}

x++; //掃描下一個象素

}

}

//再進(jìn)行垂直方向的細(xì)化

for (x=1;x

y=1; //注意為防止越界,y的范圍從1到高度-2

while(y

lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes);

lpTempPtr=(char*)lpTempImgData+

(BufSize-LineBytes-y*LineBytes);

if(*(lpPtr+x)==0){ //是黑點才做處理

n=(unsigned char)*(lpPtr+x+LineBytes);

s=(unsigned char)*(lpPtr+x-LineBytes);

if( (n==255)|| (s==255)){

//如果上下兩個鄰居中至少有一個是白點才處理

nw=(unsigned char)*(lpPtr+x+LineBytes-1);

ne=(unsigned char)*(lpPtr+x+LineBytes+1);

w=(unsigned char)*(lpPtr+x-1);

e=(unsigned char)*(lpPtr+x+1);

sw=(unsigned char)*(lpPtr+x-LineBytes-1);

se=(unsigned char)*(lpPtr+x-LineBytes+1);

//計算索引

num=nw/255+n/255*2+ne/255*4+w/255*8+e/255*16+

sw/255*32+s/255*64+se/255*128;

if(erasetable[num]==1){ //經(jīng)查表,可以刪除

//在原圖緩沖區(qū)中將該黑點刪除

*(lpPtr+x)=(BYTE)255;

//結(jié)果圖中該黑點也刪除

*(lpTempPtr+x)=(BYTE)255;

Finished=FALSE; //有改動,結(jié)束標(biāo)志置成假

y++;//垂直方向跳過一個象素

}

}

}

y++; //掃描下一個象素

}

}

}

if(hBitmap!=NULL)

DeleteObject(hBitmap);

hDc=GetDC(hWnd);

//產(chǎn)生新的位圖

hBitmap=CreateDIBitmap(hDc,(LPBITMAPINFOHEADER)lpTempImgData,

(LONG)CBM_INIT,

(LPSTR)lpTempImgData+

sizeof(BITMAPINFOHEADER)+

NumColors*sizeof(RGBQUAD),

(LPBITMAPINFO)lpTempImgData,

DIB_RGB_COLORS);

hf=_lcreat("c:\\thinning.bmp",0);

_lwrite(hf,(LPSTR)&bf,sizeof(BITMAPFILEHEADER));

_lwrite(hf,(LPSTR)lpTempImgData,BufSize);

_lclose(hf);

//釋放內(nèi)存及資源

ReleaseDC(hWnd,hDc);

LocalUnlock(hTempImgData);

LocalFree(hTempImgData);

GlobalUnlock(hImgData);

return TRUE;

}

總結(jié):

腐蝕:刪除對象邊界的某些像素,或者去除圖像中的某些孤立噪聲點

膨脹:給圖像中的對象邊界添加像素

細(xì)化:提取圖像中的骨架,但是要保留圖像

算法:

膨脹算法:用3X3的結(jié)構(gòu)元素,掃描二值圖像的每一個像素,用結(jié)構(gòu)元素與其覆蓋的二值圖像做“或”運算,如果都為0,結(jié)構(gòu)圖像的該像素為0,否則為1.結(jié)果:使二值圖像擴(kuò)大一圈。

如果是二值圖像,本質(zhì)就是當(dāng)結(jié)果劃過圖像時,需要考慮的元素與其覆蓋的的元素取最小值

腐蝕算法:用3X3的結(jié)構(gòu)元素,掃描二值圖像的每一個像素,用結(jié)構(gòu)元素與其覆蓋的二值圖像做“與”運算,如果都為1,結(jié)構(gòu)圖像的該像素為1,否則為0.結(jié)果:使二值圖像減小一圈。

如果是二值圖像,本質(zhì)就是當(dāng)結(jié)果劃過圖像時,需要考慮的元素與其覆蓋的的元素取最大值。

細(xì)化算法:

細(xì)化,就是從原來的圖中去掉一些點,但仍要保持原來的形狀。實際上,是保持原圖的骨架。所謂骨架,可以理解為圖象的中軸,例如一個長方形的骨架是它的長方向上的中軸線;正方形的骨架是它的中心點;圓的骨架是它的圓心,直線的骨架是它自身,孤立點的骨架也是自身。文本的骨架嘛,前言中的例子顯示的很明白。那么怎樣判斷一個點是否能去掉呢?顯然,要根據(jù)它的八個相鄰點的情況來判斷,我們給幾個例子(如圖6.22所示)。

圖6.22根據(jù)某點的八個相鄰點的情況來判斷該點是否能刪除

圖6.22中,(1)不能刪,因為它是個內(nèi)部點,我們要求的是骨架,如果連內(nèi)部點也刪了,骨架也會被掏空的;(2)不能刪,和(1)是同樣的道理;(3)可以刪,這樣的點不是骨架;(4)不能刪,因為刪掉后,原來相連的部分?jǐn)嚅_了;(5)可以刪,這樣的點不是骨架;(6)不能刪,因為它是直線的端點,如果這樣的點刪了,那么最后整個直線也被刪了,剩不下什么;(7)不能刪,因為孤立點的骨架就是它自身。

總結(jié)一下,有如下的判據(jù):(1)內(nèi)部點不能刪除;(2)孤立點不能刪除;(3)直線端點不能刪除;(4)如果P是邊界點,去掉P后,如果連通分量不增加,則P可以刪除。

我們可以根據(jù)上述的判據(jù),事先做出一張表,從0到255共有256個元素,每個元素要么是0,要么是1。我們根據(jù)某點(當(dāng)然是要處理的黑色點了)的八個相鄰點的情況查表,若表中的元素是1,則表示該點可刪,否則保留。

查表的方法是,設(shè)白點為1,黑點為0;左上方點對應(yīng)一個8位數(shù)的第一位(最低位),正上方點對應(yīng)第二位,右上方點對應(yīng)的第三位,左鄰點對應(yīng)第四位,右鄰點對應(yīng)第五位,左下方點對應(yīng)第六位,正下方點對應(yīng)第七位,右下方點對應(yīng)的第八位,按這樣組成的8位數(shù)去查表即可。例如上面的例子中(1)對應(yīng)表中的第0項,該項應(yīng)該為0;(2)對應(yīng)37,該項應(yīng)該為0;(3)對應(yīng)173,該項應(yīng)該為1;(4)對應(yīng)231,該項應(yīng)該為0;(5)對應(yīng)237,該項應(yīng)該為1;(6)對應(yīng)254,該項應(yīng)該為0;(7)對應(yīng)255,該項應(yīng)該為0。

總結(jié)

以上是生活随笔為你收集整理的只腐蚀毛刺 腐蚀算法_图像的腐蚀 膨胀及细化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

一区二区三区久久精品 | 超碰在线最新 | 欧美另类高清 videos | 日韩中文字幕网站 | 啪啪免费试看 | 色 中文字幕 | 久久精品国产久精国产 | 亚洲永久av | 九九九热视频 | 久久精品国产一区二区三 | 韩国av一区二区三区在线观看 | 国内精品一区二区 | 超碰国产在线播放 | 中文字幕日本电影 | 国产最新视频在线观看 | 日本 在线 视频 中文 有码 | 国产专区免费 | 久久在线精品 | 久草视频网 | 麻豆影视在线播放 | 日本免费一二三区 | 色噜噜在线观看 | 综合久久久久久久久 | 国产成人一区二区三区在线观看 | 色综合久久五月 | 丁香激情视频 | av中文字幕在线观看网站 | 日韩视频免费观看高清完整版在线 | 国产精品久久在线 | 午夜精品一区二区三区免费视频 | 中文字幕在线免费观看 | av888.com| 中国一级片视频 | av免费观看高清 | 日本黄色大片儿 | 亚洲激精日韩激精欧美精品 | 亚洲在线视频免费 | 4438全国亚洲精品观看视频 | 国产 一区二区三区 在线 | 九9热这里真品2 | 久久国产精品久久w女人spa | 一级片黄色片网站 | 国产一区二区高清视频 | 激情大尺度视频 | 色婷婷狠狠干 | 日韩美女免费线视频 | 久久女同性恋中文字幕 | 日韩av手机在线观看 | 在线三级中文 | 亚洲色综合 | 日韩一区二区免费播放 | 蜜臀久久99精品久久久久久网站 | 亚洲精品国产第一综合99久久 | 日韩一区二区久久 | 免费亚洲黄色 | 色妞色视频一区二区三区四区 | 最新动作电影 | av不卡在线看 | 国产精品不卡在线 | 色婷婷av国产精品 | 色网站在线免费 | 色网站在线免费观看 | 午夜视频在线观看一区二区三区 | 精品xxx| 中文字幕国产精品一区二区 | 国产一级黄色片免费看 | 激情视频在线观看网址 | 国产成人黄色在线 | 亚洲电影成人 | 中国黄色一级大片 | 久久精品一区二区三区视频 | 欧美久久久一区二区三区 | 欧美精品免费一区二区 | 四虎永久免费网站 | 国产小视频在线观看 | 天天操天天干天天操天天干 | 精品亚洲免费 | 人人狠狠综合久久亚洲婷 | 视频一区二区免费 | 在线亚洲午夜片av大片 | 最新色站 | 婷婷性综合 | 精品国产一区二区三区在线观看 | 亚洲精品中文字幕在线 | 亚洲成人一二三 | 久久999精品| 亚洲视频一区二区三区在线观看 | 亚洲精品天天 | 久草视频免费观 | 亚洲精品国偷拍自产在线观看 | 国产精品成人自产拍在线观看 | 黄色在线观看污 | 天天骚夜夜操 | 97人人模人人爽人人少妇 | 国产第一页在线观看 | 成年人在线观看视频免费 | 三日本三级少妇三级99 | 日韩免费视频一区二区 | www.综合网.com | 国产精品久一 | 亚洲蜜桃在线 | 欧美精品久久久久久久久久久 | 国产二区av| 国产专区欧美专区 | 国产精品中文字幕在线观看 | 91插插插网站| 91在线一区二区 | 久久免费视频网站 | 超碰在线网 | 九九久久精品 | 亚洲专区中文字幕 | 国内久久看| 国产精品久久久久久久久久 | 美女精品在线 | 欧美日韩国产在线 | 久久九九精品 | 国产精品一区二区免费 | 日韩在线一区二区免费 | 国产又粗又长又硬免费视频 | 欧美成人精品欧美一级乱 | 亚洲国产成人精品在线观看 | 国产一区久久久 | 日韩精品久久一区二区三区 | 91插插视频 | 91视频高清免费 | 丁香激情网| 二区三区精品 | 欧美福利精品 | 久久精品亚洲精品国产欧美 | 亚洲无吗视频在线 | 免费av观看网站 | 午夜免费在线观看 | 久久草网站| 国产va精品免费观看 | 午夜免费福利片 | 久久久久影视 | 日韩免费在线看 | 精品字幕| 国产成人精品一区在线 | 最新影院 | 欧美精品免费在线观看 | 久久综合一本 | 国产极品尤物在线 | 国产精品成人久久久久久久 | 国产福利电影网址 | 欧洲av不卡 | 最近2019年日本中文免费字幕 | 欧美成人中文字幕 | 亚洲综合小说 | 中文字幕之中文字幕 | 国产精品美女 | 国产资源精品在线观看 | 最近乱久中文字幕 | 亚洲综合在线五月天 | 亚洲国产一区二区精品专区 | 91视频黄色 | 国产理论一区二区三区 | 亚洲精品小视频 | 亚洲在线视频观看 | 成人av电影免费在线播放 | 99视频在线 | 91在线91拍拍在线91 | 超碰人人国产 | 天天插天天射 | 99精品国产福利在线观看免费 | 在线免费观看国产视频 | 最近中文字幕在线播放 | 精品人人爽 | 国产精品久久9 | 久久国产高清视频 | 成人在线视频你懂的 | 国产h片在线观看 | 免费在线一区二区三区 | 国产亚洲人 | 国产精品久99| 中文日韩在线视频 | av永久网址 | 五月天天在线 | 国产精品va最新国产精品视频 | av福利资源| 五月婷婷激情综合网 | 在线观看av的网站 | japanesefreesexvideo高潮 | 国产破处在线播放 | 国产96在线观看 | 成 人 黄 色视频免费播放 | 91在线视频在线 | 久久人人看 | 久久人人爽| 天堂av一区二区 | 午夜aaaa| 亚洲劲爆av| 免费看毛片网站 | 成人cosplay福利网站 | 久久色在线观看 | 99这里都是精品 | 久久午夜色播影院免费高清 | 免费情趣视频 | 中文字幕在线免费观看视频 | 久久免费毛片视频 | a久久久久久 | 国产综合小视频 | 人人操日日干 | 91精品在线免费 | 国产精品久久久久久妇 | 日韩大片在线看 | 欧美极品一区二区三区 | japanese黑人亚洲人4k | 亚洲国产精品女人久久久 | 中文字幕国产视频 | 在线色亚洲 | 日韩乱色精品一区二区 | 中文字幕欧美日韩va免费视频 | 久久精品精品电影网 | 色综合激情网 | 国产高清专区 | 永久免费观看视频 | 天天天天爽 | 午夜精品一区二区三区在线 | 91大神精品视频在线观看 | 在线观看中文 | 国产精品色视频 | 亚洲欧美一区二区三区孕妇写真 | 精品福利在线视频 | 天堂久色 | 国产一级一级国产 | 黄色av免费电影 | 精品国产综合区久久久久久 | 中文字幕 成人 | 中文字幕视频三区 | 天天操网站| 911免费视频 | www色com| 亚洲精品在线观看网站 | 三级午夜片 | 精品国产一区二区三区免费 | 在线黄色观看 | 国产中文在线观看 | 亚洲国产无 | 久草精品在线播放 | 国产原创在线 | 国产精品免费久久久久久久久久中文 | av在线a| 日韩高清二区 | 成人四虎 | 在线观看免费观看在线91 | 欧美亚洲国产一卡 | 亚洲国产午夜精品 | 91女神的呻吟细腰翘臀美女 | 免费看国产a | 欧美国产日韩一区二区 | 天天做天天爱天天爽综合网 | 中文字幕成人在线 | 色5月婷婷 | 99亚洲国产精品 | 欧美日韩国产一区二区三区在线观看 | 欧美人体xx | 99欧美精品 | www黄在线 | 人人玩人人添人人 | 久久精品视频在线播放 | 波多野结衣在线观看一区二区三区 | 狠狠狠综合 | 天天操天天干天天操天天干 | 91成人在线观看高潮 | av大全免费在线观看 | 免费试看一区 | 国产精品永久免费观看 | wwwwwww色| 911精品美国片911久久久 | 最近日本中文字幕a | 色播99 | 久久久免费观看视频 | 久久av影视 | 欧美做受69 | 欧美成人理伦片 | 精品在线观看一区二区 | 国产精品6999成人免费视频 | 成人蜜桃 | 91桃色国产在线播放 | 久草www | 久久久久久国产一区二区三区 | 久久久香蕉视频 | 欧美少妇影院 | www.亚洲视频| 亚洲精品国产精品国自产在线 | 久久er99热精品一区二区三区 | 激情开心站 | 国产成人av | 深爱激情亚洲 | 伊人官网| 久久97久久97精品免视看 | 精品视频中文字幕 | 亚洲精品国产精品乱码不99热 | 国产精品青草综合久久久久99 | 日韩高清片 | 国产一区二区在线观看免费 | 日韩一区二区三区高清免费看看 | 日韩黄色大片在线观看 | 日韩一区二区在线免费观看 | 精产嫩模国品一二三区 | 久久综合久久综合久久 | 成人精品国产 | 国内精品美女在线观看 | 91福利社区在线观看 | www.久久久 | 欧美久久成人 | av资源免费在线观看 | 免费视频91| 婷婷色中文网 | 97成人精品视频在线播放 | 久久99久国产精品黄毛片入口 | 欧美日韩一区二区三区免费视频 | 婷婷丁香激情五月 | 91片在线观看| 国产福利小视频在线 | 一区二区三区免费网站 | 日本黄色免费看 | 99综合影院在线 | 国产96视频| 亚洲黄色激情小说 | 久久综合色婷婷 | 国产在线精品二区 | 久久av福利 | 天天操夜夜看 | 免费看三片 | 综合激情网 | 日本久久片 | 午夜手机电影 | 欧美一级免费在线 | 最近最新中文字幕 | 视频在线一区二区三区 | 日韩精品你懂的 | 欧洲高潮三级做爰 | 亚洲涩涩色 | 免费观看日韩 | 91精品国产一区 | 国产xx视频| 久久精品9 | 日本xxxx.com| 日韩欧美xxxx | 在线观看视频国产一区 | 精品国产aⅴ一区二区三区 在线直播av | 在线中文字幕播放 | 国产va精品免费观看 | 国产精品婷婷 | 欧美美女视频在线观看 | 国产又粗又猛又爽又黄的视频先 | 不卡电影免费在线播放一区 | 亚洲免费在线播放视频 | 国产一卡二卡在线 | 女人久久久久 | 美女禁18| 国产精品 久久 | 亚洲在线精品 | 亚洲作爱 | 日韩精品视频免费 | 插综合网 | av丁香花 | 中文在线天堂资源 | 亚洲区另类春色综合小说 | 日韩精品免费一区二区在线观看 | 日韩av一区二区在线播放 | 日韩免费视频在线观看 | a视频在线播放 | 国产1区在线 | 久久久久久久免费 | 国产小视频在线免费观看视频 | 国产午夜精品一区二区三区在线观看 | 男女精品久久 | 久久综合久久伊人 | 中文字幕一区二区三区精华液 | 丝袜网站在线观看 | 99国产一区| 激情av资源| 五月色婷 | 亚洲女人av| 成年人黄色免费看 | 国产精品99精品久久免费 | 五月婷婷开心 | a午夜在线| 亚洲人人爱 | 精选久久| 色久av| 亚洲精品色 | 婷婷5月激情5月 | 亚洲最大激情中文字幕 | 超碰免费久久 | 精品特级毛片 | 在线一区av| 国产午夜精品免费一区二区三区视频 | 国产一区二区在线免费 | 九九热在线精品视频 | 国产视频精品免费 | 久久影视精品 | 狠狠色丁婷婷日日 | 国产看片免费 | 天天操天天射天天爱 | 精品999久久久 | 欧美性生活大片 | 久久综合久久久 | av电影免费看 | 国产成人高清 | 91漂亮少妇露脸在线播放 | 日日夜精品 | 日韩精品视频在线免费观看 | 中文字幕免费高清在线观看 | 91av在线视频播放 | 99999精品| 在线播放视频一区 | 天天干天天弄 | 六月丁香在线视频 | 日韩精品免费专区 | 亚州日韩中文字幕 | 久久久久成 | 91最新在线视频 | 国产精品成人免费一区久久羞羞 | 亚洲国产精品电影在线观看 | 少妇激情久久 | 日韩网站在线播放 | 91天堂素人约啪 | 精品国产成人在线影院 | 99精品欧美一区二区蜜桃免费 | 日本中文字幕在线免费观看 | 9在线观看免费高清完整版在线观看明 | 色网站在线免费观看 | 黄免费在线观看 | 国产五月天婷婷 | 人人人爽 | 精品国产99| 综合久久久久久久 | 一区二区三区在线电影 | 成人国产精品电影 | 99麻豆久久久国产精品免费 | 国产精品久久一区二区无卡 | 婷婷色影院 | a午夜在线 | 久操中文字幕在线观看 | 国产成人一二三 | 午夜精品视频免费在线观看 | 国产成人av在线影院 | 亚洲精品在线观看视频 | 99欧美视频 | 成人午夜电影网 | 欧洲精品视频一区二区 | 欧美精品久久久久久久免费 | 在线va网站 | 日本超碰在线 | 国产在线 一区二区三区 | 成年人免费av | 99re久久精品国产 | a级片久久久 | 亚洲天堂网在线视频 | 久久99这里只有精品 | 日韩视频专区 | 在线观看中文字幕第一页 | 免费看片色 | 国产精品手机播放 | 在线观看色网站 | 久久久天堂 | av观看在线观看 | 福利视频在线看 | 中文字幕第一页在线视频 | 国产一级片直播 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 99色网站| 天天干天天操av | 免费看的黄色小视频 | 91免费观看视频网站 | 操高跟美女 | 狠狠干狠狠久久 | 中文字幕亚洲情99在线 | 91免费观看网站 | 欧美一级大片在线观看 | 日韩国产精品毛片 | 精品日韩在线一区 | 激情综合亚洲 | 国产精品久久久久久久久久免费 | 黄色免费网战 | 一区二区三区在线看 | 区一区二区三区中文字幕 | 色资源网在线观看 | 成人av地址 | 国产在线传媒 | 狠色狠色综合久久 | 欧美 激情 国产 91 在线 | 日韩中文字幕第一页 | 偷拍福利视频一区二区三区 | 中文字幕有码在线观看 | 99热这里只有精品国产首页 | 亚州精品在线视频 | 欧美日韩在线播放 | 狠狠干夜夜爽 | 日韩av影视 | 欧美黑人性猛交 | 亚洲国内精品在线 | 久久艹在线观看 | 96久久精品 | 久草剧场 | 免费污片 | 麻豆传媒精品 | 丁香午夜 | 亚洲精品乱码久久久久久蜜桃91 | 亚洲一级在线观看 | 日韩综合一区二区 | 怡红院av久久久久久久 | 国产精品入口a级 | 国产黄大片在线观看 | 日本精品久久久一区二区三区 | 免费av高清 | ,午夜性刺激免费看视频 | 九九热久久免费视频 | 成人av影院在线观看 | 亚州精品天堂中文字幕 | 亚洲自拍偷拍色图 | 波多野结衣视频一区 | av在线直接看 | 看污网站| 成年人视频在线免费观看 | 色婷婷www | 正在播放一区二区 | 婷婷综合五月天 | 久久视频在线观看中文字幕 | 亚洲精品国产区 | 99九九99九九九视频精品 | 六月激情婷婷 | 国产精品av一区二区 | 久久国产精品99国产 | 天天色天 | 成人久久国产 | 亚洲免费成人 | 久久久亚洲成人 | 日韩免费高清 | 狠狠狠干狠狠 | 欧美婷婷综合 | 亚洲视频www | 九色琪琪久久综合网天天 | 国产日产在线观看 | 美女黄频视频大全 | 中文字幕超清在线免费 | 在线观看精品视频 | 在线看av网址 | 免费一级日韩欧美性大片 | 亚洲成年片| 97免费| 精品国内自产拍在线观看视频 | 精品uu | 久久久久久国产精品 | 久青草电影 | 国产一级不卡毛片 | www.久久免费 | 狂野欧美激情性xxxx欧美 | 中文字幕91 | 久精品在线观看 | 五月婷婷国产 | 天天操天天操天天操天天操天天操天天操 | 狠狠干狠狠久久 | 操久久免费视频 | 国产精品一区二区久久精品爱涩 | 亚洲黄色片一级 | 日韩资源在线 | 特级大胆西西4444www | 久草视频在线免费 | 免费观看国产精品视频 | 精品一区二区电影 | 超碰97国产精品人人cao | 国产91精品一区二区麻豆网站 | 91精品天码美女少妇 | av免费观看网址 | 欧美成人精品欧美一级乱 | 97在线影院 | av在线播放中文字幕 | 久久夜色精品国产欧美乱 | 国产视频在线观看一区二区 | 中文字幕一区二区三区在线播放 | 狠狠干 狠狠操 | 欧美va天堂va视频va在线 | 亚洲色图av | 成人动漫一区二区三区 | 色综合激情网 | 丁香六月天婷婷 | 精品国产乱码久久久久久1区2匹 | 中文字幕在线观看视频一区二区三区 | 日韩久久精品一区二区三区下载 | 99 色 | 中文字幕文字幕一区二区 | 天天综合网久久 | 欧美日性视频 | 最近中文字幕mv | 婷婷六月综合亚洲 | aⅴ精品av导航 | 国产盗摄精品一区二区 | 国产精品久久久久久久久久免费看 | 欧美日韩首页 | 久久国产高清视频 | 天天操夜夜想 | 日本成人免费在线观看 | 亚洲精品免费在线观看 | 狠狠狠狠狠色综合 | 探花视频在线观看+在线播放 | av丝袜美腿 | 91中文在线| 91精品国产自产老师啪 | 亚洲成人精品 | 九九影视理伦片 | avlulu久久精品 | 欧美日韩国产一区二区在线观看 | 婷婷播播网 | 国内精品视频在线 | 91 中文字幕 | 手机在线永久免费观看av片 | 丁香色综合 | 日韩一区在线免费观看 | 中国美女一级看片 | 免费黄色网址大全 | 国产精品麻豆视频 | 激情综合网天天干 | 中文免费观看 | 91aaa在线观看| 亚洲欧洲av | 涩涩伊人 | 美女精品网站 | 国产一区视频在线 | 韩国一区二区三区视频 | 最新午夜电影 | 最新中文字幕在线资源 | 久久黄色免费 | 久久国产精品免费 | 免费观看www7722午夜电影 | 久久久久久久久久久久久久电影 | 99久久婷婷 | 99精品系列 | 久久人人爽人人人人片 | 最新色站| 狠狠插狠狠干 | 国产区欧美 | 九色视频自拍 | 国产成人亚洲精品自产在线 | 亚洲精品在线电影 | 婷婷5月激情5月 | 国产色女人 | 麻豆免费看片 | 黄色网www | 99免费| 亚洲电影网站 | 国内外成人在线视频 | 欧美一级性生活片 | 在线免费观看av网站 | 这里有精品在线视频 | 午夜久久久久久久 | 亚洲国产视频网站 | 中文字幕乱码日本亚洲一区二区 | 亚洲视频免费 | 日韩黄色免费 | 在线免费中文字幕 | 毛片黄色一级 | 国产精品123 | 看片黄网站 | 69亚洲视频 | 欧美日韩一区二区在线观看 | 亚洲视屏 | 欧美日韩精品国产 | 香蕉网在线 | 亚洲综合一区二区精品导航 | 91成人久久| 久久久96| 国产精品女视频 | av网址在线播放 | 96国产在线 | 玖玖在线观看视频 | av成人免费在线 | 日韩欧美视频 | av黄色一级片 | 国产精品综合在线观看 | 国产精品久久久久久久久久直播 | 亚洲精品免费视频 | 97视频总站 | 国产视频首页 | 特黄特色特刺激视频免费播放 | 久久久久久免费毛片精品 | 久久久久久国产精品免费 | 日韩视频中文 | 四虎永久网站 | 亚洲成人黄色在线观看 | 久久免费视频在线观看30 | 成人在线视频论坛 | 精品v亚洲v欧美v高清v | 91精品老司机久久一区啪 | 麻豆 videos| 黄色特级毛片 | 五月婷婷婷婷婷 | 久久综合九色综合久久久精品综合 | 国内精品二区 | 色综合天天综合网国产成人网 | 日本在线成人 | 国产99久久久国产精品免费看 | 国产黄色在线看 | 在线国产一区二区三区 | 国产精品99久久99久久久二8 | 国产一区二区三区久久久 | 欧美精品在线免费 | 一级免费黄色 | 亚洲最新av网址 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产麻豆剧传媒免费观看 | 国产精品一区电影 | 西西444www大胆无视频 | 狠狠狠色丁香综合久久天下网 | 91在线看网站 | 国产区免费 | 久久免费视频网 | 国产一区二区高清视频 | 91 | 亚洲尺码电影av久久 | 日韩伦理一区二区三区av在线 | 99在线观看视频网站 | 91av观看| 欧美成人xxx| 91九色网址 | av韩国在线 | 国产精品专区在线 | 中文字幕精品一区 | 天天操夜夜爱 | 久久99精品久久久久久久久久久久 | 99久久精品国产一区二区三区 | 日韩黄色一区 | 在线视频 亚洲 | 欧美做受xxx | 国产精品免费在线观看视频 | 亚洲在线视频播放 | www.成人久久 | 天天操天天爽天天干 | 激情欧美xxxx| 午夜视频免费在线观看 | 亚洲国产精品成人综合 | 三级黄色片在线观看 | 视频一区在线免费观看 | 激情伊人五月天久久综合 | a级国产乱理论片在线观看 特级毛片在线观看 | 女人久久久久 | 久久丝袜视频 | 亚洲国产丝袜在线观看 | 国产美女被啪进深处喷白浆视频 | 久久久久久在线观看 | 久久久精品福利视频 | 亚洲一区二区三区精品在线观看 | 午夜在线国产 | 激情综合五月天 | 国产在线91精品 | 又黄又爽又湿又无遮挡的在线视频 | 色资源网免费观看视频 | 深夜免费福利网站 | 免费日韩一区 | 97色狠狠| 国产精品免费观看视频 | 免费视频黄色 | 精品国产一区二区三区久久久蜜臀 | 欧美精品亚洲精品日韩精品 | 俺要去色综合狠狠 | 免费在线观看污网站 | 欧美日韩性视频在线 | 国产午夜精品福利视频 | 麻豆视频免费看 | 亚洲国产mv | 国产精品视频99 | 国产又粗又猛又黄 | 在线观看国产高清视频 | 国产精品综合av一区二区国产馆 | 欧美少妇的秘密 | 九九九九九精品 | 手机av看片| 亚洲免费小视频 | .国产精品成人自产拍在线观看6 | 免费黄色av. | 精品国产诱惑 | 四虎在线免费观看视频 | 一 级 黄 色 片免费看的 | 午夜av免费看 | 中文字幕成人一区 | 国产亚洲精品福利 | 久久伦理| 综合色中色| 西西444www | 国产精品一区二区免费看 | 人人爱人人爽 | 免费视频区| 久久精品欧美视频 | 久久人人爽人人片av | 国产在线播放不卡 | 国产一区二区三区免费视频 | 久久蜜臀一区二区三区av | 在线www色 | 特级黄色一级 | 国产精品第一页在线观看 | 国产精品久久久久久999 | 天天摸夜夜操 | 人人爱人人舔 | 99在线免费观看视频 | zzijzzij日本成熟少妇 | 久在线观看视频 | 久久久久久久久福利 | 国产精品亚洲片在线播放 | 国产97av| 国产96在线观看 | 久久伦理电影网 | 人人射av | av中文字幕网站 | 欧美三级高清 | 日韩欧美一二三 | 久久字幕网 | 日韩免费b| 玖玖视频免费在线 | 五月天国产精品 | 久久一区91 | 欧美一区二区伦理片 | 91精品蜜桃 | 国产亚洲精品电影 | 在线国产能看的 | 亚洲日本欧美在线 | 在线观看av大片 | 天天射天天干 | 欧美激情视频一区二区三区免费 | 亚洲另类xxxx | 最新国产精品视频 | 日日久视频| 中文字幕在线观看第三页 | 中文在线√天堂 | 狠狠狠干| 国产福利中文字幕 | 色婷婷激情电影 | 亚洲免费国产 | 日韩在线 一区二区 | 国产中文字幕一区二区 | 99精品国产一区二区三区麻豆 | 999久久久欧美日韩黑人 | 久草视频在线资源站 | 精品福利视频在线观看 | 国产黄色片久久久 | 日韩在线观看电影 | www黄色软件| 日韩乱码中文字幕 | 91av网址 | 国产精品电影在线 | av黄色影院 | 国产精品影音先锋 | 国产精久久 | 色天天 | 国产在线精 | 东方av免费在线观看 | 亚洲黄色在线免费观看 | 国产群p视频 | 91豆花在线 | 日韩在线中文字幕视频 | 国产欧美在线一区 | 亚洲欧美精品一区 | 狠狠狠干狠狠 | 国产精品6999成人免费视频 | 国产午夜三级 | 国产成人免费网站 | 日本三级全黄少妇三2023 | 在线观看日韩精品 | 天堂av在线网| 99久久精品国产亚洲 | 久久爱992xxoo | 亚洲电影av在线 | 91香蕉视频在线 | 亚洲a色 | 日韩免费视频 | 欧美色综合天天久久综合精品 | 欧美精品久久久久a | 久久久久久久久久久免费av | 婷婷激情在线观看 | 涩涩网站免费 | 五月婷婷综合激情 | 国产在线免费av | 亚洲综合色网站 | 国产精品va在线 | 亚洲另类视频在线观看 | 国内成人综合 | 国产视频在线免费观看 | 黄色三级免费看 | 天天色成人网 | 四虎在线免费观看视频 | 日本黄色大片免费看 | av一级在线 | 少妇搡bbbb搡bbb搡69 | 欧美日韩国产在线精品 | 日日碰狠狠添天天爽超碰97久久 | 日韩欧美视频在线免费观看 | 欧美极品一区二区三区 | 日韩免费视频一区二区 | 在线观看av免费 | 久久九九精品 | 欧美日韩视频网站 | 色网站在线免费 | 成人三级黄色 | 免费在线| 99在线精品视频 | 天天射,天天干 | 99久久精品网 | 亚洲欧美激情插 | 美女网站视频一区 | 国产黄色片免费观看 | 久久激情婷婷 | 久久99亚洲网美利坚合众国 | 久久国内免费视频 | 狠狠干夜夜爱 | 999视频网站| 日本公妇在线观看高清 | 久草观看视频 | 色综合久久综合网 | 在线观看色视频 | 综合黄色网 | 成人网444ppp| 又黄又网站 | 国内揄拍国产精品 | 天天草天天干天天射 | 四虎免费在线观看视频 | 91av片 | 色综合久久综合中文综合网 | 成人动漫精品一区二区 | 精品久久美女 | 69国产盗摄一区二区三区五区 | 四虎免费在线观看视频 | 久久久久高清毛片一级 | 午夜精品中文字幕 | av黄色大片| 免费视频黄色 | 91福利视频一区 | 国产成人精品在线播放 | 99精品黄色| 国产精品久免费的黄网站 | 97精品国产97久久久久久 | 天堂av在线网 | 国产婷婷视频在线 | 国产成人一区二区三区影院在线 | av在线播放亚洲 | 国产精品免费一区二区三区在线观看 | 九九视频在线 | 日韩午夜小视频 | 婷婷狠狠操 | 99 久久久久 | 黄色一级大片在线观看 | 在线视频免费观看 | 天天综合色网 | 黄色毛片视频免费 | 国产黄av | 在线观看黄色大片 | 人人爽人人爽人人片 | 99热精品国产 | www激情网 | 色免费在线 | 国产成人99久久亚洲综合精品 | 精品亚洲欧美一区 | 免费电影一区二区三区 | 91视频这里只有精品 | 亚洲精品在线二区 | 国产美女精品视频免费观看 | 国产成人在线播放 | 国产剧情一区 | 天堂黄色片 | 日本黄色免费大片 | 精品国产理论 | 国产区精品视频 | 免费国产在线精品 | 国产在线日本 | 视频一区二区视频 | www.五月天婷婷.com | 欧美成人精品欧美一级乱黄 | 五月天最新网址 | 91免费试看 | 天天射天天舔天天干 | 久久a热6 | 超碰在线人人 | 免费看片色 | 91av电影网 | 五月的婷婷 | 综合久久婷婷 | 国产尤物一区二区三区 | 久久大视频 | www.天天射.com | 久久久久久久久久国产精品 | 亚洲一区天堂 | 亚州精品在线视频 | 成人免费在线观看电影 | 欧美日韩一区二区三区在线观看视频 | 在线播放国产一区二区三区 | 亚洲国产成人精品在线观看 | 日韩免费高清在线观看 | 国内99视频 | 狠狠色香婷婷久久亚洲精品 | www.五月天激情 | 久久免费视频一区 | 人人澡人人爽欧一区 | 国产喷水在线 | 成人一级免费电影 | 美女精品在线观看 | 天堂在线一区二区三区 |