📄 cankaobai tianjia.cpp
字号:
#include "stdafx.h"
#include "mydib.h"
const float thresholdco = 0.05;
//象素个数的临界常数
const int thresholdnum = 100;
//灰度级数组
int histogram[256];
for(i =0;i<256;i++)
histogram = 0;
unsigned char RedTemp,GreenTemp,BlueTemp;
for (j=y1; j<y2; j++) {
for (i=x1; i<x2; i++) {
index = VL_RGB_PIXEL * (j*width + i);
//得到rgb值
RedTemp=input[index];
GreenTemp=input[index+1];
BlueTemp=input[index+2];
//计算灰度值
int gray = (RedTemp * 299 + GreenTemp * 587 + BlueTemp * 114)/1000;
histogram[gray]++;
}
}
int calnum =0;
int total = x2 * y2;
int num;
//下面的循环得到满足系数thresholdco的临界灰度级
for(i =0;i<256;i++)
{
if((float)calnum/total < thresholdco)
{
calnum+= histogram[255-i];//histogram保存的是某一灰度值的像素个数,calnum是边界灰度之上的像素数
num = i;
}
else
break;
}
int averagegray = 0;
calnum =0;
//得到满足条件的象素总的灰度值
for(i = 255;i>=255-num;i--)
{
averagegray += histogram*i;//总的像素的个数*灰度值
calnum += histogram;//总的像素数
}
averagegray /=calnum;
//得到光线补偿的系数
float co = 255.0/(float)averagegray;
//下面的循环对图象进行光线补偿
for (j=y1; j<y2; j++) {
for (i=x1; i<x2; i++)
{
//得到数据偏移
index = VL_RGB_PIXEL * (j*width + i);
//得到分量
for(int n=0;n<3;n++)
{
int nTemp=input[index+n]*co;
output[index+n]=(nTemp>255)?255:nTemp;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -