gamma表的生成

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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章