標籤:

Gamma校正及其實現

圖2中左圖為原圖,中圖為gamma=1/2.2在校正結果,原圖中左半側的灰度值較高,右半側的灰度值較低,經過gamma=1/2.2校正後(中圖),左側的對比度降低(見鬍鬚),右側在對比度提高(明顯可以看清面容),同時圖像在的整體灰度值提高。

右圖為gamma=2.2在校正結果,校正後,左側的對比度提高(見鬍鬚),右側在對比度降低(面容更不清楚了),同時圖像在的整體灰度值降低。

值得一提的是,人眼是按照gamma<1的曲線對輸入圖像進行處理的。

參考資料:

[1]http://en.wikipedia.org/wiki/Gamma_correction

[2]http://www.cambridgeincolour.com/tutorials/gamma-correction.htm

[3]https://github.com/bytefish/opencv/blob/master/misc/tan_triggs.cpp

代碼:

[cpp] view plain copy

  1. #include<opencv2/core/core.hpp>
  2. #include<opencv2/imgproc/imgproc.hpp>
  3. #include<opencv2/highgui/highgui.hpp>
  4. #include<iostream>
  5. usingnamespacecv;
  6. usingnamespacestd;
  7. //Normalizesagivenimageintoavaluerangebetween0and255.
  8. Matnorm_0_255(constMat&src){
  9. //Createandreturnnormalizedimage:
  10. Matdst;
  11. switch(src.channels()){
  12. case1:
  13. cv::normalize(src,dst,0,255,NORM_MINMAX,CV_8UC1);
  14. break;
  15. case3:
  16. cv::normalize(src,dst,0,255,NORM_MINMAX,CV_8UC3);
  17. break;
  18. default:
  19. src.copyTo(dst);
  20. break;
  21. }
  22. returndst;
  23. }
  24. intmain(intargc,constchar*argv[]){
  25. //Getfilenametothesourceimage:
  26. if(argc!=2){
  27. cout<<"usage:"<<argv[0]<<"<image.ext>"<<endl;
  28. exit(1);
  29. }
  30. //Loadimage&getskinproportions:
  31. //Matimage=imread(argv[1],CV_LOAD_IMAGE_GRAYSCALE);
  32. Matimage=imread(argv[1],CV_LOAD_IMAGE_COLOR);
  33. //Converttofloatingpoint:
  34. MatX;
  35. image.convertTo(X,CV_32FC1);
  36. //image.convertTo(X,CV_32F);
  37. //Startpreprocessing:
  38. MatI;
  39. floatgamma=1/2.2;
  40. pow(X,gamma,I);
  41. //Drawitonscreen:
  42. imshow("OriginalImage",image);
  43. imshow("Gammacorrectionimage",norm_0_255(I));
  44. //imwrite("origin.jpg",image);
  45. imwrite("gamma_inv2.2.jpg",norm_0_255(I));
  46. //Showtheimages:
  47. waitKey(0);
  48. //Success!
  49. return0;
  50. }

推薦閱讀:

如何才能實現身心和財務的真正自由? - 技術分析作圖 - 滿江紅股票網 |股票,證券,技術...
心智書單|這 4 本書讓你掌握執行意圖,高效行動,實現目標
不工作也有源源不斷的收入,這7本書,真的可以幫你實現!
適應新常態 爭創新優勢 努力實現全區經濟社會新發展
如果你愛我愛到可以為我去死、那請你馬上實現你的諾言。

TAG:實現 |