> .NewVal( 0) = 0 ''''色值最小的色彩总是为0,不参与计算 L = 0 For I = 1 To 255 .ColRatio(I) = .ColorCount( I) * C + .ColRatio( L) ''''进行加权 .NewVal(I) = .ColRatio( I) * 255 ''''计算新的颜色索引 L = L + 1 Next
For X = 0 To OutPutWid For Y = 0 To OutPutHei R = Colval(2, X, Y) ''''读取原来点的颜色 G = Colval(1, X, Y) B = Colval(0, X, Y) R = .NewVal( R) ''''查表得到新的颜色 G = .NewVal( G) B = .NewVal( B) ColOut(2, X, Y) = R ''''把新的颜色放到输出数组中 ColOut(1, X, Y) = G ColOut(0, X, Y) = B Next Next
End With
Done = True TimeFilter = timeGetTime - TimeFilter Exit Sub ErrLine: Done = True MsgBox Err.Description End Sub
如果读者对这个过程中的一些数组和变量不清楚,请参考我前面的几篇文章,其中有详细说明: VB图像处理,(一)像素的获取和输出
VB图像处理,(二)二次线性插值的应用
VB图像处理,(三)几个常用滤镜的实现1
VB图像处理,(四)几个常用滤镜的实现2
下一篇将继续为大家讲述颜色对比度和亮度的调节算法,以及彩色图片转换到灰度图片的算法。 不要以为这个很简单,中间还是有一些小问题要注意的哦。
(这里只是说了我自己在写程序的时候用到的方法,存在很多的不足。并且因为在贴上来的时候作了部分修改,可能会存在部分错误,请各位高手不吝赐教,将您用到的更好的方法提供一下,我将不胜感激。)
上一页 [1] [2] |