1,灰度颜色: Private Type color Red As Long Green As Long Blue As Long End TypeFunction GrayScaleColor(color) As Long Dim ColorValues As color ColorValues = RGBValues(color) With ColorValues GrayScaleColor = (9798 * .Red + 19235 * .Green + 3735 * .Blue) \ 32768 .Red = GrayScaleColor .Green = GrayScaleColor .Blue = GrayScaleColor GrayScaleColor = RGB(.Red, .Green, .Blue) End With End Function2,可以用API把图片装进内存,再进行计算,这样快。具体代码你可以再网上找些图像方面的代码,一般都有。
Private Type color
Red As Long
Green As Long
Blue As Long
End TypeFunction GrayScaleColor(color) As Long
Dim ColorValues As color
ColorValues = RGBValues(color)
With ColorValues
GrayScaleColor = (9798 * .Red + 19235 * .Green + 3735 * .Blue) \ 32768
.Red = GrayScaleColor
.Green = GrayScaleColor
.Blue = GrayScaleColor
GrayScaleColor = RGB(.Red, .Green, .Blue)
End With
End Function2,可以用API把图片装进内存,再进行计算,这样快。具体代码你可以再网上找些图像方面的代码,一般都有。
一个是你上面的公式
或者(r+g+b)/3也有这么用的
2。遍历图像上每一个点,用什么方法会快一点?
映射到数组里操作
======================
api:
GetBitmapBits之类。
CreateDIBSection但一定不要用getpixel!
关于阀值的选取,也有专门的算法,你可以参考一下BLOG内关于"木雕"的算法
http://dev.csdn.net/develop/article/20/20442.shtm