A. C#圖像處理,對圖像進行二值化處理時,為什麼要將圖像的RGB值轉為HSL啊
因為細化演算法就是分析HSL的 不是分析RGB的
B. 幾種二值化方法c++實現
掃描線劃圖圖像二值化方法可以分為全局方法和局部方法:
全局方法根據線劃圖像的灰度直方圖和灰度空間分布確定一個閾值,由此實現灰度圖像N--值圖像的轉變,比較有代表性的全局演算法包括平均灰度法,Otsu方法,迭代最優演算法等。
局部方法是通過檢查每個像素點的鄰域來確定局部閾值,它比全局閾值有著更廣泛的應用,典型的局部閾值方法有Niblack方法,Bemsen方法,平均梯度法等。
全局閾值法期望灰度值法:設圖像的尺寸為M*N,其灰度取值為厶,厶,厶…..k,用隨機變數X來表示每個像素點的灰度值。可以用概率分布來描述圖像的灰度分布情況,分別設各灰度級出現的概率為式2.1:^,A=p(厶)(2.1),仍=p(厶),...,PN=p(「)且有∑見=1灰度圖像的一個重要的統計量就是灰度期望值,使用它為閾值可以使黑色像素和白色像素的灰度值均等,公式(2.2)即為灰度期望值的計算式:鰳刪=∑厶見n-tⅣ(2.2)該演算法對於簡單圖像的效果好,而且計算復雜度較低,缺點是對於亮度不均勻的線劃圖像效果較差。
Otsu方法:這種方法又被稱為最大類間方差方法,是一種自適應的閾值確定方法。它根據灰度特性,將圖像分為目標和背景兩個部分,目標和背景的方差越大,說明這兩個部分的差別越大,因此類間最大方差的分割意味著錯分概率最小。對於灰度圖像I(x,y),目標和背景的分割閾值為T,屬於目標的像素點數占整個圖像像素點的比例是‰,其平均灰度值為Po;背景像素點數占整個圖像像素點的比例為q,其平均灰度值為「,圖像總平均灰度值記為盧,類間方差為g。假設圖像M*N的背景比較暗,圖像中像素灰度值小於閾值T的像素個數記為%,7第二章細化之前的預處理分析像素灰度值大於閾值T的像素個數記為Ⅳl,所以有式2.3到式2.8成立:嘞=j麗No(2.3)q:熹戧=———L—MxN』(2.4)。IZ.4l、Ⅳo+M=MxN‰+q=1‖=‰肛o+qH(2.5)(2.6)(2.7)(2.8)g=‰(po—JLl)2+q(「一‖)對於灰度圖像來說,分別以每個灰度為閾值計算對應的類間方差,其中使類間方差最大化的灰度值即為閾值。該演算法對於較簡單的線劃圖像有良好的效果而且有較快的運算速度,所以這種演算法的應用非常廣泛。
最優閾值法:又被稱為逼近迭代演算法,這種方法的原理是將直方圖用兩個或多個正態分布的概率密度函數來近似表示的方法,閾值取為對應兩個或多個正態分布的最大值之間的最小概率處的灰度值,其結果是具有最小誤差的分割。這里的誤差包括兩部分:將目標誤認為背景而被剔除或將背景、雜訊歸為目標。最優閾值法的處理步驟:El:計算圖像的最小灰度值k和最大灰度值Z二,令閾值初值為式2.9:To=(Zmi。+Z懈)/2(2.9)E2:根據閾值將圖像分為目標和背景兩部分,求出兩部分的平均灰度值Zo和五,分別計算Z0和Zl的平均值,用公式2.10來表示:∑I(i,/)10,J璉TkZo=互=等‰∑I(i,/)T)01.2(1群砸,/)>『、。一E3:計算新閾值,用式2.1l表示:T「1=(Zo+z1)/2(2.11)如果T『=T「1或者達到設定的最大迭代次數就結束,否則轉向步驟E2。該演算法能較好區分圖像的目標和背景,但是會導致圖像細微信息的丟失。
局部閾值法Niblack方法:基於局部均值和局部標准差,基本公式:T(x,y)=m(x,y)+七』s化少).(2.12)長安大學碩士論文對於圖像I(x,y),在(X,y)處的閾值r(x,Y)由局部均值m(x,Y)和局部標准差s(x,Y)決定,k表示調整系數,一般設為.0.2。在Niblack方法中,窗口大小的選擇非常重要,既要小到能保持足夠的局部細節又要大到能抑制雜訊。Niblack方法能很好地保持圖像細節,對於清晰的線劃圖像能夠提供很好的二值化結果,但是在一些模糊的線劃圖像中會保留一些不必要的細節。在最初的Niblack方法中,k值是固定的,但是對於不同的圖像,通常需要根據圖像的灰度分布情況自動調整k的值才能取得較好的結果,因此後來提出很多改進的演算法,其中一個改進的Niblack方法的基本公式為式2.13-T(x,J,):m(x,y)【l+k(1一掣掣)】瓜(2.13)k和R都是經驗常量,改進的Niblack方法使用k和R來減少對雜訊的敏感度。
C. 有沒有指紋圖像二值化與細化的演算法的MATLAB程序
這是指紋識別的預處理演算法;拍攝的原始圖片中螺紋顏色為白色,底色為黑色。
首先是去噪;如果某點為白色,且它的8領域內白點數目小於3那麼判定它為干擾信號,置為背景黑色。如果某點位黑色,但它的8領域內白點數大於7個;判定它為干擾信號,置為螺紋的白色。
最後反色,置為螺紋黑色,底色白色,大概是為便於觀察把
D. excel 如何快速把一張表裡面的數據二值化函數怎麼寫>=0取1 若<0取0或置空 求指點
把問題作為內容(郵件主題一定要包含「excel」,本人以此為依據辨別非垃圾郵件,以免被誤刪)、excel樣表文件(請特別注意:要03版的(如果是03以後的,把文件「另存為」一下,類型框可以選擇03的),把現狀和目標效果表示出來)作為附件發來看下 [email protected]
E. 什麼樣的圖像可以進行細化
二值的當然不行。
快速zhang並行演算法,很好的一種常用方法
具體細化方法:
滿足下列四個條件的點可以刪除
p3 p2 p9
p4 p1 p8
p5 p6 p7
細化刪除條件為: (1)、2 < Nz(p1) <= 6 Nz為八鄰域中黑點的數目
(2)、Zo(p1)=1,指中心為黑點
(3)、p2*p4*p8=0 or Zo(p1)!=1 避免黑線被打斷
(4)、p2*p4*p6=0 or Zo(p4)!=1
細化演算法的分類:
依據是否使用迭代運算可以分為兩類:第一類是非迭代演算法,一次即產生骨架,如基於距離變換的方法。遊程長度編碼細化等。第二類是迭代演算法,即重復刪除圖像邊緣滿足一定條件的像素,最終得到單像素寬頻骨架。迭代方法依據其檢查像素的方法又可以再分成串列演算法和並行演算法,在串列演算法中,是否刪除像素在每次迭代的執行中是固定順序的,它不僅取決於前次迭代的結果,也取決於本次迭代中已處理過像素點分布情況,而在並行演算法中,像素點刪除與否與像素值圖像中的順序無關,僅取決於前次迭代的結果。在經典細化演算法發展的同時,起源於圖像集合運算的形態學細化演算法也得到了快速的發展。
Hilditch、Pavlidis、Rosenfeld細化演算法:這類演算法則是在程序中直接運算,根據運算結果來判定是否可以刪除點的演算法,差別在於不同演算法的判定條件不同。
其中Hilditch演算法使用於二值圖像,比較普通,是一般的演算法; Pavlidis演算法通過並行和串列混合處理來實現,用位運算進行特定模式的匹配,所得的骨架是8連接的,使用於0-1二值圖像 ;Rosenfeld演算法是一種並行細化演算法,所得的骨架形態是8-連接的,使用於0-1二值圖像 。 後兩種演算法的效果要更好一些,但是處理某些圖像時效果一般,第一種演算法使用性強些。
索引表細化演算法:經過預處理後得到待細化的圖像是0、1二值圖像。像素值為1的是需要細化的部分,像素值為0的是背景區域。基於索引表的演算法就是依據一定的判斷依據,所做出的一張表,然後根據魔鬼要細化的點的八個鄰域的情況查詢,若表中元素是1,若表中元素是1,則刪除該點(改為背景),若是0則保留。因為一個像素的8個鄰域共有256中可能情況,因此,索引表的大小一般為256。
F. 基於MATLAB的畢業設計有哪些
畢業設計是教學過程的最後階段採用的一種總結性的實踐教學環節。通過畢業設計,學生可以綜合應用所學的各種理論知識和技能,進行全面、系統、嚴格的技術及基本能力的練習。通常情況下,僅對大專以上學校要求在畢業前根據專業的不同進行畢業設計,對中等專業學校的學生不作要求。
基於MATLAB的畢業設計有:
1、基於MATLAB的視圖技術分析
2、二值圖像細化演算法研究與實現
3、基於MATLAB下的信號分析與處理
4、基於matlab的偽彩色處理與研究
5、matlab進行小波分析
G. 數字圖像處理中的膨脹原理是怎樣的
1.圖像細化的基本原理
⑴ 圖像形態學處理的概念
數字圖像處理中的形態學處理是指將數字形態學作為工具從圖像中提取對於表達和描繪區域形狀有用處的圖像分量,比如邊界、骨架以及凸殼,還包括用於預處理或後處理的形態學過濾、細化和修剪等。圖像形態學處理中我們感興趣的主要是二值圖像。
在二值圖像中,所有黑色像素的集合是圖像完整的形態學描述,二值圖像的各個分量是Z2的元素。假定二值圖像A和形態學處理的結構元素B是定義在笛卡兒網格上的集合,網格中值為1的點是集合的元素,當結構元素的原點移到點(x,y)時,記為Sxy,為簡單起見,結構元素為3x3,且全都為1,在這種限制下,決定輸出結果的是邏輯運算。
⑵ 二值圖像的邏輯運算
邏輯運算盡管本質上很簡單,但對於實現以形態學為基礎額圖像處理演算法是一種有力的補充手段。在圖像處理中用到的主要邏輯運算是:與、或和非(求補),它們可以互相組合形成其他邏輯運算。
⑶ 膨脹和腐蝕
膨脹和腐蝕這兩種操作是形態學處理的基礎,許多形態學演算法都是以這兩種運算為基礎的。
① 膨脹
是以得到B的相對與它自身原點的映像並且由z對映像進行移位為基礎的。A被B膨脹是所有位移z的集合,這樣, 和A至少有一個元素是重疊的。我們可以把上式改寫為:
結構元素B可以看作一個卷積模板,區別在於膨脹是以集合運算為基礎的,卷積是以算術運算為基礎的,但兩者的處理過程是相似的。
⑴ 用結構元素B,掃描圖像A的每一個像素
⑵ 用結構元素與其覆蓋的二值圖像做「與」操作
⑶ 如果都為0,結果圖像的該像素為0。否則為1
② 腐蝕
對Z中的集合A和B,B對A進行腐蝕的整個過程如下:
⑴ 用結構元素B,掃描圖像A的每一個像素
⑵ 用結構元素與其覆蓋的二值圖像做「與」操作
⑶ 如果都為1,結果圖像的該像素為1。否則為0
腐蝕處理的結果是使原來的二值圖像減小一圈。
⑷ 擊中(匹配)或擊不中變換
假設集合A是由3個子集X,Y和Z組成的集合,擊中(匹配)的目的是要在A中找到X的位置,我們設X被包圍在一個小窗口W中,與W有關的X的局部背景定義為集合的差(W-X),則X在A內能得到精確擬合位置集合是由X對A的腐蝕後由(W-X)對A的補集Ac腐蝕的交集,這個交集就是我們要找的位置,我們用集合B來表示由X和X的背景構成的集合,我們可以令B=(B1,B2),這里B1=X,B2=(W-X),則在A中對B進行匹配可以表示為:
A⊙B
我們稱為形態學上的擊中或擊不中變換。
⑸ 細化
圖像細化一般作為一種圖像預處理技術出現,目的是提取源圖像的骨架,即是將原圖像中線條寬度大於1個像素的線條細化成只有一個像素寬,形成「骨架」,形成骨架後能比較容易的分析圖像,如提取圖像的特徵。
細化基本思想是「層層剝奪」,即從線條邊緣開始一層一層向里剝奪,直到線條剩下一個像素的為止。圖像細化大大地壓縮了原始圖像地數據量,並保持其形狀的基本拓撲結構不變,從而為文字識別中的特徵抽取等應用奠定了基礎。細化演算法應滿足以下條件:
① 將條形區域變成一條薄線;
② 薄線應位與原條形區域的中心;
③ 薄線應保持原圖像的拓撲特性。
細化分成串列細化和並行細化,串列細化即是一邊檢測滿足細化條件的點,一邊刪除細化點;並行細化即是檢測細化點的時候不進行點的刪除只進行標記,而在檢測完整幅圖像後一次性去除要細化的點。
常用的圖像細化演算法有hilditch演算法,pavlidis演算法和rosenfeld演算法等。
註:進行細化演算法前要先對圖像進行二值化,即圖像中只包含「黑」和「白」兩種顏色。
還可以參考:http://blog.csdn.net/sunny3106/archive/2007/08/15/1745485.aspx
關鍵詞是 數學形態學,
H. Matlab中的細化函數是怎樣的
前幾天剛做的指紋識別演算法,細化部分,以指紋識別為例:getminu.m
%%%%%%%%%%%%%%%%%%%%%%%%%提取指紋細節點演算法,P為細化後圖像
function minu=getminu(P,smooth)
[height,width]=size(P);
minu=P;
cn_coding=zeros(height,width);%連接數編碼初始化
for i=2:height-1
for j=2:width-1
if P(i,j)==1
cn_coding(i,j)=0.5*(abs(P(i,j+1)-P(i-1,j+1))+abs(P(i-1,j+1)-P(i-1,j))+abs(P(i-1,j)-P(i-1,j-1))+abs(P(i-1,j-1)-P(i,j-1))+abs(P(i,j-1)-P(i+1,j-1))+abs(P(i+1,j-1)-P(i+1,j))+abs(P(i+1,j)-P(i+1,j+1))+abs(P(i+1,j+1)-P(i,j+1)));
if cn_coding(i,j)==1%端點
minu(i-1,j)=1;
minu(i+1,j)=1;
minu(i,j-1)=1;
minu(i,j+1)=1;
minu(i-1,j-1)=1;
minu(i-1,j+1)=1;
minu(i+1,j-1)=1;
minu(i+1,j+1)=1;
elseif cn_coding(i,j)==3%交叉點
minu(i-1,j-1)=1;
minu(i-1,j+1)=1;
minu(i+1,j-1)=1;
minu(i+1,j+1)=1;
end
end
end
end
figure,imshow(1-minu);
%%%%消除偽細節點%%%%%%%%%%%%%
detail=P;%%初始化
mark=smooth;
for i=1:height
for j=1:width
if smooth(i,j)==8
mark(i,j)=0;
else mark(i,j)=1;
end
end
end
%figure,imshow(mark)%背景與前景標志
for i=2:height-1
for j=2:width-1
%%%%注意這塊的邏輯關系,括弧的作用很關鍵的
if (cn_coding(i,j)==1||cn_coding(i,j)==3)&&mark(i,j)==1&&mark(i,j+5)*mark(i-5,j)*mark(i,j-5)*mark(i+5,j)==0
cn_coding(i,j)=0;%置為偽細節點
end
if cn_coding(i,j)==1%端點
detail(i-1,j)=1;
detail(i+1,j)=1;
detail(i,j-1)=1;
detail(i,j+1)=1;
detail(i-1,j-1)=1;
detail(i-1,j+1)=1;
detail(i+1,j-1)=1;
detail(i+1,j+1)=1;
elseif cn_coding(i,j)==3%交叉點
detail(i-1,j-1)=1;
detail(i-1,j+1)=1;
detail(i+1,j-1)=1;
detail(i+1,j+1)=1;
end
end
end
figure,imshow(1-detail);
I. 二次函數如何求最值
1、頂點式y=a(x-h)²+k
當a>0時,(拋物線開口向上,圖象有最低點,)二次函數有最小值k。
當a<0時,(拋物線開口向下,圖象有最高點,)二次函數有最大值k。
2、把二次函數化為一般形式y=ax²+bx+c,利用頂點坐標公式[-b/(2a),(4ac-b²)/(4a)]可求最大或最小值:
當a>0時,(拋物線開口向上,圖象有最低點,)二次函數有最小值(4ac-b²)/(4a)。
當a<0時,(拋物線開口向下,圖象有最高點,)二次函數有最大值(4ac-b²)/(4a)。
舉例說明:已知
,求函數
,
的最大值與最小值。
解:因為
所以
又
,所以
,即
令
,則問題轉化為求函數
的最值
因為
所以當
時,
所以,所求函數的最大值是22,最小值是-3。
(9)二值函數細化演算法擴展閱讀:
二次函數的定義:
一般地,如果
(a,b,c是常數,a≠0),那麼y叫做x的二次函數。
二次函數的圖像:是一條關於
對稱的曲線,這條曲線叫拋物線。
拋物線的主要特徵:
1、有開口方向,a表示開口方向;a>0時,拋物線開口向上;a<0時,拋物線開口向下。
2、有對稱軸
。
3、有頂點
。
4、c表示拋物線與y軸的交點坐標:(0,c)。
參考資料來源:搜狗網路--頂點式
J. matlab怎麼二值化
matlab中,使用im2bw()函數對圖片進行二值化。
matlab中DIP工具箱函數im2bw使用閾值(threshold)變換法把灰度圖像(grayscale image)轉換成二值圖像。所謂二值圖像, 一般意義上是指只有純黑(0)、純白(255)兩種顏色的圖像。 當然, 也可以是其他任意兩種顏色的組合。
在matlab命令行中鍵入doc im2bw或help im2bw即可獲得該函數的幫助信息。
im2bw()的語法如下:
1、BW = im2bw(I, level)
2、BW = im2bw(X, map, level)
3、BW = im2bw(RGB, level)
其中level就是設置閾值的。level取值范圍[0, 1]。
(10)二值函數細化演算法擴展閱讀:
matlab中,使用graythresh()函數智能建議二值化所需的閾值:
在matlab中使用im2bw函數進行圖像二值化處理時(將圖像轉換為 二值圖像), 人為設定閾值並不總是十分有效。matlab工具箱為我們提供了graythresh函數。該函數使用最大類間方差法得到一個閾值, 利用這個閾值進行圖像二值化通常是十分有效的。