5. Cấu trúc luận văn
2.3. KỸ THUẬT DỰNG MÔ HÌNH 3D GAN
2.3.1. Thuật toán Marching Cubes
2.3.1.1. Giới thiệu
Marching Cubes là một thuật toán nổi tiếng, đƣợc giới thiệu bởi Lorensen và Cline để chiết xuất các bề mặt từ các tập dữ liệu 3D [11]. Nó hoạt động bằng cách xây dựng một khối gồm nhiều khối con tƣơng ứng với kích thƣớc của khối dữ liệu, sau đó chia toàn bộ dữ liệu vào khối này. Việc xây dựng mô hình 3D từ khối dữ liệu bây giờ trở thành bài toán “xây dựng lƣới đa giác từ dữ liệu trong một khối con”. Kỹ thuật này đƣợc minh họa trong hình sau.
Hình 2.10. Minh họa thuật toán Marching Cubes
Việc xây dựng mô hình 3D Gan từ dữ liệu CT dựa vào ngƣỡng, trƣớc tiên chúng ta cần xác định đƣợc những điểm ảnh nào thuộc ngƣỡng điểm đó sẽ đƣợc chọn, điểm ảnh nào không thuộc ngƣỡng thì loại bỏ. Cuối cùng là áp dụng thuật toán Cubes Marching với dữ liệu tập điểm đƣợc chọn.
2.3.1.2. Thuật toán Marching Cubes
Thuật toán Marching Cubes tổng quát có thể đƣợc chia nhỏ thành thuật toán Marching Cubes cho một khối con. Việc tạo ra các đa giác trong một khối con hoạt động nhƣ sau: Nhƣ thể hiện trong Hình 2.11, chúng ta lấy giá trị tại 8 đỉnh và xác định xem mỗi giá trị là lựa chọn hay loại bỏ. Mỗi một đỉnh chúng ta sẽ tạo một bit. Nếu giá trị không đƣợc lựa chọn, chúng ta thiết lập các bit bằng 0; nếu giá trị đƣợc lựa chọn, tôi thiết lập các bit 1.
Hình 2.11. Một khối con với các giá trị đƣợc xác định tại 8 đỉnh
Tiếp theo chúng ta tập trung vào việc xem xét một giá trị đƣợc tạo từ 8 bit trên, và mỗi giá trị này chúng ta coi là một trƣờng hợp trong khoảng [0- 255]. Nếu trƣờng hợp là 0 hoặc 255, thì khối đó sẽ hoàn toàn bị loại bỏ và không có đa giác nào đƣợc tạo ra. Tuy nhiên, nếu trƣờng hợp là trong khoảng [1..254], một số số đa giác sẽ đƣợc tạo ra.
Nếu trƣờng hợp không phải là 0 hoặc 255, nó đƣợc sử dụng để chỉ mục vào bảng tham chiếu (lookup tables) để xác định có bao nhiêu đa giác để đầu ra cho trƣờng hợp đó, cũng nhƣ làm thế nào để xây dựng chúng. Mỗi đa giác đƣợc tạo ra bằng cách kết nối ba điểm (đỉnh) nằm ở đâu đó trên 12 cạnh củakhối con. Hình 2.12 minh họa các trƣờng hợp cơ bản áp dụng các thuật toán Marching Cubes.
Hình 2.12. Các trƣờng hợp cơ bản áp dụng cho Marching Cubes
Một đỉnh nằm dọc theo một cạnh đƣợc xác định bằng cách nội suy. Các đỉnh nên nằm tại vị trí mà giá trị là 0. Ví dụ, nếu giá trị tại A là 0,1 và tại B là -0.3, đỉnh sẽ nằm ở 25 % của đƣờng đi từ A đến B.
Hình 2.13 minh họa một trƣờng hợp. Sau khi các trƣờng hợp đƣợc sử dụng để chỉ mục vào bảng tra cứu, các dấu chấm màu xanh chỉ ra cạnh phải có đỉnh nằm trên chúng. khu vực màu xám cho thấy làm thế nào những đỉnh sẽ đƣợc kết nối để làm cho hình tam giác. Lƣu ý rằng, tại các dấu chấm màu xanh thực sự xuất hiện dọc theo các cạnh phụ thuộc vào các giá trị ở hai đầu của cạnh.
Hình 2.13. Đa giác đƣợc xây dựng trong một khối con
Đầu ra tại pha này là một danh sách tam giác, nhƣ vậy mỗi ba đỉnh đó tạo ra một tam giác, và đỉnh kế tiếp sẽ bắt đầu một tam giác mới. Nếu một trƣờng hợp nào đó đòi hỏi chúng ta tạo ra N đa giác, chúng ta sẽ cần phải tạo ra một đỉnh (một nơi nào dọc theo một trong các cạnh của khối) 3xN lần.
2.3.1.3. Bảng tham chiếu
Có hai bảng tham chiếu sẽ đƣợc đề cập đến ở đây: Bảng chỉ mục, chỉ mục sẽ đƣợc lập bằng với số thứ tự của các trƣờng hợp, nó cho chúng ta biết sẽ có bao nhiêu đa giác đƣợc tạo ra cho trƣờng hợp đó. Bảng thứ hai, sau khi đã nhận đƣợc số chỉ mục của trƣờng hợp, nó cung cấp các thông tin cần thiết để xây dựng lên các tam giác, và có thể cung cấp để xây dựng tối đa tới 5 tam giác trong một khối con. Mỗi tam giác này đƣợc mô tả bởi 3 giá trị, ba giá trị là các số cạnh [0..11] trên khối lập phƣơng con đó phải đƣợc kết nối để xây dựng các tam giác. Hình 2.14 cho thấy số thứ tự của cạnh.
Hình 2.14. Đánh số thứ tự cho 12 cạnh của một khối con
2.3.1.4. Một số kết quả thử nghiệm
Hình 2.15. Kết quả thử nghiệm
2.3.2. Dựng lát cắt từ ảnh chụp cắt lớp
Đầu vào: Tập ảnh Dicom Gan (X) gồm x ảnh của bệnh nhân, mỗi ảnh có (m.n) điểm ảnh, thông tin lát cắt (số nguyên l là lát cắt)
Đầu ra: Ảnh lát cắt.
Thuật toán:
1) Xây dựng lưới khối tương ứng với các pixel trên tập ảnh (gồm (m.n.x) khối con).
2) Khởi tạo lưới mô hình đa giác M = null; 3) Với mỗi khối con chúng ta tiến hành kiểm tra:
3.1) Nếu tất cả các đỉnh của khối con đều có giá trị > ngưỡng thì các đỉnh của khối con này không được chọn.
đỉnh của khối con này cũng không được chọn.
3.3) Nếu tồn tại đỉnh của khối con có giá trị < ngưỡng và đồng thời cũng tồn tại đỉnh có giá trị > ngưỡng thì lựa chọn khối con và xác định các đỉnh của khối con được đưa vào tập đỉnh của mô hình. M = M T, với T là đa giác được tạo bởi cách đỉnh của khối con .
4) Chuẩn hóa mô hình M.
2.4. KẾT LUẬN CHƢƠNG 2
Dựng mô hình 3D Gan từ ảnh chụp cắt lớp của bệnh nhân hỗ trợ trong chẩn đoán hình ảnh là một việc làm cần thiết và có ý nghĩa thực tiễn cao. Nó cung cấp cho bác sĩ một cái nhìn đa chiều đầy đủ về hình ảnh của bệnh nhân.
Chƣơng 2 đã đƣa ra thuật toán dựng mô hình 3D Gan của bệnh nhân từ ảnh chụp cắt lớp sử dụng thuật toán Marching Cubes.
CHƢƠNG 3: CÀI ĐẶT VÀ THỬ NGHIỆM
Trong chương này, luận văn sẽ trình bày cài đặt áp dụng cho bài toán mô hình 3D Gan từ dữ liệu ảnh CT. Trên cơ sở các kỹ thuật đã trình bày ở chương 2 bao gồm: các kỹ thuật nâng cao chất lượng ảnh Gan, kỹ thuật phân đoạn Gan. Ảnh CT Gan sau khi được phân đoạn sẽ được áp dụng kỹ thuật dựng mô hình 3D Gan Marching Cubes để dựng mô hình 3D Gan từ ảnh dữ liệu ảnh CT.
3.1. PHÁT BIỂU BÀI TOÁN
Đầu vào: Một tập hợp các lát cắt song song đƣợc sắp xếp theo kiểu ngăn xếp của Gan đƣợc chụp bởi thiết bị chụp cắt lớp và đƣợc lƣu dƣới dạng chuẩn DICOM.
Đầu ra: Mô hình 3D của Gan
Phƣơng pháp:
- Tăng cƣờng chất lƣợng ảnh
- Phân đoạn Gan dựa vào mô hình chất liệu - Hiển thị 3D sử dụng kỹ thuật Marching Cubes
3.2. PHÂN TÍCH BÀI TOÁN 3.2.1. Dữ liệu mô tả và xử lý 3.2.1. Dữ liệu mô tả và xử lý
Trong phạm vi luận văn, chƣơng trình thử nghiệm trên bộ dữ liệu DICOM đƣợc thu nhận từ nguồn Internet và máy chụp cắt lớp điện toán CT tại bệnh viện đa khoa tỉnh Bình Định.
Dữ liệu ảnh chuẩn DICOM ngoài dữ liệu hình ảnh, ảnh y tế DICOM còn chứa thêm một số thông tin khác nhƣ: họ tên bệnh nhân, thiết bị chụp cắt lớp, hƣớng chụp, cách mã hóa dữ liệu ảnh, ... do đó để hiển thị ảnh y tế DICOM cần có một chƣơng trình hiển thị riêng đối với chuẩn ảnh này.
3.2.2. Chi tiết thực hiện
3.2.2.1. Môi trường cài đặt
Chƣơng trình đƣợc phát triển trên nền tảng Visual C++ 2015, bộ thƣ
viện thị giác máy mã nguồn mở OpenCV (địa chỉ
http://sourceforge.net/projects/opencvlibrary), thƣ viện đồ họa máy tính vtk [4]. Máy tính MSI core I7, Ram 8Gb.
3.2.2.2. Bộ công cụ hỗ trợ vtk
Vtk (Visualization Toolkit) là một bộ công cụ có mã nguồn mở đƣợc phát triển bởi Will Schroeder, Ken Martin và Bill Lorensen vào năm 1994.
Vtk 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 làm ví dụ minh họa, trên thế giới cũng có nhiều phần mềm đƣợc phát triển từ vtk.
Vtk đƣợc thiết kế rất chuyên nghiệp từ ngôn ngữ C++ theo kiểu hƣớng đối tƣợng, có thể sử dụng trong nhiều ngôn ngữ khác nhau nhƣ Java, Tel, Python, .NET, ... Bộ công cụ này có mã nguồn mở và liên tục đƣợc nâng cấp. Đặc biệt, vtk có thể ứng dụng trong nhiều lĩnh vực trong đó ứng dụng nhiều trong lĩnh vực y sinh vì cung cấp nhiều chức năng xử lý hình ảnh y tế. Vtk hỗ trợ nhiều trong việc thu nhận dữ liệu 3D, hỗ trợ việc hiển thị, ƣớc lƣợng khối vật chất.
Một số đặc điểm của vtk:
Vtk hỗ trợ một số đối tƣợng cơ bản ứng dụng trong xử lý ảnh nhƣ: - Render Master: định vị thiết bị và tạo render Window
-Render window: quản lý cửa sổ trên thiết bị hiển thị. Một hoặc nhiều renderer cùng vẽ trong một render để tạo nên một cảnh.
-Camera: xác định vị trí nhìn, tiêu điểm và các thông số khác của camera.
-Actor: actor xác định thời gian hoạt động của đối tƣợng mapper, property và transform.
-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ẽ, ...
-Mapper: xác định dạng hình học của actor
-Transform: đối tƣợng này gồm một ma trận biến đổi 4 4 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.
3.2.2.3. Quy trình thực hiện
Bƣớc 1: Đọc ảnh CTổ bụng
Bƣớc 2: Thực hiện thuật toán tăng cƣờng chất lƣợng ảnh dựa vào kỹ thuật Gradient đƣợc trình bày trong phần 2.1.2.
Bƣớc 3: Thực hiện thuật toán phân đoạn ảnh dựa vào mô hình chất liệu đƣợc trình bày trong phần 2.2.3.
Bƣớc 4: Thực hiện thuật toán hiển thị mô hình 3D dựa vào Marching Cube đƣợc trình bày trong phần 2.3.
3.3. MỘT SỐ KẾT QUẢ THỰC NGHIỆM
Để đánh giá chất lƣợng kỹ thuật đã đƣợc trình bày trong chƣơng 2, luận văn tiến hành cài đặt thử nghiệm với bộ dữ liệu 3D-IRCADb-01 [12] và các ảnh chụp cắt lớp gan đƣợc thu thập tại bệnh viện Đa khoa Bình Định. Bộ dữ liệu bao gồm một số bộ ảnh y khoa của bệnh nhân ẩn danh, bộ phận Gan đƣợc các chuyên gia y tế đánh dấu thủ công. Bộ dữ liệu bao gồm ảnh CT của 10 phụ nữ và 10 nam giới, dữ liệu của mỗi bệnh nhân đƣợc lƣu trữ trong một thƣ mục. Các dữ liệu hình ảnh y khoa và các dữ liệu mặt nạ đƣợc đánh dấu và lƣu trữ dƣới dạng định dạng DICOM.
Sau đây là một số hình ảnh minh họa chƣơng trình thực nghiệm:
Hình 3.1. Giao diện chính của chƣơng trình
Chọn thƣ mục Select folder để chọn đƣờng dẫn đến thƣ mục chứa tập tin DICOM.
Ảnh đầu vào: Gồm 30 ảnh lát cắt CT ổ bụng, mỗi ảnh có kích thƣớc 512 512 pixel.
Hình 3.2. Ảnh DICOM CT 30 lát cắt ổ bụng
Hình 3.3. Ảnh phân đoạn Gan (màu xanh) tƣơng ứng của 30 lát cắt DICOM ổ bụng đầu vào
Hình 3.4. Mô hình 3D Gan từ 30 lát cắt Gan
Ảnh đầu vào: Gồm 90 ảnh lát cắt CT ổ bụng, mỗi ảnh có kích thƣớc 512 512 pixel.
Hình 3.6. Ảnh phân đoạn Gan (màu xanh) tƣơng ứng của 90 ảnh DICOM ổ bụng đầu vào
Hình 3.7. Mô hình 3D của Gan từ 90 ảnh phân đoạn Gan
Ảnh đầu vào: Gồm 129 ảnh lát cắt CT ổ bụng, mỗi ảnh có kích thƣớc 512 512 pixel.
Hình 3.8. Mô hình 3D của Gan từ 129 ảnh phân đoạn Gan
Hình 3.9. Mô hình 3D của Gan từ 172 ảnh phân đoạn Gan
Ảnh đầu vào: Gồm 225 ảnh lát cắt CT ổ bụng, mỗi ảnh có kích thƣớc 512 512 pixel.
3.4. ĐÁNH GIÁ
Trong ảnh y tế, dữ liệu gan có độ tƣơng phản thấp so với vùng mô xung quanh; hơn nữa, độ tƣơng phản của gan có thể thay đổi do ảnh hƣởng của nồng độ chất béo trong gan. Một điểm quan trọng nữa là hình dạng của lá gan có rất nhiều biến thể. Đây là một loại đối tƣợng phức tạp và rất khó quan sát chi tiết kể cả với mắt ngƣời. Kết quả thử nghiệm đã xác định đƣợc tƣơng đối vị trí xuất hiện của đối tƣợng nhƣng vẫn còn một số vấn đề cần giải quyết với những vùng biên, vùng góc. Đây là thách thức và cũng là vấn đề nghiên cứu có ý nghĩa với nhóm tác giả trong tƣơng lai sắp tới.
Nhìn chung, với những bộ dữ liệu lớn, thời gian chạy của chƣơng trình còn khá chậm. Một số mô hình phức tạp chỉ hiển thị một phần dữ liệu Gan và có thể có lỗ trên bề mặt vì có khá nhiều đa giác đƣợc tạo ra. Trung bình mỗi khối lập phƣơng sẽ tạo ra 3 tam giác. Vì vậy khối dữ liệu kích thƣớc càng lớn có thể tạo ra càng nhiều tam giác do đó thuật toán không hiệu quả lắm với khối dữ liệu lớn.
Bảng 3.1. Số lƣợng lát cắt, thời gian phân đoạn Gan, tái tạo mô hình 3D Gan
Số lƣợng lát cắt Thời gian phân đoạn gan (s)
Thời gian tái tạo 3D Gan (s)
30 68 2,5
90 148 8,4
129 165 10,6
172 220 13,5
225 325 16,6
Từ bảng 3.1, ta có thể thấy theo kỹ thuật mà luận văn thử nghiệm, thời gian xử lý phụ thuộc khá nhiều vào thời gian phân đoạn gan. Khi số lƣợng lát cắt tăng lên từ 30 đến 255, thời gian tái tạo 3D gan tăng từ 2.5 giây lên 16.6 giây, tức là khoảng 14.1 giây, trong đó thời gian phân đoạn gan tăng lên từ 68
đầu vào để dựng 3D gan. Do đó để tiếp tục phát triển tiếp những nội dung của luận văn, việc đầu tƣ nghiên cứu cho công đoạn xử lý ảnh, cụ thể là phân đoạn gan, là vấn đề cần đƣợc đặt trọng tâm.
3.5.HƢỚNG PHÁT TRIỂN
Để cải tiến những nhƣợc điểm đã nêu ở phần 3.4.2, xin đƣa ra 2 hƣớng cải tiến chƣơng trình nhƣ sau:
Nghiên cứu các thuật toán phân đoạn gan để cải thiện thời gian phân đoạn gan.
Cải tiến chất lƣợng hình ảnh: Để khắc phục tình trạng hiển thị một phần của dữ liệu và có thể có lỗ trên bề mặt vì có khá nhiều đa giác đƣợc tạo ra và cải tiến tốc độ ta không vẽ các đa giác mà vẽ các điểm bề mặt. Để vẽ một đƣờng ta tìm các pixel có giao với đƣờng đó, sau đó chia nhỏ các pixel này.
Để vẽ không gian 3 chiều trƣớc hết ta 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.
Ƣu điểm của kỹ thuật này là cải thiện tốc độ chƣơng trình và bề mặt tạo ra mịn hơn.
Cải tiến tốc độ chƣơng trình: Dựa trên phƣơng pháp tính toán song song. Phƣơng pháp tính toán song song là phƣơng pháp tính toán tại một thời điểm thay vì tính toán một giá trị điểm ảnh trên toàn ảnh thì ta áp dụng phƣơng pháp tính toán nhiều giá trị điểm ảnh trên toàn ảnh.
3.6. KẾT LUẬN CHƢƠNG 3
Chƣơng này đã cài đặt đƣợc chƣơng trình thử nghiệm kỹ thuật dựng mô hình 3D của Gan từ dữ liệu ảnh CT dùng kỹ thuật hiển thị 3D Marching Cubes trong hiển thị mô hình 3D Gan từ dữ liệu hình ảnh CT ổ bụng. Từ kết quả chạy thử chƣơng trình, rút ra đƣợc hƣớng phát triển thuật toán.
KẾT LUẬN VÀ KIẾN NGHỊ
Theo thống kê trong vòng 20 năm gần đây tỷ lệ ung thƣ gan tăng lên đáng kể [6]. Ung thƣ gan nguyên phát đứng hàng thứ 3 trong các nguyên nhân chết do ung thƣ trên thế giới. Yếu tố nguy cơ phổ biến của ung thƣ gan là xơ