Mục lục:

Phát hiện MRI khối u não bằng Matlab: 6 bước
Phát hiện MRI khối u não bằng Matlab: 6 bước

Video: Phát hiện MRI khối u não bằng Matlab: 6 bước

Video: Phát hiện MRI khối u não bằng Matlab: 6 bước
Video: U não - bệnh lý nguy hiểm | VTC14 2024, Tháng mười một
Anonim
Phát hiện MRI khối u não bằng Matlab
Phát hiện MRI khối u não bằng Matlab

Bởi: Madhumita Kannan, Henry Nguyen, Ashley Urrutia Avila, Mei Jin

Mã MATLAB này là một chương trình để phát hiện kích thước, hình dạng và vị trí chính xác của khối u được tìm thấy trong ảnh chụp MRI não của bệnh nhân. Chương trình này được thiết kế để ban đầu hoạt động với việc phát hiện khối u trong quét MRI não, nhưng nó cũng có thể được sử dụng để chẩn đoán ung thư trong quét các cơ quan khác.

Các hướng dẫn sau đây trước tiên sẽ mô tả các phương pháp phân tích hình ảnh thông qua lọc và làm sạch quét MRI, thông qua phân tích hai kênh, lọc trung vị và cửa sổ trượt. Tiếp theo, nó sẽ hướng dẫn cách cô lập khối u bằng cách sử dụng mặt nạ hình elip được tạo sẵn, và lọc nó thêm để phác thảo chu vi hình dạng của khối u.

Khi khối u được phát hiện, hướng dẫn sẽ mô tả thêm cách kết hợp chương trình này vào giao diện người dùng đồ họa (GUI). Trong suốt các hướng dẫn này, mã và tệp thích hợp sẽ được đính kèm để giúp giải thích cách phân tích quét MRI này hoạt động.

Một số điều cần biết, tải xuống và sẵn sàng trước khi bạn tiếp tục với hướng dẫn này: 1. Đảm bảo đã tải xuống phiên bản MATLAB mới nhất. Bạn có thể cài đặt R2018b tại đây:

2. Để chạy chương trình này, bạn cần có quyền truy cập vào các tệp quét não MRI. Mặc dù luôn có thể tìm thấy một số từ hình ảnh của Google, phân tích kỹ lưỡng và chính xác có thể được thực hiện từ hình ảnh thích hợp của các lớp quét não khác nhau cho từng bệnh nhân. Bạn có thể truy cập các tệp cho 20 bệnh nhân khác nhau bị u nguyên bào thần kinh đệm trước và sau khi điều trị từ cơ sở dữ liệu này:

3. Trọng tâm của chương trình này và các phương pháp khác nhau hướng dẫn dự án này được nêu trong tài liệu nghiên cứu này:

Bước 1: Bắt đầu giao diện người dùng đồ họa (GUI)

Khởi tạo giao diện người dùng đồ họa (GUI)
Khởi tạo giao diện người dùng đồ họa (GUI)
Khởi tạo giao diện người dùng đồ họa (GUI)
Khởi tạo giao diện người dùng đồ họa (GUI)

Bước đầu tiên sẽ là tạo và khởi chạy giao diện người dùng đồ họa, GUI. Điều này có thể được thực hiện bằng cách nhập hướng dẫn vào cửa sổ lệnh, nhấn enter và tạo GUI mới. Sau khi hoàn thành bước này, bạn có thể bắt đầu tạo các chức năng như trục, văn bản tĩnh, chỉnh sửa văn bản và các nút nhấn sẽ được hiển thị khi chương trình được chạy và người dùng có thể tương tác với. Các chức năng này có thể được chỉnh sửa và thao tác thông qua trình kiểm tra thuộc tính, tuy nhiên tính năng quan trọng nhất phải được thay đổi khi tạo các chức năng này là Tên thẻ. Điều quan trọng là phải thay đổi tên Thẻ của mỗi chức năng được triển khai vì nó sẽ cho phép chúng tôi tạo một hàm gọi lại có thể phân biệt được. Khi bạn hài lòng với bố cục của GUI, bạn có thể chuyển sang tải các tệp DICOM sẽ được hiển thị trong GUI.

Bước 2: Tải và đọc hình ảnh MRI trong MATLAB

Tải và đọc hình ảnh MRI trong MATLAB
Tải và đọc hình ảnh MRI trong MATLAB
Tải và đọc hình ảnh MRI trong MATLAB
Tải và đọc hình ảnh MRI trong MATLAB

Để tải các tệp DICOM, bạn sẽ phải khởi tạo chính xác chức năng gọi lại sẽ được thực thi khi nhấn nút “Tải hình ảnh MRI”. Sau khi hoàn thành việc này, bạn phải tạo một biến toàn cục sẽ hiển thị hình ảnh trên các trục tay cầm nơi bạn muốn Hình ảnh MRI gốc được hiển thị. Hình ảnh quét MRI được tải xuống từ cơ sở dữ liệu là tất cả các tệp định dạng DICOM cần được tải vào thư mục MATLAB của bạn. Định vị tệp bằng imgetfile để tải chúng vào chương trình. Hình ảnh được đọc bằng chức năng MATLAB tích hợp sẵn ‘dicomread’ và hình ảnh thô đầu tiên cho mỗi tệp được nhúng vào các trục GUI bên trái bằng imshow.

Hàm MATLAB tích hợp sẵn ‘dicominfo’ cũng cực kỳ hữu ích trong việc giải quyết tất cả thông tin của mỗi tệp dicom MRI. Chúng tôi sử dụng chức năng này để trích xuất tất cả thông tin mô tả của bệnh nhân, chẳng hạn như giới tính, tuổi, cân nặng và chiều cao của họ. Hàm này cũng cung cấp cho bạn thứ tự ngăn xếp rất hữu ích để triển khai chương trình trong giao diện người dùng đồ họa. Chúng tôi đã tạo các biến cho từng thông tin mô tả của bệnh nhân sẽ được sử dụng cho GUI khi nhấn nút phát hiện.

Bước 3: Lọc hình ảnh

Lọc hình ảnh
Lọc hình ảnh
Lọc hình ảnh
Lọc hình ảnh

Sau khi tệp DICOM của hình ảnh thô đã được tải và đọc, hình ảnh cần được chuyển đổi từ thang độ xám thành dạng nhị phân chỉ bao gồm các pixel đen và trắng. Chúng tôi đã sử dụng chức năng 'precisioninarize' để tạo hình ảnh nhị phân từ hình ảnh thô bằng cách kiểm soát các khía cạnh của ngưỡng thích ứng ở giá trị độ nhạy 0,59. Hệ số độ nhạy ngưỡng mặc định, 0,5 thấp và không thể phát hiện các đốm và đốm sáng hơn từ hình ảnh, vì vậy chúng tôi đã tăng nó lên 0,59.

Sau đó, hình ảnh hai chiều được xử lý qua bộ lọc trung vị bằng cách sử dụng hàm ‘medfilt2’ vì hình ảnh hai chiều là hai chiều. Chúng tôi đặt mỗi pixel đầu ra chứa giá trị trung bình trong vùng lân cận 5 x 5 xung quanh pixel tương ứng trong hình ảnh nhị phân đầu vào. Điều này làm giảm nhiễu và bảo toàn các cạnh trong hình vuông 5 x 5 xung quanh mỗi pixel. Tiếp theo, chúng tôi áp dụng một cửa sổ trượt bằng cách sử dụng ‘strel’, để tạo một phần tử có cấu trúc phẳng hình đĩa với bán kính vùng lân cận là 2 để xác định từng pixel trung tâm, điểm gốc, trong mỗi vùng lân cận đĩa. Chúng tôi đã sử dụng phần tử cấu trúc đĩa vì chúng tôi đang phân tích từng điểm tròn và các pixel bên trong mỗi điểm, vì vậy phần tử hình dạng đĩa hữu ích hơn.

Khi hình ảnh đã được lọc, nó có thể được làm sạch bằng cách sử dụng chức năng ‘imclose’ để loại bỏ các điểm đen ở giữa các pixel trắng đã lọc trong hình ảnh và đóng tất cả các khoảng trống xung quanh nó. Sau đó, hình ảnh đã được xử lý hoàn toàn có thể được vẽ trong ô thứ hai của hình được phân bổ trước, cho phép so sánh giữa hình ảnh thô và hình ảnh đã lọc.

Bước 4: Cô lập khối u thông qua mặt nạ hình elip

Cách ly khối u qua mặt nạ hình elip
Cách ly khối u qua mặt nạ hình elip
Cách ly khối u qua mặt nạ hình elip
Cách ly khối u qua mặt nạ hình elip
Cách ly khối u qua mặt nạ hình elip
Cách ly khối u qua mặt nạ hình elip

Các điểm sáng của khối u sau đó có thể được cô lập khỏi hình ảnh được lọc chính thông qua một mặt nạ hình elip được tạo trước. Để tạo mặt nạ này, bạn phải biết kích thước của hình ảnh quét MRI thô, ban đầu và sử dụng chiều dài hàng và cột của nó, như tọa độ x và y- tương ứng, phân bổ tọa độ trung tâm cho hình elip. Chúng tôi đặt trục y làm trục chính với bán kính 50 đơn vị tính từ tâm và trục phụ với bán kính 40 đơn vị từ tâm.

Chúng tôi đã sử dụng hàm MATLAB 'meshgrid' để tạo một mặt phẳng Cartesian với tọa độ lưới hai chiều dựa trên tọa độ chứa trong vectơ từ 1 đến chiều dài của trục x và từ 1 đến chiều dài của trục y của hình ảnh. Col là ma trận trong đó mỗi hàng là một bản sao của trục x và Hàng là ma trận trong đó mỗi cột là một bản sao của trục y. Lưới cacte được biểu diễn bằng tọa độ Col và Row có độ dài (1: Y_Size) hàng và độ dài (1: X_Size) cột. Sử dụng các chỉ số Col và Row được tạo bởi lưới Cartesian để xác định phương trình của hình elip tùy thuộc vào bán kính và tọa độ tâm được xác định trước. Đường viền hình elip bây giờ có thể được lấp đầy bằng các pixel màu trắng được tìm thấy từ các điểm khối u.

Sử dụng mặt nạ hình elip được tạo trước, chúng tôi có thể cắt ra khối u cụ thể mà bạn muốn phân tích từ hình ảnh được lọc. Mặt nạ hình elip phát hiện những điểm nào phù hợp một cách hợp lý trong đường viền của hình elip và chấp nhận đây là một điểm trên hình ảnh được lọc để có thể chấp nhận được như một khối u. Sau đó, hàm ‘bwareafilt’ sẽ lọc ra tất cả các đối tượng khác bên ngoài khối u được phát hiện này khỏi hình ảnh. Theo kinh nghiệm, chúng tôi đã sử dụng một cửa sổ cụ thể là 500 x 4000 dựa trên kích thước của tất cả các hình ảnh. Sau đó, chúng tôi áp dụng một cửa sổ trượt khác với 'strel' là một phần tử cấu trúc hình đĩa phẳng có bán kính lân cận lớn hơn là 6, để thu hẹp khoảng cách giữa mỗi pixel trắng trung tâm trong khối u được phát hiện. Vị trí khối u được phát hiện được làm sạch thêm bằng cách sử dụng ‘imclose’ để loại bỏ thêm các điểm ảnh màu đen và lấp đầy tất cả các lỗ bằng ‘imfill’. Sau đó, khối u đã được xử lý này có thể được hiển thị trong ô thứ ba trong ô phân bổ trước để so sánh giữa khối u bị cô lập với hình ảnh gốc và được lọc của quét MRI.

Bước 5: Phác thảo khối u

Phác thảo khối u
Phác thảo khối u
Phác thảo khối u
Phác thảo khối u

Bây giờ khối u đã được cô lập bằng mặt nạ, nó có thể được phác thảo và hiển thị trên hình ảnh ban đầu, để hiển thị vị trí chính xác của nó. Để làm điều này, chúng tôi đã sử dụng chức năng 'bwboundaries' để theo dõi khối u đã phát hiện trước đó với một đường viền. Chúng tôi đã chỉ định phác thảo để không bao gồm các lỗ bên trong vật thể khối u vì nó đang được phác thảo. Điều này có thể được vẽ trên hình ảnh thô, ban đầu, sử dụng vòng lặp ‘for’ để vẽ đường viền xung quanh khối u bằng cách sử dụng các chỉ số của đường có chiều rộng đường là 1,5 pixel. Sau đó, phác thảo này được vẽ trên hình ảnh thô, hiển thị kích thước và vị trí chính xác của khối u, so với ảnh chụp MRI ban đầu.

Bước 6: Phân tích tính chất vật lý của khối u

Phân tích tính chất vật lý của khối u
Phân tích tính chất vật lý của khối u
Phân tích tính chất vật lý của khối u
Phân tích tính chất vật lý của khối u

Vị trí cô lập và được phác thảo có thể cung cấp cho chúng tôi thông tin hữu ích về kích thước, diện tích và vị trí của khối u. Chúng tôi đã sử dụng chức năng "regionprops" để phát hiện các thuộc tính của khối u liên quan đến diện tích, chu vi, centroid và giá trị chỉ số pixel. Giá trị chỉ số pixel này cung cấp cho chúng ta đơn vị thế giới thực cho mỗi pixel của mỗi hình ảnh, duy nhất cho mỗi lần quét. Các thuộc tính này sau đó có thể được chuyển đổi thành các đơn vị thế giới thực là milimét. Thông tin thực nghiệm mà chương trình cung cấp cho chúng tôi là duy nhất cho mỗi lần quét MRI và cực kỳ hữu ích trong việc xác định kích thước, vị trí và loại khối u mà người dùng có thể phân tích và kết hợp vào giao diện người dùng đồ họa.

Đề xuất: