2013-10-18 4 views
3

우리 팀은 습한 환경에서 촬영 한 두 사진의 대비를 계산하려고합니다.압축 JPEG 이미지의 L, a, b 공간의 불확실성

당사 포뮬러

콘트라스트 = SQRT ((ΔL)^2 + (ΔA)^2 + (ΔB)^2)

ΔL이 휘도의 차이가

, ΔA를 사용하여 콘트라스트를 계산할 (적색 - 녹색)의 차이이며, Δb는 (황색 - 청색), 이는 Lab 공간의 크기입니다.

우리의 (지금까지 성공한) 접근 방식은 각 픽셀을 RGB에서 Lab 공간으로 변환하고 이미지의 관련 섹션의 평균값을 A 및 B 변수로 사용하는 것이 었습니다.

그러나 환경에서는 TIFF로 저장하는 대신 이미지를 JPEG 형식으로 압축하는 (방수) GoPro 카메라를 사용하므로 트루 컬러 이미지를 사용하지 않습니다.

우리는 이제 A와 B의 불확실성을 알아야하고, 각 RGB 픽셀의 각 a와 b 값의 불확실성 (또는 평균/일반적인 불확실성)을 알아야 할 대비의 불확실성을 계량화해야합니다. 트루 컬러에서 JPEG로 변환 할 때 생성되는 표준/최대 불확실성을 알고있는 경우에만이 값을 계산할 수 있습니다.

따라서 JPEG 형식으로 저장할 때 RGB 채널마다 가능한 최대 차이를 알아야합니다.

EG. 압축 후 트루 컬러 RGB 픽셀 (5, 7, 9)이 (2, 9, 13)이되면 각 채널의 불확도는 (+/- 3, +/- 2, +/- 4)가됩니다.

카메라가 4 : 2 : 0의 종횡비로 색상을 압축한다고 생각합니다. 테스트 할 수있는 방법이 있습니까?

그러나 우리의 주요 질문은; 각 채널에서 가능한 최대 오류를 알거나 압축 된 RGB 결과로부터 불확실성을 계산하는 방법이 있습니까?

참고 : JPEG 압축이 손실되므로 JPEG에서 TIFF로 다시 변환 할 수 없다는 것을 알고 있습니다. 우리는 단지이 색 상 손실의 정도를 정량화 할 필요가 있습니다.

+0

어떤 라이브러리를 사용하고 있습니까? 기본 WIC/WPF 항목 또는 맞춤식 항목이 있습니까? – HeavenCore

+0

우리는 현재 Python의 PIL 라이브러리를 사용하고 있습니다. –

답변

1

요약하면 JPEG 이미지의 디지털 수의 가능한 최대 차이를 절대적으로 정량화 할 수있는 것은 이 아니라입니다.

이러한 점 중 하나를 이미 강조 표시했습니다. 이미지 데이터가 JPEG 표준을 사용하여 인코딩되는 경우 먼저 YCbCr 색 공간으로 변환됩니다.

인간 시각 시스템은 밝기 정보보다 채도 정보의 아티팩트에 덜 민감하기 때문에이 색 공간에서 한 번 크로마 채널 (Cb 및 Cr)이 다운 샘플링됩니다.

여기에 소개 된 오류는 내용에 따라 다릅니다. 매우 빠르게 변하는 채도와 색조의 영역은 일정한 색조/채도의 영역보다 상당히 많은 콘텐츠 손실을 가질 것입니다. 다운 샘플링의 양과 기하학을 설명하는 4 : 2 : 0 압축을 알고 있어도 (자세한 내용은 here) 내용은이 단계에서 도입 된 오류를 계속 나타냅니다.

또 다른 문제는 JPEG 압축에서 수행되는 양자화입니다.

결과 정보는 Discrete Cosine Transform을 사용하여 인코딩됩니다. 변환 된 공간에서 결과는 원하는 품질에 따라 다시 양자화됩니다. 이 양자화는 카메라에서 수행되는 파일 생성시 설정됩니다. 다시 말하지만 카메라로 수행되는 정확한 DCT 양자화를 알더라도 RGB 디지털 카운트에 대한 실제 효과는 궁극적으로 내용에 따라 다릅니다.

또 다른 어려움은 (다시) 내용 의존적 인 DCT 블록 아티팩트에 의해 생성되는 노이즈입니다.

이러한 장면 종속성은 알고리즘을 시각적 이미지 압축에 매우 적합하게하지만 절대적으로 특성화하기는 매우 어렵습니다.

그러나 터널 끝 부분에 약간의 불빛이 있습니다. JPEG 압축은 급격하게 변화하는 이미지 내용 영역에서 훨씬 더 많은 오류를 유발합니다. 일정한 색과 질감의 영역은 압축 오류와 아티팩트가 훨씬 적습니다. 귀하의 신청에 따라 귀하는이를 귀하의 이익에 활용할 수 있습니다.