언어/C

C언어 영상 처리 - Gamma

이게될까 2024. 4. 18. 15:12
728x90
728x90

사람 눈은 카메라처럼 1픽셀 단위로 따박따박 인식 X

오차가 있다.

어두운 부분을 좀 더 세밀하게 나눌 수 있다고 볼 수 있다. -> 어둠에 민감!

감마 인코딩을 거치면 훨씬 잘 나뉘어 보인다.

8비트이므로 우린 MAX = 255이다.

전파의 수, 송신 오류로 감마가 변하거나 센서의 부족함으로 감마가 입혀졌어도 다시 되돌릴 수 있다.

함수형으로 전부 바꾸는중이라 점점 단순해지는중..

void GammaOut(double* y, double g, BITMAPFILEHEADER bmpFile, BITMAPINFOHEADER bmpInfo) {
	int width = bmpInfo.biWidth, height = bmpInfo.biHeight, size = bmpInfo.biSizeImage;
	double* gy;
	gy = (double*)calloc(width * height, sizeof(double));

	for (int j = 0; j < height; j++) {
		for (int i = 0; i < width; i++) {
			gy[j * width + i] = 255 * pow(y[j * width + i] / 255.0, 1/g);
		}
	}
	makeOutFile(bmpFile, bmpInfo, "gammaOut.bmp", gy);
	free(gy);

}
728x90