SYDLAB_inha/Metrics for Dynamic Mesh Coding

Metrics - Point-based metric(1) / sampling

빈그레 2024. 2. 16. 17:55

 

 

 


Point-based metric

 

 

 

 

 

 

point-based metric은 아래에서 설명할 5.1 Grid sampling을 적용하여 reference와 distorted meshes를 두 개의 point cloud에 전달한다. 

// 참조 frame과 compressed 이후 복원된 frame을 전달하여 evaluation한다.

// 근데 이것보다는,, reference의 point cloud와 distored mesh의 point cloud를 비교하는게 evaluation인 듯

 

Grid sampling은 point-based metric을 evaluate하기 위해 선택된 sampling 방법이지만, 5.2,5.3,5.4와 같은 다른 sampling 기법들도 가능하다.

// 5.1 5.2 , 5.3 , 5.4가 sampling방법

// sampling을 통해 얻으려는 것은 : mesh to point cloud

 

이후에,  5.6,5.7,5.8에 언급된 point cloud metric들로  두 개의 point cloud가 비교된다.

// 5.5 , 5.6 , 5.7이 point cloud metric

 

 

 

 


Sampling Method

 

 

 

 

 

 

5.1 Grid sampling  

 

(요약) : ray-casting으로 point-cloud를 얻는다.

 

point cloud는 triangle의 normal vector에 따라, axis direction으로의 ray-casting을 통해 생성된다.

 

*** axis direction : 축방향 / 3차원 공간에서 세 개의 주요 방향을 나타낸다. 각 축은 서로 직각을 이룬다.

                             ray-casting이나 다른 기하학적 계싼에서 이러한 축 방향을 기준으로 연산이 이루어진다.

*** ray-casting : 3D 모델링에서 광선을 이용한 계산 기법으로, 가상의 광선을 발사하여 그 광선이 객체와 만나는 지점을 계산함으로써, 객체의 형태나 공간 내 위치를 결정하는 데 사용된다.

 

 

Ray(가상 광선)가 Triangle에 충돌하는지 여부는 히트 테스트(hit test)로 결정되며, ray가 triangle을 맞출 경우, 점의 UV 좌표를 결정하기 위해 중심좌표 보간(barycentric interpolation)을 통해 색상이 얻어진다. 그 후, 텍스처 맵에서 RGB 값을 얻기 위해 이중 선형 보간(bilinear interpolation)이 수행된다. 

// Grid sampling과정은 이정도 알고있으면 될 듯!

1. ray와 mesh가 교차하는 지점의 3차원 공간 좌표 (x,y,z)를 계산한다. 
2. 교차하는 위치에 해당하는 메시 표면에서의 UV coordinate를 계산한다.  
    이 과정에서 barycentric interpolatin이 필요하다. 3D mesh를 2D texture map에 대응시켜야 하므로 
    단순 위치 대응을 넘어서 interpolation 과정이 필요하다.
3. 그 UV coordinate에 해당하는 위치의 texture map에서 색상 정보를 가져온다.  
    RGB값을 가져오는 과정에서는 bilinear interpolation이 수행된다.

 

- Direction / Coordinates

normal direction에서의 point coordinates는 반올림되지만, 다른 direction에서의 coordinates는 ray-casting의 정수 위치에서 얻어지므로 동일하다.

//ray casting을 통해 얻은 point cloud 좌표가 voxel grid에 맞추어 정수로 조정된다는 것을 의미한다.

//즉, normal 방향으로 sampling된 좌표는 정수 값으로 반올림되어 voxel grid에 정렬된다. 

 

- integer position

메시가 voxelized되었으므로(voxel 이라는 기본 단위로 표현되므로), 모든 vertex은 3D grid의 정수 위치에 있다.

*** voxel (volume element) :  3D 공간에서의 한 점을 나타내며, 2D pixel의 3차원 버전으로 이해할 수 있다.

*** voxelization : 3D 공간을 작은 정육면체 단위인 voxel로 나누고, 3D구조를 디지털화 하는 과정을 의미한다. 이 과정에서 메쉬의 각 vertex는 가장 가까운 voxel grid의 정수 좌표에 매핑된다.

 

- Orthogonal Projection for UV mapping

각 삼각형에 대해 직교 투영(orthogonal projection)을 사용하면, 선택된 그리드에 따라,

vertices의 정확한 위치가 sampled surface의 일부가 될 수 있다.

*** orthogonal projection : 3차원 공간에 있는 triangle을 2차원 평면에 투영하는 과정

 

- UV mapping 

UV mapping이 사용되는 경우, 이러한 점들의 색상은  bilinear interpolation을 통해 얻어지며, 정점의 텍스처 좌표(UV 좌표)를 이용하여 텍스처 이미지에서 해당 위치의 색상 정보를 가져온다. 이 과정에서 bilinear interpolation이 사용될 수 있으며, 이는 텍스처 이미지의 특정 UV 좌표에 정확히 일치하지 않는 경우에 텍스처 픽셀들 사이의 색상 값을 보간하여 부드러운 텍스처 매핑을 가능하게 한다.

//mesh의 vertex에 대해 UV 좌표를 계산해서 그걸로 texture map에 접근 했는데 그곳에 색상이 안 채워져 있으면 주변 거로 bilinear interpolation해서 채워서 사

 

반면, UV 매핑이 사용되지 않는 경우, vertex에 할당된 색상 정보(vertex color)를 직접 사용할 수 있다. 이 방식은 텍스처 매핑보다 단순할 수 있으며, 모델에 직접적으로 색상 정보를 부여하고자 할 때 유용하다.

// uv mapping 사용 안하면, 그냥 vertex 자체가 갖고있는 색상 가져오기

 

 


- sampling process
: sampling 과정은 triangle마다 개별적으로 수행되므로 duplicate(중복) points가 많이 생성된다.
하지만, pcc_metric software는 duplicates를 제거하는 optiond을 갖고있다. 첫번째 point만을 keep하거나, 아니면 모든 duplicates에 대해 평균값을 내는 등의 방식으로
 

- sampling grid
: sampling grid는 input parameter를 가질수는 있지만, input mesh의 해상도를 변경하지 않고 유사한 size의 grid를 sampling한다. 예를 들어, 8i sequence의 경우 그리드 크기는 1024 x 1024 x 1024이다.
*** sequence : 일련의 연속적인 프레임을 의미, dynamic에서 시간에 라 변화하는 3d point cloud 데이터의 연속을 의미한다.

- sampling improvement / pcc_mmetric
: point-based metric은 triangle surface와 projection direction의 각도 때문에, sampling이 잘 되지 않은 영역에 더 많은 point를 생성한다면 더 개선할 수 있다. 예를 들어, pcc_mmetirc은 mesh surface에 point를 생성하기 위해서 세 가지 sampling 방향을 모두 사용한다. (하지만 이 방법은 surface에 **clusters를 초래할 수 있다.)

cluster를 방지하기 위한 방법으로, pcc_mmetric은 direction을 triangle의 normal에 따라 선택할 수 있는
(--useNormal option)도 가지고있다.

** cluster : 비슷한 특성을 가진 데이터 포인트들이 
특정 지역에 밀집되어 있는 현상
     -> 데이터의 균일한 분포를 방해하고, 특정 영역이 과대 표현되는 문제가 발생

- neighboring triangles
: 서로 다른 방향을 가진 인접한 triangle이 edge를 공유하는 것이 문제가 된다. edge를 공유하는 triangle의 방향성이 다를 경우 hole이 생길 수 있다. 이 때, primitives(초기 형태)를 확장하여 hole의 수를 줄일 수 있다.이 때,추가된 voxel에 대한 color값은 신중하게 선택되어야 한다.

 

 

 

 

 

5.2 Face(면) sampling

 

(요약) : 삼각형 하나 크기의 grid를 통한 sampling으로, 개별 삼각형의 면을 샘플링한다.

 

Owlii에서 제공한 point cloud content는 메쉬 표면을 샘플링하여 제작되었으며, 이 과정을 수행하는 소프트웨어도 함께 제공되었다.

 

이 방법론에 따르면, 각각의 삼각형은 삼각형의 edge의 방향을 따라 그리드에서 샘플링된다. 무조건 적으로 모든 변에 대해 sampling된다고 해석하기보다 변의 방향을 고려하여 샘플링되는 정도로 이해하면 된다.

 

- 삼각형 크기의 grid  //grid sampling에서는 삼각형과 관계없이 similar한 grid크기 반복 사용했었음

샘플링된 위치는 정수 값으로 반올림되며, 색상 값은 우선 샘플링된 위치의 UV 좌표를 barycentric interpolation을 사용해 추정한 후, UV 맵 영역에서 bilinear interpolation을 통해 얻어진다. 제공된 소프트웨어에서는 삼각형의 크기에 해당하는 그리드의 크기가 입력 매개변수로 주어지며, 법선 방향으로 여러 레이어를 생성할 수도 있다.

//삼각형마다 독립적으로 수행하나부다

삼각형 크기에 해당하는 Grid

 

pcc_mmetric 소프트웨어에서는 Owlii의 접근 방식을 따르는 샘플링도 가능하다. 그러나 샘플링된 표면의 위치는 반올림되지 않고 부동 소수점 해상도로 유지된다.

 

이 접근 방식으로 인해 삼각형의 가장자리와 vertex가 샘플링 세트의 일부가 되므, 이로 인해 최종 포인트 클라우드에서 duplicate points가 생긴다.

-> 인접한 삼각형은 모서리와 vertex를 공유하기 때문에, 샘플링 과정에서 point cloud 추출할 때, 중복된 데이터가 생긴다.

 

그리드 샘플링과 유사하게, 이 소프트웨어에서도 첫 번째 속성을 선택하거나 모든 속성의 평균을 내어 중복된 점을 제거할 수 있습니다.

 

이러한 방법은 3D 메쉬 표면에서 고정밀도의 포인트 클라우드를 생성하는데 사용되며, 특히 UV 좌표의 정밀한 추정과 색상 값의 정확한 산출에 초점을 맞춘다. 

 

 

 

 

5.3 Map sampling

 

(요약) : UV map에서의 정수 위치를 3차원 공간의 mesh surface로 역투영하여 point cloud 생성

 

 

- back projection

Map sampling에서는 texel, 즉 텍스처 맵의 UV 좌표에 있는 점들을 3D 공간의 메쉬 표면으로 역투영(back projection)하여 포인트 클라우드를 생성한다.

 

- color & position

각 점의 색상은 텍스처 맵에서 직접 얻어지며, 이는 UV 맵의 정수 위치에 있지만,

각 점의 position는 mesh의 vertex 위치와 barycentric interpolation에 의해 결정된다. //정수x

이 경우에, vertices의 UV coordinates는 integer position을 갖지 않기 때문에,  mesh의 vertices는 point cloud에 존재하지 않는다. 

 

아래 그림은 uncompressed longdress mesh에 대한 surface sampling을 보여준다.

 

points의 위치는 vertices의 위치을 결합함으로서 얻어지기 때문에, 그 결과는 부동 소수점 값이 되어 resampled point cloud에서 중복을 피할 수 있다. point cloud의 density는 texture map의 크기에 따라 달라진다.

 

 

 

5.4 Surface subdivision sampling (sdiv and ediv)

 

(요약) : Surface subdivision sampling은 mesh의 표면을 세분화하여 더 조밀한 point cloud를 생성하는 과정이다. 각 삼각형을 더 작은 삼각형으로 나누어 mesh의 해상도를 높인다. 세분화 정도는 세분화 크기(sidv)나 변의 길이(ediv)에 대한  threshold를 설정함으로써 조절할 수 있다. 이 방법은 원래의 vertex들을 보존하면서 변들은 더 규칙적으로 샘플링하여, 원래 mesh의 표면을 정확하게 대표하는 point cloud를 생성한다 

 

포인트 클라우드는 그림 7에 제시된 방식을 사용한 표면 분할을 수행함으로써 생성된다.

 

하나의 삼각형은 각 변의 중심을 선택하여 네 개의 삼각형으로 나누어진다. 다른 삼각형 분할 방식도 생각해볼 수 있지만 이 방식이 단순하고 빠르다.

 

이 알고리즘은 재귀적으로 표면을 분할하며, area threshold이나 partical edge length에 도달할 때까지 계속된다. 이로 인해 원래 꼭지점이 보존되고 변들이 규칙적으로 샘플링된 잘 균형 잡힌 포인트 클라우드가 생성된다.

 

추가적인 재귀 정지 기준으로 텍스처 맵에서 투영된 꼭지점의 거리를 사용할 수 있다.  texel 거리를 1로 설정함으로써 우리는 색상 신호의 정확한 분할을 이끌어낼 수 있다.

 

***  texel : texture element의 약자로, 3D 표면에 매핑된 텍스처 이미지의 가장 작은 단위이다.

 

***  texture map 투영 & 매핑 :  3D model의 mesh 표면 정의된 vertex들의 UV 좌표를 texture 이미지 상의 위치로 변환하는 과정을 투영이라 한다.mesh의 vertex들은  texture image 상에 해당 하는 위치로 투영되며, 이 위치는 texture image를 mesh 표면에 매핑하기 위해 사용된다. 예를 들어, mesh의  특정 vertex가 texture image의 특정 texel에 매핑되면, 해당 texel의 색상이 3D 모델의 vertex에 적용되어 최종적으로 사용자에게 보여지는 모델의 외관을 갖게 된다 

 

 

 

 

 


Point Cloud Metric

 

 

 

 

 

위에서 5.1~5.4가지 언급했던 방법들로 mesh를  sampling하여 point cloud를 추출하면 아래 5,5~5.9의 metric들로 point cloud에 대해 evaluation한다.

 

 

5.5 Geometric Distortion //기하학적 오류

 

A : original point cloud

B : compressed point cloud

A와 B를 5.1에서 다룬 Grid sampling을 통해 얻은 point cloud라 하자.

 

기준 cloud A와  compressed cloud B에 대한, compression errors를 e_BA로 표시한다.

point-to-poitn error인 D1과, point-to-plane error인 D2를 계산하는 방법은 아래 5.6/5.7에서 다룬다.

 

포인트 클라우드 B의 각 점 bi에 대해 원본 포인트 클라우드 A에서 해당하는 점 aj를 식별한다. 가장 가까이 존재하는 점이  대응 point로 선정된다. 계산 복잡성을 줄이면서, 가장 가까운 이웃 point를 찾기 위해 KD-tree search가 사용된다.

 

 

 

->이러한 sampling 바탕으로 계산된 metirc

: https://kycu-sb.tistory.com/203

 

Metrics - Point-based metric(2) / Point cloud metric / D1 / D2 / Geometric & Attribute PSNR

Point Cloud Metric 5.5 Geometric Distortion //기하학적 오류 A : original point cloud B : compressed point cloud A와 B를 5.1에서 다룬 Grid sampling을 통해 얻은 point cloud라 하자. 기준 cloud A와 compressed cloud B에 대한, compressi

kycu-sb.tistory.com