이미지를 그레이 스케일로 변환하는 수식이있는 것처럼 이미지의 밝기를 높이고 같은 레벨에서 줄이는 수식이 있습니까? r, g 및 b 픽셀 각각에 값을 추가하려고했습니다. 밝기는 증가하지만 동일한 값을 줄이면 원래 값을 되 찾을 수 없습니다.캔버스의 밝기/대비를 조정하는 공식은 무엇입니까?
var pixels = context.getImageData(...);
//loop over the pixel data and add a value
p[i] = p[i]+100;
p[i+1] = p[i+1]+100;
p[i+2] = p[i+2]+100;
이렇게하면 이미지가 밝아집니다. 그러나 모든 픽셀에서 100을 줄일 때 원래 이미지를 다시 얻지 못합니다.
나는 이것을 올바르게 계산할 수식이 있음을 웹에서 읽었습니다. 아무도 그것을 설명 할 수 있습니까? 그리고 대비와 감마에 대해서도 마찬가지입니까?
UPDATE :
감사 제안에 대한 모든. 나는 아래의 게시물 중 일부를 살펴본 후 이것을 시도했다.
var pixels = context.getImageData(...);
//loop over the pixel data and add a value
p[i] = p[i]+100 < 255 ? p[i]+100 : 255;
p[i+1] = p[i+1]+100 < 255 ? p[i+1]+100 : 255;
p[i+2] = p[i+2]+100 < 255 ? p[i+2]+100 : 255;
그리고 밝기 감소 :
var pixels = context.getImageData(...);
//loop over the pixel data and add a value
p[i] = p[i]-100 >= 0 ? p[i]-100 : 0;
p[i+1] = p[i+1]-100 >= 0 ? p[i+1]-100 : 0;
p[i+2] = p[i+2]+100 >= 0 ? p[i+2]-100 : 0;
내가 증가가 잘 작동 볼 수 있습니다,하지만 난 그것을 감소 할 때, 난 여전히 원래의 이미지를 얻을하지 않습니다 증가 밝기
, 원본 이미지와 밝아진 이미지 사이에는 약간의 차이가 있습니다!
내가 뭘 잘못하고 있니?
마지막으로 사용한 수식을 공유 하시겠습니까? – Kyle