扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:WallesCai 来源:CSDN 2007年10月14日
关键字:
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 |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者