Chƣơng 3 : CHƢƠNG TRÌNH THỬ NGHIỆM
3.1. Các công cụ
Trên cơ sở tìm hiểu nhiều bộ cơng cụ hỗ trợ lập trình đồ họa người viết đã chọn hai bộ công cụ VTK , ITK để xây dựng phần mềm của mình vì những lí do:
+ VTK, ITK là hai trong những bộ công cụ đ ược sử dụng nhiều nhất trên thế giới. Hầu hết các bài giảng về xử lí ảnh, đồ họa 3D và trực quan hóa của các trường đại học lớn trên thế giới đều lấy VTK v à ITK làm ví dụ minh họa, trên thế giới cũng có nhiều phần mềm hay được phát triển từ VTK và ITK.
+ VTK, ITK được thiết kế rất chuyên nghiệp: hai bộ toolkit này được viết bằng C++ theo kiểu hướng đối tượng, có thể sử dụng trong nhiều ngôn ngữ khác như Java, Tcl, Python ,.NET ,…; hai bộ toolkit này có mã nguồn mở và liên tục được nâng cấp.
+VTK, ITK có nhi ều hỗ trợ cho xử lí ảnh y tế.
VTK
VTK là một bộ toolkit có mã nguồn mở được xuất bản lần đầu vào năm 1994, hiện nay VTK đang được quản lí và phát triển bởi Kitware Inc. VTK có thể ứng dụng vào đồ họa vi tính 3D v à trực quan hóa. VTK cung cấp hàng trăm thuật tốn xử lí ảnh và trực quan hóa.VTK đ ược thiết kế theo kiểu hướng đối tượng trên nền ngơn ngữ C++ do đó nó có thể được sử dụng được cho các ngôn ngữ khác như Tcl/Tk, Python, Java.VTK được thiết kế để có thể chạy trên các hệ máy Unix, PC (Windows 9x/2000/NT), Mac OSX Jaguar.
Phiên bản VTK mới nhất 5.0 có khoảng 600 lớp với xấp xỉ 325 000 dòng mã. Việc sử dụng VTK tuân theo các quy định chung của thế giới về sử dụng mã nguồn mở.
Cấu trúc một ứng dụng VTK:
VTK tương tác với phần cứng thông qua OpenGL/Mesa
Hình 3.1. Sơ đồ tƣơng tác của VTK với phần cứng
Sơ đồ trên giới thiệu cấu trúc của một chương trình ứng dụng VTK. Nếu chỉ muốn kế thừa các lớp từ VTK chúng ta có thể xây dựng phần mềm theo kiểu “binary”. Ở hướng khác chúng ta sẽ sửa mã trong VTK theo ý muốn.
Mơ hình đối tượng (object model)
Mơ hình đối tượng của VTK gồm hai thành phần: mơ hình đồ họa (graphics model ) và mơ hình trực quan hóa (visualization model )
+Tcl/Tk shell +Tcl/Tk source
+Java interpreter +Java JDK
+Python interpreter +Python source
Nhân (core) C++
File thư việnvà các file tiêu đề
(.dll file và .h file)
Tất cả các lớp trong mãnguồn (Khối lượngsẽ rất lớn)
Xây dựng theo kiểu binary Xây dựng theo kiểu cài đặt mã nguồn
Hình 3. 2 Cấu trúc chƣơng trình ứng dụng VTK
Mơ hình đồ họa là mơ hình cho đồ họa 3D. Mơ hình này dựa trên các hệ
thống đồ họa đã được sử dụng rộng rãi trong cơng nghiệp. Có chín đối tượng cơ bản trong mơ hình đồ họa của VTK:
1. Render Master: định vị thiết bị và tạo render window. Nó độc lập với phương pháp.
2. Render Window: quản lí cửa sổ trên thiết bị hiển thị (display device). Một hoặc nhiều renderer cùng vẽ trong một render window để tạo nên một cảnh.
3. Renderer : xác đ ịnh cách biểu diễn của light, camera và actor 4. Light : chiếu sáng actor trong cảnh.
Hình 3.3 Mơ hình đồ họa của VTK
5. Camera : xác đ ịnh vị trí nhìn, tiêu điểm và các thông số khác của camera.
6. Actor : Actor xác đ ịnh thời hạn hoạt động của đối tượng mapper, property và transform.
7. Property :xác đ ịnh các thuộc tính của Actor nh ư màu sắc, ánh sáng, texture map, kiểu vẽ,…
8. Mapper : xác đ ịnh dạng hình học của actor
9. Transform : đối tượng này gồm một ma trận biến đổi 4x4 cùng các phương thức để thay đổi ma trận. Nó xác định vị trí và định hướng của actor, camera và light.
- Mơ hình trực quan hóa là mơ hình dịng chảy dữ liệu (data flow ,
pipeline) trong quy trình tr ực quan hóa. Mơ hình trực quan hóa của VTK dựa trên những mơ hình đã được sử dụng trong các hệ thống thương mại.
Hình 3.4 Mơ hình trực quan hóa của VTK
Các đối tượng xử lí (process objects) A, B, C nhận hoặc xuất ra một hay nhiều đối tượng dữ liệu (data objects).
Đối tượng dữ liệu biểu diễn và cung cấp các phương thức truy cập dữ liệu;
đối tượng xử lí thực hiện trên dữ liệu
Các đối tượng A, B, and C theo thứ tự là source,filter, và mapper objects
- Trong mơ hình tr ực quan hóa có hai loại đối tượng cơ bản là đối tượng xử lí (process object) và đối tượng dữ liệu (data object) (như ở hình 3.4).
+ Đối tượng xử lí: là các module hoặc các thuật toán. Đối t ượng xử lí có thể chia làm 3 loại : sources, filter v à mapper.
+ Đối tượng dữ liệu: là các tập dữ liệu (dataset ).Trong VTK có 5 loại dữ liệu.(hình 3.5)
Hình 3.5. Các loại tập dữ liệu của VTK
a) polygonal data, b) structured points, c) structured grid, d) unstructured grid, e) unstructured points, f) sơ đồ các đối tượng theo sơ đồ OMT
ITK
ITK là bộ công cụ được phát triển bởi Thư viện y khoa quốc gia ( NLM - National Libarary of Medicine ) thuộc Ủy ban sức khỏe quốc gia Hoa Kỳ (NIH - National Institutes of Health ) và một số công ty. Hiện nay ITK cũng được quản lý và phát triển bởi công ty Kitware Inc.
ITK không cung cấp các thuật tốn trực quan hóa như VTK mà chủ yếu cung cấp các thuật tốn xử lí và phân tích hình ảnh. ITK cũng được thiết kế theo kiểu hướng đối tượng trên nền ngôn ngữ C++, phiên bản mới nhất ở thời điểm hiện nay là 2.6.
Cách sử dụng ITK cũng t ương tự như VTK
Kết nối VTK và ITK trong cùng một ứng dụng :
VTK chủ yếu cung cấp các thuật toán trực q uan hóa và xử lý các đối tượng ba chiều trong khi ITK lại mạnh về khả năng xử lý ảnh. Sự kết hợp hai bộ toolkit này trong một ứng dụng sẽ giúp cho các ứng dụng có khả năng mạnh hơn. Mặc dù hai bộ toolkit này hoàn toàn độc lập nhưng đã được thiết kế sao cho có thể chuyển các dữ liệu theo kiểu ITK sang VTK và ngược lại. Thông thường ta sẽ dùng ITK để phân vùng (segmentation) hay registration rồi dùng VTK biểu diễn kết quả thành hình ảnh ba chiều.
Hình 3.6. Cách kết nối VTK và ITK
Khi thiết kế VTK và ITK các nhà lập trình đã hướng đến một lĩnh vực đó là lĩnh vực hình ảnh y tế. Do đó VTK và ITK cung cấp rất nhiều phương thức
cho các ứng dụng trong lĩnh vực này như khả năng đọc xuất các loại dữ liệu thường dùng trong y t ế (DICOM, Analyze,…), các chức năng phân v ùng, registration … ảnh.
3.2. Chƣơng tr ình cài đặt
Pipeline
Pipeline là chuỗi các bước xử lý dữ liệu và hiển thị thành hình ảnh. Pipeline của chương trình cài đặt như sau
Hình 3.7. Pipeline của chƣơng trình cài đặt
- Đọc dữ liệu : sử dụng các lớp vtkImageReader. Dữ liệu đọc vào được gán cho một biến kiểu vtkImageData, bước này có tác dụng như việc sắp xếp các lát cắt thành khối dữ liệu.
- Xử lý dữ liệu.
- Biểu diễn : dữ liệu từ biến kiểu vtkImageData (sources) được biểu diễn thành hình ảnh theo chu trình sau:
Hình 3.8. Chu trình biểu diễn dữ liệu thành hình ảnh 3.3. Một số cửa sổ - Kết quả thử nghiệm
Chương trình được viết theo kiểu dialog -based, được thiết kế gồm có một cửa sổ chính và một số trang (tab). Dữ liệu đầu vào của chương trình là tập hợp các lát cắt được lưu theo định dạng DICOM.
Chương trình cho phép người sử dụng xem kết quả ảnh ba chiều dưới các góc độ khác nhau bằng cách dùng chuột. Người sử dụng có thể copy màn hình vào clipboard để đưa vào các chương trình khác.
Các hình ảnh sau là kết quả thử nghiệm với dữ liệu CT demo . - Cửa sổ chính và trang duyệt tập ảnh dạng file Dicom
Hình 3.9. Giao diện màn hình chính
- Trang Render volume : Kết quả biểu diễn theo bề mặt. Trong trang này người sử dụng có thể lựa chọn biểu diễn các góc cạnh của hình ảnh 3D được hiển thị.
Hình 3.11 Các góc độ khác nhau của hình ảnh 3D đƣợc hiển thị
Hình 3.12. Hiển thị thêm mơ mềm 3.4. Đánh giá
Chương trình được xây dựng bằng Visual C++ và được đóng gói, do đó có thể cài đặt và sử dụng chương trình trên các máy tính có hệ điều hành Windows 98/2000/XP mà không cần nền (platform) nào khác. Chương trình phải làm việc với lượng dữ liệu lớn nên cấu hình máy phải tương đối mạnh. Tốc độ CPU nên từ 1,8GHz trở lên, RAM từ 256MB trở lên.
Giao diện chương trình được thiết kế thân thiện với người sử dụng, các bộ phận được bố trí tương tự các phần mềm đang được sử dụng trong thực
tế. Dữ liệu vào của chương trình là kiểu dữ liệu thường gặp trong thực tế: tập ảnh theo định dạng DICOM. Chương trình đã chạy thử nghiệm với các tập ảnh dữ liệu DICOM của bệnh viên trường Đại học y Thái Nguyên.
Chương trình cài đặt đã minh họa được các kỹ thuật tái tạo ảnh ba chiều từ lát cắt song song. Hiển thị được hình ảnh dạng 3D đối với dữ liệu CT.
Các điểm cần khắc phục:
+ Chương trình chưa đọc được các tập ảnh theo định dạng khác như Analyze, ảnh DICOM multi -frame,...Chương trình cũng chưa được kiểm tra với các dữ liệu siêu âm và dữ liệu MRI.
+ Tính năng của chương trình chưa nhiều, đặc biệt là các tính năng xử lý ảnh trước khi tái tạo ảnh ba chiều, chức năng đo đạc, cho phép người dùng chọn các khu vực cần tái tạo ba chiều ,...
+ Chương trình chạy còn khá chậm nếu so với một số phần mềm thương mại được phát triển từ VTK như VolView của Kitware. Người viết cho rằng cần có các biện pháp xử lý dữ liệu trước khi tái tạo ba chiều nhưng chưa thực hiện kịp.
+ Người viết có ý định đưa tiếng Việt lên giao diện nên chọn chế độ biên dịch theo UNICODE của Visual C++, tuy nhiên lại gặp một số khó khăn trong việc kết hợp chế độ biên dịch UNICODE của Visual C++ v à một số lớp của VTK. Khó khăn này khiến các tính năng của chương trình cũng bị ít đi.
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN
Những việc đã thực hiện đƣợc :
- Tìm hiểu những vấn đề chung liên quan đến việc tái tạo hình ảnh ba chiều của các vật thể từ các hình chiếu. Tìm hiểu tình hình sử dụng các phần mềm xử lý hình ảnh trong y tế tại Việt Nam hiện nay.
- Tìm hiểu nguyên lý tái tạo ảnh ba chiều từ các ảnh cắt lớp nói chung và các ảnh cắt lớp song song nói riêng.
- Tìm hiểu các vấn đề liên quan đến kỹ thuật tái tạo ảnh nổi. Nắm được kĩ thuật tương ứng theo cường độ.
- Tìm hiểu một số lĩnh vực có thể ứng dụng kỹ thuật tái tạo nổi và một số đề tài đã và đang được nghiên cứu trên trên thế giới.
- Viết các phần mềm mang tính minh họa, có thể được sử dụng phục vụ đào tạo, nghiên cứu và phát triển các phần mềm ứng dụng trong tương lai .
Những hạn chế :
Những nghiên cứu mới tập trung vào lý thuyết và phần mềm, chưa được tích hợp với các phần cứng.
Do thời gian nghiên cứu có hạn nên người viết chưa nắm một cách đầy đủ và hệ thống cơ sở lý thuyết của kỹ thuật stereo matching, đặc biệt là về vấn đề hiệu chỉnh camera (camera calibration ) để có thể phát triển tối ưu cho phần mềm ứng dụng, cũng như vấn đề tích hợp hỗ trợ phần cứng.
Hƣớng phát triển
- Đối với vấn đề tái tạo ảnh ba chiều từ các lát cắt song song :
Hướng phát triển là bổ sung thêm các chức năng, tiếp tục tìm hiểu các bộ toolkit VTK và ITK. Tiếp tục tìm hiểu thực tế để phát triển thành một phần mềm có khả năng sử dụng tại Việt Nam.
Tiếp tục nghiên cứu các phương pháp tái tạo ảnh ba chiều với các dạng ảnh cắt lớp khác như cắt xuyên tâm, cắt tự do. Nghiên cứu đặc tính của các loại ảnh cắt lớp của siêu âm, MRI, hình ảnh y học hạt nhân từ đó có những
phương án tái tạo tốt nhất cho mỗi loại.
Sau một quá trình nghiên cứu làm luận văn với sự chỉ dẫn nhiệt tình của thầy giáo hướng dẫn em đã học được cách tìm hiểu, phân tích và nghiên cứu một vấn đề khoa học mới. Trong thời gian làm luận văn tốt nghiệp, mặc dù bản thân đã rất nỗ lực, cố gắng, đầu tư nhiều thời gian, cơng sức cho việc tìm hiểu nghiên cứu đề tài và đã nhận được sự chỉ bảo, định hướng tận tình của thầy giáo hướng dẫn cùng các anh, chị đi trước nhưng do hạn chế về mặt thời gian và khó khăn trong việc tìm kiếm tài liệu, hạn chế về mặt kiến thức của bản thân, nên chưa có được kết quả thực sự hồn hảo. Kính mong các thầy cơ giáo cũng như các bạn đồng nghiệp chỉ bảo và giúp đỡ.
TÀI LIỆU THAM KHẢO Tiếng việt:
[1] Lương Chi Mai, Huỳnh Thị Thanh Bình (2000), Nhập mơn đồ họa máy tính, Nxb Khoa học và Kỹ thuật.
[2] Minh Hồng, Châu Ngọc (2002), Đồ họa máy tính, Nxb Đà Nẵng.
[3] Lương Mạnh Bá, Nguyễn Thanh Thủy (1999), Nhập môn xử lý ảnh số, Nxb Khoa học và Kỹ thuật.
[4] Lê Tấn Hùng, Huỳnh Quyết Thắng (2000), Kỹ thuật đồ họa, Nxb Khoa học và Kỹ thuật.
[5] Đỗ Năng Toàn (2002), tập bài giảng "Đồ họa máy tính", Viện Cơng nghệ thơng tin_Viện Khoa học và Công nghệ Việt Nam.
[6] Lương Chi Mai, Đỗ Năng Toàn (2002), “Ứng dụng khoảng cách Hausdorff
trong phân tích trang tài liệu”, Tạp chí Tin học và Điều khiển học, Tập 18, số 1,
tr 35-43.
[7] Đỗ Năng Tồn (2002), "Biên ảnh và một số tính chất", Tạp chí Khoa học Cơng nghệ, số ĐB:40, tr 41-48.
[8] Huỳnh Quyết Thắng, Lê Tấn Hùng (2006), “Ứng dụng thư viện BK_GRAPHICS trong xây dựng phần mềm xử lý ảnh y học V_DOCTOR theo chuẩn DICOM”.
Tiếng Anh :
[9] Richard Szeliski (1999), Stereo Algorithms and Representations for Image -
Based Rendering.BMVC99
[10] Daniel Scharstein và Richard Szeliski (11/2001), A Taxonomy and
Evaluation of Dense Two-Frame Stereo Correspondence Algorithms . Technical
Report MSR-TR-2001-81.
[11] Robyn Owens (1997).Stereo
Technische Universitäi Müchen) ,Overview of Image Matching Technique . [13] Nassir Navab (12/2005), 3D Computer Vison Camera Models , Courses CAP5415.
[14] Marc Pollefeys (1/2003), Multiple View Geometry in Computer Vision
.Courses Comp 290-089.
[15] Mubarak Shah (7/1997), Fundamentals of Computer Vision , University of Central Florida.
[16] Richard Szeliski (2001), Image and Video-Based modeling and rendering [17] Richard Szeliski và Polina Gollan ,Stereo Matching with Transparency
and Matting. IJCV 1998.
[18] Danail Stoyanov et al. , Dense 3D depth recovery for soft tissue
deformation during robotically assisted laparoscopic surgery .Computer Aided
surgery 7/20 05, p199-208.
[19] David Demirdjian, (2000) EStereo v1.0, www.sourceforge.net.
[20] Christian Wengert, 3D reconstruction from endoscopic video sequences , http://www.vision.ee.ethz.ch/~cwengert/ .
[21] Ignazio Gallo et al. (2005), Neural adaptive stereo matching . Italia
[22] Ahmad Farshoukh và Adel Fakih , 3D Reconstruction of Scoliotic Spines
from 2D Plain Radiographs.
[23] Visualization Toolkit, Insight Segmentation and Registration Toolkit , VolView : www.kitware.org.
[24] Các tài liệu về MMX và SSE : www.intel.com
[25] http://web.cs.wpi.edu/~matt/courses/cs563/talks/powwie/ p1/ray-cast.htm [26] http://medical.nema.org [27] http://www.quazar.de/uk/produkt/dicom/DicomNetOffice/ dicomnetoffice.htm [28] http://www.medcommons.net