Showing posts with label DVR. Show all posts
Showing posts with label DVR. Show all posts

Thursday, July 07, 2011

Perspective DVR

3차원 공간상에 정의된 객체를 화면으로 투영하기 위해선 대표적으로 두 가지 방법이 있다. 하나는 Orthogonal과 또 하나는 Perspective 이다. 그 외에도 외곡된 projection field 를 정의하여 보다 극적인 가시화를 가능하게 할 수도 있으나 기본적으로 homogeneous 좌표계에서 4x4 matrix로 정의가 가능한 두 가지 mapping 을 기본적으로 다룬다. (이는 카메라 조작과 같은 기본적인 UI와도 직접적 관련이 있다.)

다음은 Orthogonal projection의 예이다.

그리고 다음은 Perspective projection의 예이다.

Overview 관점에서 Orthogonal 이나 Perspective나 큰 차이가 없음을 알 수 있다. 그러나 셰이딩으로 정의가 미흡한 부분의 깊이감을 Perspective에서 더 잘 표현함다는 점에서 혹자는 Perspective view를 선호할 수 있다.
그러나 가시화되는 화면 크기 대비 물체에 대한 과도한 깊이감은 Overview에서 이질감을 초래할 수 있어, 화면 전체적으로 균등하게 깊이 왜곡 없이 투영되는 Orthogonal view를 더 선호할 수도 있다.

이건 어디까지나 개인 취향의 문제이나 카메라 explore 모드에서는 이야기가 조금 달라진다. 객체 근처로 접근하여 일부분을 정밀히 관찰하는 경우, 마치 개미가 세상을 보듯, Perspective view가 훨씬 현실성이 있으며, 이 경우 Overview에서 문제가 되었던 "가시화되는 화면 크기 대비 물체에 대한 과도한 깊이감"의 요소는 배제되고 오히려 깊이감은 가시화 결과의 이질감을 줄이는 요소로 작용한다.

다음은 카메라 explore 모드의 가시화 결과이다.
[그림]

Friday, June 10, 2011

Porosity View DVR with pre-processed sub-volume

DVR에서 sample position 의 voxel value를 다양한 metric으로 해석하여 optical property를 정의할 수 있다는 것은 Multi Metric for Optical Property 에서 이미 언급하였다.

이것의 연장선 상에서 DVR 이전에, 전처리를 통해 얻은 새로운 metric으로 지정된 sub-volume을 main-volume의 geometry 와 같게 설정하면 위의 방법을 통한 DVR 이 가능하다.

추가적으로, 여기에서는 sub-volume 을 '속성'이 아닌 태그의 개념으로 정의할 수 있고, 태그 ID를 통해 여러 1D OTF를 할당하여 태그 영역의 속성을 이해하는데 도움을 주는 DVR을 실현 수 있다. 그러나 이것은 main volume의 metric에 의존하지 않는다는 점에서 main volume에 "속성 의존적"인 결과를 도출하기가 어렵다.
하여, 이 방법은 주로 segmentation 된 결과 자체를 main volume의 기하학적 구조와 연계하여 분석하는 것에만 도움을 줄 수 있다.
(이 경우, OTF를 공유하지 않는 main and sub volume의 관계는 position 에 의해서만 결정된다는 점을 생각.)

따라서 이보다 더 심층적인 main volume과 sub volume의 연계성을 확인하기 위해서는, 각 volume의 value가 sample 지점의 optical property를 결정하는데 영향을 주도록 modulation을 사용하거나 두 volume의 metric으로부터 정의되는 2D OTF를 사용하면 된다.

여기서는 두 volume의 관계를 선형적 분석이 아닌 비선형적 분석이 가능한 2D OTF 방법을 사용하도록 한다. (추가적으로 , 2D OTF는 2D histogram을 통한 value의 분포를 확인할 수도 있다는 점에서 매력적이다.)

다음은 여기서 실험할 기공(porosity)를 많이 포함하고 있는 industrial data의 DVR이다.

이것을 voxel 단위로 size를 추출(volume 의 surface 내부로 판정되는 곳에서 비슷한 value를 갖는 연결된 크기를 각 voxel 단위로 계산)하는 전처리 과정으로 새로운 volume 을 생성한다.
실험 data의 전체 실루엣만 나타나게 하는 반투명 가시화 widget에, 특정 main volume의 value 영역에서 임의의 size 영역대에 color widget을 설정하여 DVR을 진행한다.


다음은 하나의 volume으로 빠르게 구할 수 있는 density&Gradient Magnitude를 이용한 예이다.


비교적 비싼 전처리를 통해 얻은 sub volume 기반보다 porosity를 확인하기 어렵다.

따라서, 정리하자면... 다음은 위에서 언급한 두 개의 볼륨 속성을 보는 방법을 고려해 볼 때
  • Main volume => On the fly computation => 2D OTF
  • Main volume => Sub volume 생성 => 2D OTF
  • Main Volume에 대한 1D OTF와 Subvolume 에 대한 modulation
  • Main Volume에 대한 1D OTF와 Subvolume 에 대한 sub 1D OTF
두 번째가 가장 효율적 DVR 방법이라는 결론을 내릴 수 있다.
    만약... 이 외의 방법이 존재 한다면?! -_-?

    thanks for jun and victory

    Wednesday, June 08, 2011

    Clipping Boundary Unshading Mode

    불투명에 가까운 Surface Rendering 에서 볼륨의 내부 구조를 보기 위한 대표적인 방법으로 Clipping 이 있다. 그러나 볼륨 내부가 Iso-value 영역 (또는 homogeneous Region) 일 경우 Gradient normal vector가 불균형하게 정의되어 Shading 이 제대로 안 되는 문제가 발생한다.

    반투명 DVR 에서 Clipped 표면의 투명도가 높을 경우 해당 표면의 Shading 이 최종 Rendering 결과에 미치는 영향이 미비하여 이를 무시할 수 있다. 그러나 Clipped 표면이 반투명에 가깝게 가시화될 경우, 다음과 같이 경계가 지저분하게 가시화된다.


    <타이어 휠 데이터에 대한 Clipping 가시화>

    이 경우 Clipped 단면을 '깨끗히' 가시화하기 위해 단면의 Voxel 이 정의하는 normal vector를 Clipping plane의 normal vector 로 사용하여 가시화하거나, normal vector에 영향을 받는 shading factor를 적용 안 한 Unshading mode를 사용하는 방법있다.

    전자의 경우 Clipping Box가 회전함에 따라 Shading 이 Clipped 표면에서 일괄적으로 바뀌는 가시화가 이루어지는데, Clipped 표면 자체에 집중할 경우 보기가 불편할 수 있다는 단점이 있다.

    하여, 여기서는 후자인 Unshading mode를 사용하였다.

    <Unshading Mode를 적용한 가시화 결과>

    그러나 문제는 큰 사이즈의 볼륨을 가시화하기 위해 Chunk 자료 구조를 사용할 경우, 다음과 같이 예기치 못한 문제에 봉착할 수 있다는 것이다.
    물론 학술적으로 전혀 의미가 없지만 프로그램의 완성도를 위해 이를 처리할 필요가 있었다.


    Chunk 단위의 가시화를 위해 Sample Box를 Chunk와 Clipping Box의 교집합으로 정의할 경우, 이러한 Chunk 경계에서 예기치 않은 unshading 으로 인한 줄무늬가 발생한다.
    이를 해결하기 위해 Chunk 경계가 Clipping Box 안에 있는가를 확인하는 루팅을 두었고, 이는 최초 Sample Box의 시작점에 대해서만 판정해 주면 되기 때문에 별도의 overhead도 거의 없는 효과적인 방법이다.

    다음은 이 문제를 해결한 최종 결과이다.

    -_-v

    Friday, June 03, 2011

    Multi Metric for Optical Property

    XYZ 의 위치에 Scalar value 로 정의되는 4차원 데이터를 샘플하고 이를 광학 이론에 적용하여 가시화 하는 것을 Direct Volume Rendering (DVR)이라고 한다.

    짧은 문구지만 여기에는 물리적으로 검증된 광학 모델, 대용량 데이터의 Sampling Theorem, 다차원 데이터를 효과적으로 보이기 위한 Information Visualization (외의 HCI 기술), 삼차원 가시화 조작과 관련된 CAD 기술 등... 많은 내용을 함축하고 있다.

    전통적으로 삼차원 공간에 정의된 Scalar filed 에서 "의미 있는" 영역을 보기 위해 Scalar value 를 RGBA 의 광학적 속성으로 바꿔 주는 1D Optical Transfer Function (OTF) 을 사용해 왔다.

    [옆의 그림에서 하단에 있는 것이 Gaussian Kernel 기반의 1D Color OTF 이다.]

    그러나 DVR은 볼륨데이터에 직접적으로 정의되어 있는 Scalar value 와 같은 Metric 외에 간접적으로 정의된 Metric (예. Scalar Field 가 정의하는 Gradient Magnitude Field) 을 이용하여 정의된 볼륨의광학적 속성을 가시화로 연결할 수 있다.

    그리고 이것은 불투명한 표면의 삼차원 가시화가 갖는 근본적 한계인 "가려진 중요 부분"의 직관적 파악을 위한 효과적 가시화의 핵심 기술로 활용될 수 있다.

    이 경우 추가적인 볼륨 정보 (위에서 언급한 간접적으로 정의된 Metric )는 1. Modulation, 2. Multi Dimension OTF 를 통해 볼륨의 광학적 속성 정의에 사용되며, 이것은 DVR 을 통해 전체적인 Context 및 내부의 숨겨진 Context를 삼차원으로 가시화 하는 데에 사용된다.


    위의 그림은 Gradient Magnitude, Shading을 위해 쉽게 구할 수 있는 몇몇 factor를 기반으로 1D OTF 결과(왼쪽)의 Alpha 에 modulation을 적용한 결과(오른쪽)이다.


    위의 그림은 2D OTF 를 기반으로 가시화한 결과이며,  Volume 의 Scalar value 와 이것이 정의하는 Gradient Magnitude 를, 3개의 Colored Widget 을 통해 볼륨에 광학적 속성을 부여한 결과이다.

    이외에도 내/외부 구조를 한번에 직관적으로 볼 수 있는 몇몇 방법이 있지만 사용자 컨트롤에 대한 한계, 가시화 속도에 대한 한계 등으로 잘 사용하지 않고 위의 두 방법을 가장 많이 이용한다.

    Thx for Victory