gamma亮度變換是數字視頻處理中一個非常重要的步驟。
算法:
out = ( (in/max) .^ gamma )*max
進行gamma變換的一種方法是查表法。
詳見:http://blog.csdn.net/yuan1125/article/details/5902343
#include
#include
#include
int main(int argc,char*argv[]){
int i;
int n;
int max;
float val;
switch(argc){
case 1:
printf("Use %s -h to get help.\n",argv[0]);
exit(0);
break;
case 3:
if((0==strcmp("-n",argv[1]))){
n=atoi(argv[2]);
if(n>0) break;
else {
printf("Error: Invalid arguments. Arg should not be %d.\n",n);
exit(1);
break;
}
}
case 2:
if((0==strcmp("-h",argv[1]))){
printf("Usage: %s -n \n",argv[0]);
exit(0);
break;
}
default:
if(argc>3){
printf("Error: Too many arguments.\n");
exit(1);
}
else{
printf("Error: Insufficient or unrecognized arguments.\n");
exit(1);
}
}
max=pow(2,n)-1;
printf("//LUT Gamma=%.2f\n",0.45);
printf("float gamma_table[%d]={\n",max+1);
for(i=0;i
下面是gamma=0.45,8比特的查找表:
<script src="https://code.csdn.net/snippets/670511.js"></script>
下面是gamma=0.45,10比特的查找表:
<script src="https://code.csdn.net/snippets/670512.js"></script>