Cải tiến kỹ thuật Marching cube

Một phần của tài liệu Nghiên cứu kỹ thuật tái tạo ảnh 3 chiều trong y khoa và ứng dụng luận văn thạc sĩ (Trang 56)

2.1.6.1 Kỹ thuật Marching Tetrahedra

Kỹ thuật Marching Tetrahedra được đưa ra để cải tiến thuật toán Marching Cubes. Thuật toán Marching Cubes xây dựng lưới tam giác trong khối lập phương gồm 8 voxel kế cận, đơn vị thể tích còn khá lớn. Để giảm các phép tính Doi, Guezie, Treece và các tác giả khác đã chia khối lập phương thành các đơn vị thể tích nhỏ hơn là các khối tứ diện. Phương pháp này giúp bề mặt tạo ra khép kín hơn. Tuy nhiên phương pháp này sẽ tạo ra nhiều tam giác hơn phương pháp Marching Cubes và ta phải xác định cách chia khối lập phương thành các tứ diện.

Do mỗi tứ diện có 4 đỉnh nên ta có 24 = 16 trường hợp mặt phẳng đi qua tứ diện và dựa vào tính chất đối xứng ta đơn giản còn 2 trường hợp.

Hình 2.11: Chia khối lập phương thành các khối tứ diện

Giống như Marching Cubes, nhược điểm của kỹ thuật Marching Tetrahedra cũng tạo ra nhiều đa giác.

2.1.6.2 Kỹ thuật Dividing cubes

Để khắc phục tình trạng tạo ra nhiều đa giác và cải tiến tốc độ, thuật toán Dividing Cubes được đưa ra bởi Cline và ý tưởng là không vẽ các đa giác mà vẽ các điểm bề mặt. Để vẽ mặt trong không gian 3 chiều trước hết cần tìm các voxel có giao với mặt, sau đó chia nhỏ voxel. Tiếp tục tìm kiếm và chia nhỏ cho đến khi đạt đến độ phân giải cần thiết. Tìm những điểm giữa của voxel sau đó dùng phép chiếu để chuyển thành các pixel. Nhược điểm của kỹ thuật Dividing Cubes là tạo bề mặt không liên tục nếu ta phóng to bề mặt.

Hình 2.13: Minh hoạ thuật toán Dividing Cubes trong không gian 3 chiều

2.2 Kỹ thuật Shear-warp 2.2.1 Ý tưởng 2.2.1 Ý tưởng

Kỹ thuật Shear warp để dựng hình khối dữ liệu được phát triển bởi Cameron và Undrill, nhưng phổ biến bởi Philippe Lacroute và Marc Levoy [17]. Kỹ thuật này được phát minh để thay thế cho Ray casting nhằm giảm thời gian tính toán bằng cách đơn giản các bước lấy mẫu[17]

Để tạo ra các quan điểm khác nhau về một đối tượng như là khối dữ liệu thì trước tiên các voxel của khối phải được sắp xếp đúng vị trí trước khi được

chiếu lên mặt phẳng ảnh. Mục tiêu là làm cho tia xem song song với nhau và vuông góc với mặt phẳng trung gian và mặt phẳng ảnh đặt ở vị trí không song song với mặt khối.

Ý tưởng của thuật toán Shear-warp đã đơn giản hoá bằng cách đầu tiên dịch chuyển đối tượng (shear ), sau đó chiếu lên mặt phẳng trung gian (base plane ) và cuối cùng biến dạng ảnh trung gian (warp ) để hiển thị lên mặt phẳng ảnh. Chọn mặt phẳng trung gian song song với những lát cắt 2D.

2.2.2 Quy trình thực hiện

Thuật toán Shear-warp bao gồm 3 bước như hình minh họa bên dưới: 1, cắt và lấy mẫu từ volume data (khối dữ liếu đã được sắp xếp)

2, quét qua các voxel trên các mẫu lên ảnh trung gian (intermediate image)

3, chuyển ảnh trung gian vào ảnh hiển thị cuối cùng trên mặt phẳng ảnh (image plane)

2.2.3 Phương pháp thực hiện

Để minh hoạ cho thuật toán shear warp, hãy tưởng tượng có một quyển sách dầy. Nếu nhìn thẳng vào mặt trước của quyển sách thì chỉ có thể xem trang trước của nó mà không có cách nào để xem những trang bên trong. Có một cách là xếp thay đổi tương đối vị trí thì có thể xem được những trang sau. Đây cũng chính là ý tưởng của thuật toán Shear warp.

Hình 2.14: Các lát cắt của khối dữ liệu được dịch chuyển Hình ảnh trung gian sau khi chiếu bị méo mó. Vì vậy hình ảnh trung gian cần phải được biến dạng để có được những hình ảnh cuối cùng chính xác.

Mỗi vị trí voxel được chuyển đổi vào vị trí tương ứng trong mặt phẳng chiếu bằng cách quay và chiếu. Vì vậy, thuật toán Shear-Warp thực tế là phân chia ma trận của phép chiếu và phép biến đổi thành ma trận shear, chiếu và ma trận warp. Trong trường hợp chiếu vuông góc không cần ma trận chiếu vì chiếu vuông góc vào mặt phẳng XY có nghĩa là Z=0. Toạ độ X, Y không bị ảnh hưởng bởi chiếu.

Mview = P.S.W

Trong đó :

P: ma trận hoán vị - chuyển toạ độ để làm cho Z là trục xem chính

S: ma trận shear - chuyển đổi khối dữ liệu vào không gian đối tượng bị dịch chuyển

W: ma trận warp - biến dạng toạ độ đối tượng bị dịch chuyển thành toạ độ ảnh

Công thức dịch chuyển đối tượng:

S = + 0 Do đó ma trận shear là : S = 1 0 0 1 0 0 1 Trong đó Sx, Sy có từ Mview W= 0 0 Mview = = . = + + + + Có hệ số của ma trận warp : Wij = Vij ( j ≠ 2 )

Hệ số của ma trận shear : =

W22 = - SxV20– SyV21 + V22

Phương trình biến đổi tọa độ đối tượng thành toạ độ đối tượng bị dịch chuyển:

Hình 2.15 : Ma trận xem 2.2.4 Ưu và nhược điểm

 Ưu điểm:

Tốc độ xử lý nhanh và đơn giản  Nhược điểm:

Chất lượng hình ảnh thấp so với các kĩ thuật khác

2.3 Kỹ thuật Ray Casting 2.3.1 Ý tưởng 2.3.1 Ý tưởng

Ray casting là một kỹ thuật phổ biến cho việc trực quan dữ liệu khối 3D mà không áp đặt bất kì cấu trúc hình học nào. Ray casting được dựa trên khái niệm một tia ánh sáng đi xuyên qua khối và làm nổi bật các voxels nó gặp trên đường đi. Đối với mỗi điểm ảnh trên màn hình, một tia được chiếu xuyên

qua khối dữ liệu và màu điểm ảnh cuối cùng được tính toán dựa trên các giá trị mẫu gặp phải. Kết quả cuối cùng sẽ hiển thị trên mặt phẳng ảnh 2 chiều của dữ liệu khối[25]

Năm 1977 Kajiya đưa ra thuật toán Raycasting đầu tiên Năm 1982 Blinn [19] đã đưa ra nhiều cải tiến so với Kajiya

Năm 1988, Levoy [23] xuất bản một bài báo với một thuật toán raycasting mà kể từ đó thuật toán được phổ biến và trở thành định nghĩa cho raycasting

2.3.2 Quy trình Ray Casting

Sơ đồ mô tả quá trình tái dựng ảnh 3D

2.3.3 Phương pháp thực hiện

Levoy mô tả kỹ thuật của mình gồm hai đường ống dẫn – một đường ống dẫn trực quan và một đường ống phân loại. Kết hợp hai đường ống để tạo ra hình ảnh cuối cùng.

Sample Colors C(U) Sample Opacities α(U)

Ray casting / Resampling

Pixel Colors C(u) Compositing Voxel Values f(i)

Voxel Color C(i) Voxel Opacities α(i) Shading Classification

Trong đường ống dẫn trực quan, dữ liệu khối được tạo bóng ( shade). Mỗi voxel trong dữ liệu được gán cho một shade bằng cách sử dụng một xấp xỉ gradient địa phương để đạt được một voxel bình thường. Nó được sử dụng làm đầu vào trong mô hình tạo bóng chuẩn Phong để đạt được một cường độ. Đầu ra của đường ống này là một cường độ ba thành phần màu cho mỗi voxel trong tập dữ liệu.Trong khu vực hoàn toàn đồng nhất thì gradient bằng 0. Các bóng được tạo thành từ lí do như vậy là không đáng tin cậy, Để giải quyết vấn đề này, Levoy dựa vào độ chắn sáng của mỗi voxel. Vùng đồng nhất có độ chắn sáng bằng 0 và không ảnh hưởng đến kết quả cuối cùng.

Các đường ống dẫn phân loại sẽ kết hợp với độ chắn sáng tại mỗi voxel. Các thông số màu sắc được sử dụng trong mô hình tạo bóng cũng được sử dụng trong đường ống này.

Gỉa sử ta có 1 mảng lưu giá trị vô hướng của khối lập phương là N voxel trên một mặt phẳng. Voxel được tạo một chỉ mục bởi vector i = (i, j, k) trong đó i, j, k =1,…,N và giá trị của voxel kí hiệu là f(i), giá trị của màu sắc kí hiệu là C(i), giá trị của độ chắn sáng kí hiệu là α(i).

Hình 2.17: Hệ thống các toạ độ trong suốt quá trình tái dựng ảnh Các tia được chiếu song song đi xuyên qua dữ liệu từ vị trí quan sát. Giả sử mặt phẳng ảnh có kích thước PxP pixel. Tia được định nghĩa bởi một vector u =(u,v) với u,v=1,…,P. Tại mỗi tia, vector màu sắc và độ chắn sáng được tính toán bằng cách nội suy từ màu sắc và độ chắn sáng của tám voxel xung quanh mỗi vị trí mẫu. Những điểm mẫu được kí hiệu U = (u,v,w) với

(u,v) định nghĩa tia, w là khoảng cách dọc theo tia. W=1 là vị trí gần nhất với mắt . Màu sắc , độ chắn sáng của điểm mẫu U được kí hiệu C(U), α(U). Màu sắc và độ chắn sáng kết hợp với nhau và kết hợp với nền để tạo nên màu sắc cho tia kí hiệu là C(u)

Hình 2.18: Tổng hợp màu sắc và độ chắn sáng

Tia chiếu đi từ một pixel trên mặt phẳng ảnh đến voxel, các giá trị về bóng và độ chắn sáng sẽ được tổng hợp lại bằng cách nội suy thành một giá trị duy nhất để cung cấp cường độ của điểm ảnh cuối cùng hiển thị trên mặt phẳng ảnh.

Hình 2.19 : Tổng hợp màu sắc và độ chắn sáng của tất cả các voxel dọc theo tia và hiển thị giá trị cuối cùng lên mặt phẳng ảnh

Công thức để tính toán giá trị cuối cùng dựa trên các voxel dọc theo tia đúc : Cout = Cin · (1 – α) + C· α outin(1 )

C(i) in = C(i-1) out

Trong đó :

Cout : cường độ/ màu sắc đi ra cho các voxel dọc theo tia

Cint : cường độ đến cho voxel

C : màu của voxel hiện tại

α : độ chắn sáng của voxel hiện tại

2.3.4 Giải thuật Raycasting

For each Pixel

For each f(i, j, k) along a Ray from Pixel Check f(i, j, d) in Classification tables If new substance

Find Surf Nomal/ compute Color Weight color by Opacity

Accumulate color contribution and opacity Pixel gets accumulated color

2.3.5 Ưu và nhược điểm

 Ưu điểm

- Khái niệm đơn giản, dễ thực hiện

- Cho phép toàn bộ dữ liệu được xem cùng một lúc.

- Cho phép người sử dụng có thể xem các phần bị che khuất bởi các kỹ thuật bề mặt.

- Tính năng nhỏ hoặc yếu được xác định có thể được hiển thị - Dễ dàng thực hiện song song

 Nhược điểm

- Chậm so với các phương pháp khác ngay khi đúc một vài tia - Vị trí gần nguồn sẽ được truy cập nhiều lần.

- Với mặt phẳng ảnh quan sát có kích thước lớn sẽ làm tăng đáng kể thời gian tái dựng ảnh.

2.3.6 Một số kỹ thuật tăng tốc cho Ray Casting

Thực tế giải thuật Raycasting tốn rất nhiều thời gian.Ý tưởng cơ bản để thúc đẩy nhanh quá trình dựng hình là không chú ý đến những thông tin “không quan trọng” và khai thác sự gắn kết.

2.3.6.1 Chấm dứt tia sớm

Ý tưởng là sớm chấm dứt tia nếu sự đóng góp của một mẫu trở nên không còn quan trọng bằng cách thiết lập một mức độ chắn sáng ɑ để chấm dứt tia.

2.3.6.2 Space-Leaping

Ý tưởng là quét qua các khu vực có cấu trúc đồng nhất một cách nhanh chóng mà không bị mất thông tin liên quan. Có nhiều phương pháp để thực hiện ý tưởng này.

2.3.6.3 Cấu trúc phân cấp không gian dữ liệu

Khối được chia thành những khu vực đồng nhất và được biểu diễn bởi những node trong cấu trúc phân cấp không gian. Kỹ thuật này tối ưu bằng cách lưu trữ các thông tin thống nhất trong không gian trống. Khi tia chiếu qua những không gian trống thì có thể bỏ qua mà không cần phải tính toán.

Hình 2.20: Tia đi qua khối nhị phân được chia ra khu vực đồng nhất

2.3.6.4 Adaptive ray traversal

Ý tưởng là gán tất cả các voxel trống lân cận với voxel dữ liệu một cờ lân cận. Khi tia được chiếu qua những không gian trống thì sử dụng thuật toán có độ chính xác thấp để đạt tốc độ nhanh và khi đi đến vùng lân cận thì nó sẽ chuyển sang thuật toán có độ chính xác cao hơn

Hình 2.21 : Minh hoạ ý tưởng tia thích nghi với chỗ giao cắt

2.3.6.5 Exploiting Temporal Coherence

Đối với mỗi pixel, toạ độ của voxel không trong suốt đầu tiên được ghi nhận từ tia chiếu sẽ được lưu trữ trong C-buffer (bộ đệm toạ độ). Dữ liệu này được sử dụng để xác định vị trí mà tia bắt đầu xuất phát.

Hình 2.22: Sử dụng C-buffer

2.3.7 Cải tiến Ray casting sử dụng cấu trúc phân cấp không gian

Do dữ liệu thể tích rất lớn và có tính tương tác cao nên đòi hỏi phải tính toán rất nhiều và dữ liệu phát sinh trong quá trình tính toán là rất lớn.

Để tăng tốc độ tính toán trong phương pháp tái dựng khối ta thường tìm cách sắp xếp lại dữ liệu để đạt hiệu quả tính toán cao. Một trong những ý tưởng cải tiến đã nêu thì phương pháp phân cấp cấu trúc không gian dữ liệu hay còn gọi là cấu trúc kim tự tháp là tiêu biểu nhất.

Cho một tập dữ liệu để đo N voxel trên một mặt điều kiện là N = 2M +1 với M là một số nguyên.

Ta có thể biểu diễn những liệt kê này bằng một kim tự tháp nhị phân có chiều cao M +1

Khối dữ liệu trong kim tự tháp này được đánh chỉ số mức m với m = 0, …, M. Khối dữ liệu tại mức m được ký hiệu là Vm.

Khối dữ liệu ở mức 0 (V0 ) có N-1 tế bào (cell) Khối dữ liệu ở mức 1 ( V1) có (N-1)/2 cells ...

Khối dữ liệu ở mức m (Vm) thì chỉ còn 1 cell đơn

Các cell được đánh chỉ số bởi các mức (level) m và vector i=(i, j, k) với i, j, k = 1, …, N-1

Giá trị của cell i ở mức m được ký hiệu Vm(i)

Kích thước của cell tại mức M được xác đinh bằng 2m lần khoảng trống giữa các voxel.

Như vậy một khối dữ liệu là một cell lớn trong một tập dữ liệu ban đầu. Voxel(1,1,1) được đặt tại góc dưới bên phải của cell(1, 1, 1)

Do đó, Cell(1,1,1) ở level 0 bao quanh không gian giữa voxel(1, 1, 1) và voxel(2, 2, 2)

Hình 2.23: Liệt kê cấu trúc không gian đối tượng với N =5 Để xây dựng kim tự tháp, ta cần thực hiện các bước sau :

 Cell i tại volume V0 có giá trị bằng 0 nếu tất cả 8 voxel nằm tại đỉnh của nó có độ chắn sáng ( độ mờ ) bằng 0.

 Cell i tại volume Vm (m>0) có giá trị 0 nếu tất cả 8 cell tại mức m-1 có giá trị bằng 0.

 Trường hợp khác , đặt {1, 2, …, k}n là tập hợp n vector với tập {1, 2, …, k}. Vì ta quan tâm đến dữ liệu 3 chiều. Do đó ta chỉ xét n = 3. Do đó ta có {1, 2, …, k}3 là tập hợp của tất cả vector trong không gian 3 chiều trong khoảng các số nguyên từ 1 đến k. Từ đó, ta có thể xác định: ( ) = 1 ( +∆ ) = 1 ∈ {1,2, … , −1} ∆ ∈ {0,1} 0 ℎ Và

( ) = ⎩ ⎨ ⎧1 (2 − ∆ ) = 1 ∈ 1,2, … , −1 + 1 ∆ ∈ {0,1} 0 ℎ Với m=1,2,…,M

Bây giờ sẽ trình bày lại ray casting, lấy mẫu lại và tổng hợp các bước của các thuật toán tái tạo để sử dụng cấu trúc dữ liệu hình kim tự tháp. Đối với mỗi điểm, đầu tiên ta tính toán các điểm mà các tia đi vào một cell ở mức đầu tiên. Sau đó ta đi qua các kim tự tháp theo cách thức sau đây:

Khi tiếp cận một cell, ta kiểm tra giá trị của nó. Nếu nó có chứa giá trị 0, ta sẽ đi theo tia chiếu đến các cell tiếp theo trên cùng cấp. Nếu cha (tập các cell được tính theo hình kim tự tháp) của các cell mới khác cha của các cell cũ, ta sẽ di chuyển đến tập cha của các cell mới. Điều này sẽ làm cho thời gian xử lý được rút ngắn bởi vì nếu tập cha của các cell mới là trống chúng ta có thể chiếu tia xa hơn và tiếp tục lặp lại nếu vẫn ở mức thấp hơn. Điều này giúp tính toán nhanh chóng giữa các khu vực trống trong không gian giúp cho thuật giải tiết kiệm thời gian. Mặt khác, nếu các cell đang được tính bằng 1, ta sẽ di chuyển xuống một mức, vào bất cứ cell bao quanh vị trí hiện tại. Nếu đã ở mức thấp nhất, thì có nghĩa là một hoặc nhiều hơn trong tám voxels tại các đỉnh của tế bào có độ chắn sáng lớn hơn 0. Sau đó, lấy mẫu tại các địa điểm cách đều nhau dọc theo tia chiếu trên một cell, lấy mẫu dữ liệu tại các vùng

Một phần của tài liệu Nghiên cứu kỹ thuật tái tạo ảnh 3 chiều trong y khoa và ứng dụng luận văn thạc sĩ (Trang 56)