SYDLAB_inha/Metrics for Dynamic Mesh Coding

Metrics - Image-based sampling metric(IBSM)(2) / distortion evaluation

빈그레 2024. 2. 20. 15:39

 

 

 


IBSM - Distortion Evaluation

 

 

 

 

 

 

MSE_images 계산 //General MSE

 

Y_i,j : a sample of an original image

Y'_i,j : a sample of a distorted image

n : the width of both buffers in pixels // image buffer의 폭

 

원본 이미지의 sample과 distorted image의 sample을 비교하여 MSE를 계산한다. (차이의 제곱의 평균)

 

maskRef / maskDis 에 따라 mask[i,k] 채우기

 

앞으로의 과정에서 mask가 1인 부분에 대해서만 처리하기 위해, 공식들을 필요에 맞게 아래와 같이 변형한다.

mask[i,j]는 maskRef와 MaskDis와 같은 크기의 행렬로, 각 픽셀 i,j에 대해 projection이 존재하면 1의 값을 가지고 그렇지 않으면 0의 값을 가진다. 

 

MaskRef [i,j] : reference mask

maskIds [i,j] : distorted mask

mask는 projection이 존재하는 부분에 대해서만 1이므로, reference mask와 distorted mask가 모두 1의 값을 가져서 그 합이 2가 되는 조건을 만족하는 경우에만,  mask [i,j] 가 1의 값을 갖도록 하였다.

 

 

 

Projection된 pixel 수 (nbSamples) 구하기

 

( projection된 pixel의 수 = 3D mesh에서 projection plane으로 투영된 vertex의 수)

n : buffer의 width (2048일 듯)

nbSamples : 모든 view direction v에 대해 투영된 픽셀들의 총 수

projection plane만큼의 크기의 16개의 mask에 대하여 해당 순서에 mask가 갖고 있는 값이 1이면 1을 더해주고 그렇지 않으면 0을 더함으로써 mask가 1의 값을 가진 pixel의 수를 구한다

 

 

 

RGB에서 YUV로 색공간 변환

 

RGB 공간에서 YUV 공간으로의 변환을 통해 인간의 시각인지와 더 일치하는 색상 공간에서 distortion 을 평가한다.

 

 

YUV 이미지의 MSE 계산  //color channel에 대한

 

reference model과 distorted model 각각에 대한 YUV 색상 구성 요소별로 MSE를 계산한다.

 

cv_i,j: reference model의 color image/buffer의 sample (view direction v에서)

cv'_i,j : distorted model의 color image/buffer의 sample (view direction v에서)

 

YUV images에 대한 color MSE는 MSE_color로 표기되며, 그것은 color componennt Y,U,V 각각 계산된다.

 

 

*** color image는 실제로 보는 이미지 자체를 말하고(색 정의에 필요한 데이터 그 자체),

     color buffer는 그 iamge가 컴퓨터 시스템 내에서 처리되고 저장되는 장소를 말한다..

// 그냥 YUV 데이터 평가하는 중...정도로만 보면 될 듯

 


 General MSE vs Color MSE

- General MSE  //특정 채널에 대한 이미지 품질 평가
 : 단일 채널 또는 특정 채널의 오차를 계산한다. color 정보를 분리하지 않고 그레이스케일과 같은 단일 채널로 이미지 전체의 오차를 측정할 때 사용된다.
- Color MSE   // 컬러 이미지의 distortion을 평가 : YUV 색상 공간에서의 각각의 채널에 대한 MSE를 계산한다. 이는 color image의 distortion을 평가할 때 사용되며, 각 색상 채널에 대한 오차를 계산한 후에 이를 종합하여 전체적인 이미지의 distortion을 측정한다. 

 

depth image의 MSE 계산 (MSEdepth)

 

reference model과 distorted model의 depth image 간의 차이를 평가한다.

이를 위해 depth 신호의 동적 범위를 고려하여 d_dynamic을 사용한다.

 

dv_i,j : refence model의 depth image(buffer) sample

dv'_i,j : distorted model의 depth image(buffer) sample

sigDynamic : depth signal의 dynamic range(동적 범위) 

                    두 model(ref,dis)의 bounding box의 대각선 길이 최댓값으로 초기화 ( 깊이의 최댓값 )

 

depth image/buffer에 대한 depth MSE는 MSE_depth라 표시하고 다음과 같이 계산한다.

 

 

depth MSE 계산도 다른 것들과 마찬가지로 mask[i,j] 값들이 1이면 pixel의 오차가 계산에 포함되지만, 0이면 해당 픽셀에 대한 오차는 계산에서 제외된다.

 

color에 대한 MSE와 PSNR과 비교하기 위해서 255를 곱해 depth에 대해 재정규화를 수행하여 MSE를 구한다

// 8bit 쓰니까 0부터 255사이로 표현하는 거  맞추려고 한 듯..? 근데 255만 곱한다고 그게 맞춰져..?ㅋㅋ 어케..?

 

 

최종 메트릭 결과 (MSEtotal)

 

depth,Y,U,V channel에 대한 MSE를 종합하여 전체 MSE를 계산한다

 

 

 

 

 

PSNR 계산 

 

각 channel에 대한 MSE를 사용하여 PSNR을 계산한다.

아래 식을 통해 각 channel에 대한 PSNR이 계산된다.

 

val은 depth,y,u,v,yuv중 하나에 해당

 

 

// 나중에 다시 정리

ChatGPT제공된 수식은 이미지 처리에서 최대 신호 대 잡음비(Peak Signal-to-Noise Ratio, PSNR)를 계산하는 데 사용됩니다. PSNR은 원본 메시와 왜곡된 메시의 시각적 품질을 비교하는 일반적인 지표로, 손실 압축 코덱의 재구성 품질을 측정하는 데 사용되며, 값이 높을수록 품질이 좋음을 의미합니다.PSNR 계산에 사용되는 구체적인 수식은 이미지의 최대 가능 픽셀 값(8비트 이미지의 경우 255^2)을 원본 이미지와 압축된 이미지 간의 평균 제곱 오차(Mean Squared Error, MSE)로 나눈 것입니다. 'min' 함수는 PSNR이 설정된 최대값(이 경우 999.99)을 초과하지 않도록 보장하는 데 사용됩니다. 이는 데이터 형식이나 이 메트릭을 사용하는 시스템의 제약 때문일 수 있습니다.log_10 함수는 비율을 로그 척도로 변환하여 사용하는데, 이는 인간의 인지와 더 일치합니다. 로그 척도는 PSNR 값 사이의 차이를 더 명확하게 구분할 수 있도록 하여, 변화의 각 단위가 비율의 열배 변화를 나타냅니다.MSE_val은 검증 데이터셋에 대한 평균 제곱 오차를 나타내며, 원본 이미지와 왜곡된 이미지의 픽셀 간 평균 제곱 차이를 나타냅니다. MSE는 인코딩과 이후 재구성으로 인해 도입된 왜곡 또는 잡음의 평균 전력을 측정하는데 사용됩니다. MSE가 작을수록 PSNR은 높아지고 재구성된 이미지의 인지된 품질이 더 좋아집니다.이 과정은 메시 압축 기법의 평가에 특히 중요한데, 원본과 비교하여 압축된 메시의 시각적 충실도가 중요한 관심사이기 때문입니다. 제공된 문서는 이러한 압축 기법을 평가하는 메트릭, 특히 이 PSNR 계산을 포함한 평가 프로세스를 논의하는 것으로 보입니다.

 

 

비매칭 표본 비율 (ratioUnmatchSamples)

 

// 위에서 ref랑 dis가 둘 다 1이어서 합이 2인 경우에만 mask[i..j]가 1되게 재설정 해두었으니, 그 외의 경우에 대해서는 mse 및 기타 연산들이 수행되지는 않았겠지만, unmatched된 경우가 얼만큼 있는지 정도는 확인하려고 하는 연산인 듯..?

 

 

mask가 1로 존재하는 전체 pixel 중에 reference model과 distorted model에서 projection이 일치하지 않는 sample의 비율을 계산한다.

 

*** projection 불일치

: reference model과 distorted model이 동일한 시점에서 rendering되었을 때, 각각의 projection이 일치하지 않음을 의미한다. 

 

 

ubUnmatchedSamples ( 불일치 sample )의 개수는 다음과 같이 계산된다.

maskRef나 maskDis가 1로 존재하는데, 둘 중 하나만 1로 존재해서 그 합이 1일 경우에 unmatch 상황으로 판단하고 ubUnmatchedSamples 개수로 counting한다

 

 

 

Bounding box 대각선 길이 비율 (ratioBBDiag)

 

참조 모델과 왜곡 모델의 bounding box의 대각선 길이 비율을 계산한다.

 

 

BBDiagDist : Distorted Model의 bounding box 대각선

BBDiabRef : Reference Model의 bounding box 대각선

 

 

//정리

이러한 계산들은 모델이 얼마나 정확하게 원본 모델을 시각적으로 재현했는지를 수치적으로 평가하는데 사용된다.