當前位置:首頁 » 操作系統 » 腐蝕文字演算法

腐蝕文字演算法

發布時間: 2022-11-29 06:48:49

A. 膨脹演算法和腐蝕演算法在圖像處理中怎麼應用啊

腐蝕是一種消除邊界點,使邊界向內部收縮的過程。可以用來消除小且無意義的物體。
膨脹是將與物體接觸的所有背景點合並到該物體中,使邊界向外部擴張的過程。可以用來填補物體中的空洞。

B. 不銹鋼板怎麼做腐蝕字

腐蝕,專業的叫法應該叫做蝕刻,在不銹鋼上面腐蝕文字,首先要製作掩膜,俗稱保護膜,保護膜的做法有多種,關鍵是看文字的大小以及標牌數量的多少,從精細度上,目前行業中普遍使用的是感光油墨工藝,即使用感光油墨通過曬版、顯影、固話等工序呈現出文字,然後使用化學或者電化學的工藝進行腐蝕,待腐蝕速度達到後,往往還要進行填漆。

C. opencv的腐蝕用的是什麼演算法

可以修改下,膨脹腐蝕時用到的kernel.
kernel的形狀一般有下面三種:
矩形:
morph_rect
交叉形:
morph_cross
橢圓形:
morph_ellipse
比如:想選用15*15的正方形kernel進行膨脹操作.
可以利用:
mat
element
=
getstructuringelement(morph_rect,
size(15,
15));
dilate(image,
out,
element);
這樣的語句來實現。

D. 數字圖像處理 膨脹和腐蝕演算法的實現

腐蝕的演算法:
用3x3的結構元素,掃描圖像的每一個像素
用結構元素與其覆蓋的二值圖像做「與」操作
如果都為1,結果圖像的該像素為1。否則為0。
結果:使二值圖像減小一圈
定義:E = B  S = { x,y | SxyB}

膨脹的演算法:
用3x3的結構元素,掃描圖像的每一個像素
用結構元素與其覆蓋的二值圖像做「與」操作
如果都為0,結果圖像的該像素為0。否則為1
結果:使二值圖像擴大一圈
定義:E = B  S = { x,y | Sxy∩B ≠Ф}

E. 如何進行數字圖像處理中的膨脹和腐蝕計算

腐蝕的演算法:
用3x3的結構元素,掃描圖像的每一個像素
用結構元素與其覆蓋的二值圖像做「與」操作
如果都為1,結果圖像的該像素為1。否則為0。
結果:使二值圖像減小一圈
定義:E = B  S = { x,y | SxyB}

膨脹的演算法:
用3x3的結構元素,掃描圖像的每一個像素
用結構元素與其覆蓋的二值圖像做「與」操作
如果都為0,結果圖像的該像素為0。否則為1
結果:使二值圖像擴大一圈
定義:E = B  S = { x,y | Sxy∩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級灰度圖,不過只調色板中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為緩沖區大小

BufSize=OffBits+bi.biHeight*LineBytes;

//為新的緩沖區分配內存

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);

//拷貝頭信息和點陣圖數據

memcpy(lpTempImgData,lpImgData,BufSize);

if(Hori)

{

//在水平方向進行膨脹運算

for(y=0;y<bi.biHeight;y++){

//lpPtr指向原圖數據,lpTempPtr指向新圖數據

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

lpTempPtr=(char*)lpTempImgData+

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

for(x=1;x<bi.biWidth-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{

//在垂直方向進行腐蝕運算

for(y=1;y<bi.biHeight-1;y++){ //注意為防止越界,y的范圍從1到高度-2

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

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

for(x=0;x<bi.biWidth;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);

//產生新的點陣圖

hBitmap=CreateDIBitmap(hDc,(LPBITMAPINFOHEADER)lpTempImgData,

(LONG)CBM_INIT,

(LPSTR)lpTempImgData+

sizeof(BITMAPINFOHEADER)+

NumColors*sizeof(RGBQUAD),

(LPBITMAPINFO)lpTempImgData,

DIB_RGB_COLORS);

//起不同的結果文件名

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);

//釋放內存及資源

ReleaseDC(hWnd,hDc);

LocalUnlock(hTempImgData);

LocalFree(hTempImgData);

GlobalUnlock(hImgData);

return TRUE;

}

腐蝕源碼

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級灰度圖,不過只用調色板中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為緩沖區大小

BufSize=OffBits+bi.biHeight*LineBytes;

//為新的緩沖區分配內存

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);

//拷貝頭信息和點陣圖數據

memcpy(lpTempImgData,lpImgData,BufSize);

if(Hori)

{

//在水平方向進行腐蝕運算

for(y=0;y<bi.biHeight;y++){

//lpPtr指向原圖數據,lpTempPtr指向新圖數據

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

lpTempPtr=(char*)lpTempImgData+

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

for(x=1;x<bi.biWidth-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{

//在垂直方向進行腐蝕運算

for(y=1;y<bi.biHeight-1;y++){ //注意為防止越界,y的范圍從1到高度-2

//lpPtr指向原圖數據,lpTempPtr指向新圖數據

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

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

for(x=0;x<bi.biWidth;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);

//產生新的點陣圖

hBitmap=CreateDIBitmap(hDc,(LPBITMAPINFOHEADER)lpTempImgData,

(LONG)CBM_INIT,

(LPSTR)lpTempImgData+

sizeof(BITMAPINFOHEADER)+

NumColors*sizeof(RGBQUAD),

(LPBITMAPINFO)lpTempImgData, DIB_RGB_COLORS);

//起不同的結果文件名

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);

//釋放內存及資源

ReleaseDC(hWnd,hDc);

LocalUnlock(hTempImgData);

LocalFree(hTempImgData);

GlobalUnlock(hImgData);

return TRUE;

}

F. 圖像膨脹腐蝕演算法原理

膨脹和腐蝕的主要用途:
消除雜訊;
分割出獨立的圖像元素,在圖像中連接相鄰的元素;
尋找圖像中明顯的極大值或極小值區;
求出圖像的梯度;
【注】:
腐蝕和膨脹是對像素值大的部分而言的,即高亮白部分而不是黑色部分;
膨脹是圖像中的高亮部分進行膨脹,領域擴張,效果圖擁有比原圖更大的高亮區域;
腐蝕是圖像中的高亮部分被腐蝕掉,領域縮減,效果圖擁有比原圖更小的高亮區域;
2
/9
膨脹原理:
膨脹:求局部最大值;
①定義一個卷積核B,
核可以是任何的形狀和大小,且擁有一個單獨定義出來的參考點-錨點(anchorpoint);
通常和為帶參考點的正方形或者圓盤,可將核稱為模板或掩膜;
②將核B與圖像A進行卷積,計算核B覆蓋區域的像素點最大值;
③將這個最大值賦值給參考點指定的像素;
因此,圖像中的高亮區域逐漸增長。
3
/9
腐蝕原理:
腐蝕:局部最小值(與膨脹相反);
①定義一個卷積核B,
核可以是任何的形狀和大小,且擁有一個單獨定義出來的參考點-錨點(anchorpoint);
通常和為帶參考點的正方形或者圓盤,可將核稱為模板或掩膜;
②將核B與圖像A進行卷積,計算核B覆蓋區域的像素點最小值;
③將這個最小值賦值給參考點指定的像素;
因此,圖像中的高亮區域逐漸減小。
4
/9
OpenCV中膨脹函數-dilate()
格式:
void dilate(
InputArray src,//輸入
OutputArray dst, //輸出
InputArray kernel, //核大小
Point anchor=Point(-1,-1),// 錨位置,(-1,-1)為中心
int iterations=1, //迭代次數
int borderType=BORDER_CONSTANT,//圖像邊界像素模式
const Scalar& borderValue=morphologyDefaultBorderValue()//邊界值
)
【注】:
關於核,一般配合getStructuringElement()使用;
getStructuringElement():返回指定形狀和尺寸的結構元素;
格式:
getStructuringElement(int shape, Size ksize, Point anchor=Point(-1,-1));
參數:
shape:表核的形狀,矩形MORPH_RECT;交叉形MORPH_CROSS;橢圓形MORPH_ELLIPSE;
ksize:核尺寸大小;
anchor:錨點的位置,錨點隻影響形態學運算結果的偏移;
5
/9
OpenCV中腐蝕函數-erode()
格式:
void erode(
InputArray src,//輸入
OutputArray dst, //輸出
InputArray kernel, //核大小
Point anchor=Point(-1,-1),// 錨位置,(-1,-1)為中心
int iterations=1, //迭代次數
int borderType=BORDER_CONSTANT,//圖像邊界像素模式
const Scalar& borderValue=morphologyDefaultBorderValue()//邊界值
)
6
/9
形態學開運算:
開運算(Open Operation):先腐蝕後膨脹的過程;
功能:
消除小物體;
在纖細處分離物體;
平滑較大的邊界並不明顯改變其面積;
7
/9
形態學閉運算:
閉運算(Closing Openration),先膨脹後腐蝕;
功能:
排除小型黑洞(黑斑);
8
/9
OpenCV:morphologyEx()
功能:morphologyEx函數利用基本的膨脹和腐蝕技術,來執行更加高級形態學變換,
如開閉運算,形態學梯度,「頂帽」、「黑帽」等等。

G. 圖像處理中的腐蝕與膨脹是什麼意思

圖像處理分為多種,對於不同的圖像腐蝕和膨脹的定義不同。

1、形態學圖像處理是在圖像中移動一個結構元素,然後將結構元素與下面的二值圖像進行交、並等集合運算;先腐蝕後膨脹的過程稱為開運算。

它具有消除細小物體,在纖細處分離物體和平滑較大物體邊界的作用。先膨脹後腐蝕的過程稱為閉運算。它具有填充物體內細小空洞,連接鄰近物體和平滑邊界的作用。

2、對灰度圖像的膨脹(或腐蝕)操作有兩類效果:

(1)如果結構元素的值都為正的,則輸出圖像會比輸入圖像亮(或暗);

(2)根據輸入圖像中暗(或亮)細節的灰度值以及它們的形狀相對於結構元素的關系,它們在運算中或被消減或被除掉。

腐蝕就是使用演算法,將圖像的邊緣腐蝕掉。作用就是將目標的邊緣的「毛刺」踢除掉。

膨脹就是使用演算法,將圖像的邊緣擴大些。作用就是將目標的邊緣或者是內部的坑填掉。

使用相同次數的腐蝕與膨脹,可以使目標表面更平滑。

(7)腐蝕文字演算法擴展閱讀:

1、圖像變換:由於圖像陣列很大,直接在空間域中進行處理,涉及計算量很大。因此,往往採用各種圖像變換的方法,如傅立葉變換、沃爾什變換、離散餘弦變換等間接處理技術,將空間域的處理轉換為變換域處理,不僅可減少計算量,而且可獲得更有效的處理。

目前新興研究的小波變換在時域和頻域中都具有良好的局部化特性,它在圖像處理中也有著廣泛而有效的應用。

2、圖像編碼壓縮:圖像編碼壓縮技術可減少描述圖像的數據量(即比特數),以便節省圖像傳輸、處理時間和減少所佔用的存儲器容量。

壓縮可以在不失真的前提下獲得,也可以在允許的失真條件下進行。編碼是壓縮技術中最重要的方法,它在圖像處理技術中是發展最早且比較成熟的技術。

3、圖像增強和復原:圖像增強和復原的目的是為了提高圖像的質量,如去除雜訊,提高圖像的清晰度等。圖像增強不考慮圖像降質的原因,突出圖像中所感興趣的部分。

如強化圖像高頻分量,可使圖像中物體輪廓清晰,細節明顯;如強化低頻分量可減少圖像中雜訊影響。圖像復原要求對圖像降質的原因有一定的了解,一般講應根據降質過程建立「降質模型」,再採用某種濾波方法,恢復或重建原來的圖像

參考資料來源:網路-圖像處理

H. 如何在金屬上腐蝕字,用什麼葯水,以及它的程序

(1)金屬銅上腐蝕字,用三氯化鐵水溶液!
(2)程序:銅塗蠟,字跡刻穿,三氯化鐵水溶液浸泡!

I. 電腐蝕標牌的價錢怎麼算的

腐蝕標牌的演算法在全國都是長*寬(厘米)*0.05就出來一塊牌的單價了,實際上就是五分一平方厘米,五百一平方米了,這是不銹鋼鈦金腐蝕牌的價格,如果是鋁牌的話就用長*寬(厘米)*0.03就算出來了,實際就是三分一平方厘米,三百一平方米了。
至於你說的電蝕刻沒有正規的標牌廠用電蝕刻機來腐蝕標牌的,蝕刻面不均勻,大面積腐蝕速度慢,不能用於量產,也不能做凸字大面積蝕刻,不能用做標牌的大批量生產加工。由於電解蝕刻是在金屬導電的情況下形成蝕刻的,那麼我們的產品在蝕刻下去有任何的深度時側面也將被蝕刻的,這樣很多精細圖案,精細文字將被蝕刻」爛「掉,只有那些賣電蝕刻設備的才誇大它的功能。

J. 如何在金屬上腐蝕字,用什麼葯水,以及它的程序

金屬銅上腐蝕字,用三氯化鐵水溶液。

程序:

在金屬表面用油漆寫陰文(就是沒有文字的地方用油漆塗滿,有文字的地方裸露金屬,特別注意:這里說的沒有文字的地方,包括金屬的背面和側面)。等待油漆干透。

在一個不銹鋼(或其它耐酸的材質)容器中到入稀硫酸或是稀鹽酸,或是稀硝酸,酸的量已能淹沒金屬為宜。將塗了油漆的金屬放入稀硫酸或稀鹽酸或稀硝酸中。

裸露部分的金屬與酸接觸,就會被腐蝕。注意觀察腐蝕的深度,當達到樓主的要求時,將金屬取出。用水沖洗金屬,將粘附在表面的酸完全洗凈。去掉表面的油漆。


(10)腐蝕文字演算法擴展閱讀:

金屬腐蝕的防護主要方法:

①改變金屬的內部結構。例如,把鉻、鎳加入普通鋼中製成不銹鋼。

②在金屬表面覆蓋保護層。例如,在金屬表面塗漆、電鍍或用化學方法形成緻密耐腐蝕的氧化膜等。

③電化學保護法。因為金屬單質不能得電子,只要把被保護的金屬做電化學裝置發生還原反應的一極——陰極,就能使引起金屬電化腐蝕的原電池反應消除。具體方法有:

a.外加電流的陰極保護法。利用電解裝置,使被保護的金屬與電源負極相連,另外用惰性電極做陽極,只要外加電壓足夠強,就可使被保護的金屬不被腐蝕。

b.犧牲陽極的陰極保護法。利用原電池裝置,使被保護的金屬與另一種更易失電子的金屬組成新的原電池。發生原電池反應時,原金屬做正極(即陰極),被保護,被腐蝕的是外加活潑金屬——負極(即陽極)。此外,還有加緩蝕劑等方法,減緩或防止金屬被腐蝕。

熱點內容
沒簽名只加密 發布:2025-07-04 18:54:38 瀏覽:253
紅米手機存儲問題 發布:2025-07-04 18:50:43 瀏覽:840
水電煤演算法 發布:2025-07-04 18:36:44 瀏覽:329
天翼視訊緩存文件夾 發布:2025-07-04 18:36:43 瀏覽:96
unix網路編程第2卷 發布:2025-07-04 18:33:41 瀏覽:781
編譯歷史 發布:2025-07-04 18:23:01 瀏覽:851
空調壓縮機種類 發布:2025-07-04 18:13:58 瀏覽:242
中國有ip6伺服器嗎 發布:2025-07-04 17:58:56 瀏覽:726
第六章編譯原理答案 發布:2025-07-04 17:37:55 瀏覽:40
php內存優化 發布:2025-07-04 17:25:54 瀏覽:664