真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

vb點虐 灰度二值 灰度值是不是只能是0到255

VB求灰度圖轉(zhuǎn)二值化,或者有直接二值化的代碼

用point?方法太慢了,還是用api的getDIBits和setDIBits吧,彩圖轉(zhuǎn)灰度圖的代碼如下:

臺江網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司于2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。

Private?Declare?Function?GetBitmapBits?Lib?"gdi32"?(ByVal?hBitmap?As?Long,?ByVal?dwCount?As?Long,?lpBits?As?Any)?As?Long

Private?Declare?Function?SetBitmapBits?Lib?"gdi32"?(ByVal?hBitmap?As?Long,?ByVal?dwCount?As?Long,?lpBits?As?Any)?As?Long

Private?Declare?Function?GetDIBits?Lib?"gdi32"?(ByVal?aHDC?As?Long,?ByVal?hBitmap?As?Long,?ByVal?nStartScan?As?Long,?ByVal?nNumScans?As?Long,?lpBits?As?Any,?lpBI?As?BitMapInfo,?ByVal?喚塵wUsage?As?Long)?As?Long

Private?Declare?Function?SetDIBits?Lib?"gdi32"?(ByVal?hdc?As?Long,?ByVal?hBitmap?As?Long,?ByVal?nStartScan?As?Long,?ByVal?nNumScans?As?Long,?lpBits?As?Any,?lpBI?As?BitMapInfo,?ByVal?wUsage?As?Long)?As?Long

Private?Type?BitMapInfoHeader?''文件信息頭——BITMAPINFOHEADER

biSize?As?Long

biWidth?As?Long

biHeight?As?Long

biPlanes?As?Integer

biBitCount?As?Integer

biCompression?As?Long

biSizeImage?As?Long

biXPelsPerMeter?As?Long

biYPelsPerMeter?As?Long

biClrUsed?As?Long

biClrImportant?As?Long

End?Type

Private?Type?RGBQuad

rgbBlue?As?Byte

rgbGreen?As?Byte

rgbRed?As?Byte

''rgbReserved?As?Byte

End?Type

Private?Type?BitMapInfo

bmiHeader?As?BitMapInfoHeader

bmiColors?As?RGBQuad

End?Type

Private?Sub?Command1_Click()

Dim?ix?As?Integer

Dim?iy?As?Integer

Dim?iWidth?As?Integer?'以像素為單位的圖形寬度

Dim?iHeight?As?Integer?'以像素為單位的圖形高度

Dim?bytGray?As?Byte

Dim?bytThreshold?As?Byte

Dim?bits()?As?Byte?'三維數(shù)組,用于獲取原彩色圖像中各像素的RGB數(shù)值以及存放轉(zhuǎn)化后的灰度值

Dim?bitsBW()?As?Byte?'三維數(shù)組,用于存放轉(zhuǎn)化為黑白圖后各搜鏈昌像素的值

'獲取圖形的寬度和高度

iWidth?=?Picture1.ScaleWidth?/?Screen.TwipsPerPixelX

iHeight?=?Picture1.ScaleHeight?/?Screen.TwipsPerPixelY

Picture1.Picture?=?Picture1.Image

'創(chuàng)建并初始化一個bitMapInfo自定義類型

Dim?bi24BitInfo?As?BitMapInfo

With?bi24BitInfo.bmiHeader

.biBitCount?=?32

.biCompression?=?0

.biPlanes?=?1

.biSize?=?Len(bi24BitInfo.bmiHeader)

.biWidth?=?iWidth

.biHeight?世扒=?Picture1.ScaleHeight?/?Screen.TwipsPerPixelY

End?With

'重新定義數(shù)組大小

ReDim?bits(3,?0?To?iWidth,?0?To?iHeight)?As?Byte

ReDim?bitsBW(3,?0?To?iWidth,?0?To?iHeight)?As?Byte

'使用GetDIBits方法一次性獲取picture1中各點的rgb值,比point方法或getPixel函數(shù)逐像素獲取像素rgb要快出一個數(shù)量級

lrtn?=?GetDIBits(Picture1.hdc,?Picture1.Picture.Handle,?0,?iHeight,?bits(0,?0,?0),?bi24BitInfo,?0)

'數(shù)組的三個維度分別代表像素的RGB分量、以圖形左下角為原點的X和Y坐標(biāo)。

'具體說來,這時bits(0,2,3)代表從圖形左下角數(shù)起橫向第2個縱向第3個像素的Blue值,而bits(1,2,3)和bits(2,2,3)分別的Green值和Red值.

bytThreshold?=?128?'這里定義轉(zhuǎn)換為黑白圖像時的閾值為128,即灰色亮度大于128的像素轉(zhuǎn)為白色,小于128的像素轉(zhuǎn)為黑的,此值可根據(jù)需要修改為0-255之前任意數(shù)值

For?ix?=?0?To?iWidth

For?iy?=?0?To?iHeight

'***********RGB轉(zhuǎn)為灰度的算法有多種,這里給出常見的兩種*******

'bytGray?=?bits(0,?ix,?iy)?*?0.11?+?bits(1,?ix,?iy)?*?0.59?+?bits(2,?ix,?iy)?*?0.3?'這是傳統(tǒng)的根據(jù)三原色亮度加權(quán)得到灰階的算法

bytGray?=?(bits(0,?ix,?iy)?^?2.2?*?0.0722?+?bits(1,?ix,?iy)?^?2.2?*?0.7152?+?bits(2,?ix,?iy)?^?2.2?*?0.2126)?^?(1?/?2.2)?'這是簡化?sRGB?IEC61966-2.1?[gamma=2.20],有點類似于photoshop中所用的算法

bits(0,?ix,?iy)?=?bytGray

bits(1,?ix,?iy)?=?bytGray

bits(2,?ix,?iy)?=?bytGray

'*********轉(zhuǎn)為黑白圖像********

If?bits(0,?ix,?iy)??bytThreshold?Then

bitsBW(0,?ix,?iy)?=?0

bitsBW(1,?ix,?iy)?=?0

bitsBW(2,?ix,?iy)?=?0

Else

bitsBW(0,?ix,?iy)?=?255

bitsBW(1,?ix,?iy)?=?255

bitsBW(2,?ix,?iy)?=?255

End?If

Next

Next

'將灰度圖顯示到picture2中

Picture2.Picture?=?Picture2.Image?'如果picture2的picture屬性為空,需要在setDIBits之前將其picture屬性設(shè)置一下,否則無法顯示出圖形

SetDIBits?Picture2.hdc,?Picture2.Picture.Handle,?0,?iHeight,?bits(0,?0,?0),?bi24BitInfo,?0

Picture2.Picture?=?Picture2.Image

'將黑白圖顯示到picture3中

Picture3.Picture?=?Picture3.Image

SetDIBits?Picture3.hdc,?Picture3.Picture.Handle,?0,?iHeight,?bitsBW(0,?0,?0),?bi24BitInfo,?0

Picture3.Picture?=?Picture3.Image

End?Sub

代碼運行很快,如圖所示圖片基本可瞬間完成

關(guān)于VB.NET中圖像二值化中的閥值法是什么意思呢

不要分

灰度圖像的像素的取值范圍為

0-255,0代銷橡表黑,255代表最亮,中間值是不同的亮度

圖像二值化,就是通指笑過唯斗含某個判斷標(biāo)準(zhǔn),將灰度圖像變成只有兩個值的圖像,即圖像值不是0,就是255

閾值,就是這個判斷標(biāo)準(zhǔn),比如,如果閾值取100,那么圖像灰度小于等于100的像素,都變成0

圖像灰度大于100的,都變成255

幾種經(jīng)典的二值化方法及其vb點虐 實現(xiàn)

圖像二值化的目的是最大限度的將圖象中感興趣的陪燃迅部分保留下來,在很多情況下,也是進行圖像分析、特征提取與模式識別之前的必要的圖像預(yù)處理過程。這個看似簡單的問題,在過去的四十年里受到國內(nèi)外學(xué)者的廣泛關(guān)注,產(chǎn)生了數(shù)以百計的閾值選取方法,但如同其他圖像分割算法一樣,沒有一個現(xiàn)有方法對各種各樣的圖像都能得到令人滿意的結(jié)果。

本文針對幾種經(jīng)典而常用的二值發(fā)放進行了簡單的討論并給出了其vb點虐 實現(xiàn)。

1、P-Tile法

Doyle于1962年提出的P-Tile (即P分位數(shù)法)可以說是最古老的一種閾值選取方法。該方法根據(jù)先驗概率來設(shè)定閾值,使得二值化后的目標(biāo)或背景像素比例等于先驗概率,該方法簡單高效,但是對于先驗概率難于估計的圖像卻無能為力。

2、OTSU 算法(大津法)

OSTU算法可以說是自適應(yīng)計算單閾值(用來轉(zhuǎn)換灰度圖像為二值圖像)的簡單高效方法。1978 OTSU年提出蘆此的最大類間方差法以其計算簡單、穩(wěn)定有效,一直廣為使用。

3、迭代法(最佳閥值法)

(1). 求出圖象的最大灰度值和最小灰度值,分別記為Zl和Zk,令初始閾值為:

(2). 根據(jù)閾值TK將圖象分割為前景和背景,分別求出兩者的平均灰度值Z0和ZB:

式中,Z(i,j)是圖像上(i,j)點的象素值,N(i,j)是(i,j)點的權(quán)值,一般取1。

(3). 若TK=TK+1,則所得即為閾值,否則轉(zhuǎn)2,迭代計算。

4、一維最大熵閾值法

它的思想是統(tǒng)計圖像中每一個灰度級出現(xiàn)的概率 ,計算該灰度級的熵 ,假設(shè)以灰度級T分割圖像,圖像中低于T灰度級的像素點構(gòu)成目標(biāo)物體(O),高于灰度級T的像素點構(gòu)成背景(B),那么各個灰度級在本區(qū)的分布概率為:

O區(qū): i=1,2……,t

B區(qū): i=t+1,t+2……L-1

上式中的 ,這樣對于數(shù)字圖像中的目標(biāo)和背景區(qū)域的熵分段瞎別為:

對圖像中的每一個灰度級分別求取W=H0 +HB,選取使W最大的灰度級作為分割圖像的閾值,這就是一維最大熵閾值圖像分割法。


本文題目:vb點虐 灰度二值 灰度值是不是只能是0到255
標(biāo)題URL:http://weahome.cn/article/ddpjdcs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部