文章作者 100test 发表时间 2007:03:10 18:18:53
来源 100Test.Com百考试题网
100 50 20 20 40 50 100 250 200 |
20:2 40:1 50:2 100:2 200:1 250:1 |
20:2 / 9 40:1 / 9 50:2 / 9 100:2 / 9 200:1 / 9 250:1 / 9 |
20:2 / 9 40:3 / 9 50:5 / 9 100:7 / 9 200:8 / 9 250:9 / 9 |
20:2 / 9 >> 20 (第一点不动,依然用20) 40:3 / 9×255=85 50:5 / 9×255=141 100:7 / 9×255=198 200:8 / 9×255=226 250:9 / 9×255=255 |
100 50 20 198 141 20 20 40 50 >> 10 85 141 100 250 200 198 255 226 |
Private Type ColorChart ColorCount(255) As Long 统计原来图片中的亮度出现次数 PixcelCount As Long 记录图片的像素个数 ColRatio(255) As Single 记录每一个亮度的出现比例 NewVal(255) As Byte 存放新的亮度索引 End Type Dim ColChart As ColorChart Public Sub StatisticsChart() Dim R As Byte Dim G As Byte Dim B As Byte Dim Gray As Integer Dim X As Long Dim Y As Long Dim I As Long Dim L As Long Dim M As Long Dim C As Double On Error GoTo ErrLine Done = False TimeFilter = timeGetTime With ColChart For X = 0 To 255 先把数组清零 .ColorCount(X) = 0 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) Gray = R * 3 G * 6 B Gray = Gray \ 10 .ColorCount(Gray) = .ColorCount(Gray) 1 Next Next .PixcelCount = X * Y 获得图片的像素总量 C = 1 / .PixcelCount .ColRatio( 0) = .ColorCount(M, 0) * C 计算每个亮度的出现比例 .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 |
相关文章
从笔试看二级VFP复习
计算机等级二级考试VisualFoxPro宝典
VB图像处理之铅笔画算法和木雕算法
VB图像处理之图像的色彩纠正
全国计算机二级(vf)sql语句练习1
VB中拖动没有标题栏的窗体
考纲分析:NCRE二级VF程序设计辅导
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛