Mục lục:
- Bước 1: Tìm bản quét MRI và MRA của một bộ não bình thường và một bộ não bị ảnh hưởng bởi Moyamoya
- Bước 2: Tải hình ảnh vào MATLAB và gán hình ảnh cho một biến để hiển thị hình ảnh
- Bước 3: Tăng cường cấu trúc kéo dài trong hình ảnh cường độ với tính năng lọc đa tỷ lệ
- Bước 4: Chạy bộ lọc trung vị 2D
- Bước 5: Mặt nạ hình ảnh
- Bước 6: Chọn quét MRA để kiểm tra thống kê
- Bước 7: Tính diện tích các bình máu chuẩn bị cho kiểm tra thống kê
- Bước 8: Chạy thử nghiệm T-test mẫu độc lập
Video: Xử lý hình ảnh Moyamoya: 8 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:35
Moyamoya, "khói phồng", là một căn bệnh hiếm gặp gây ra bởi sự tắc nghẽn các động mạch ở hạch nền, là một khu vực ở đáy não. Căn bệnh này là một bệnh mạch máu não tiến triển chủ yếu ảnh hưởng đến trẻ em. Các triệu chứng của moyamoya bao gồm đột quỵ ban đầu, đột quỵ nhỏ liên tục, yếu cơ, tê liệt hoặc co giật do thu hẹp dần dần các động mạch. Nếu không được điều trị, moyamoya sẽ gây ra các vấn đề về khả năng nói, suy giảm giác quan và ý thức bị tổn thương. Trong dự án của chúng tôi, chúng tôi sẽ sử dụng MATLAB để xử lý trước hình ảnh MRI hoặc MRA bằng cách sử dụng các bộ lọc khác nhau để giảm nhiễu trong hình ảnh nhằm xác định vị trí khu vực bị ảnh hưởng. Ngoài ra, chúng tôi sẽ sử dụng tính năng nâng cao để xác định vị trí các khu vực bị ảnh hưởng chính xác hơn. Hơn nữa, sau đó chúng tôi sẽ chạy thử nghiệm t mẫu độc lập để xác định liệu có sự khác biệt đáng kể giữa số lượng mạch máu trong não bình thường so với não bị ảnh hưởng bởi moyamoya hay không.
Bước 1: Tìm bản quét MRI và MRA của một bộ não bình thường và một bộ não bị ảnh hưởng bởi Moyamoya
Những hình ảnh này là bản quét chúng tôi đã sử dụng cho dự án mà chúng tôi tìm thấy trên mạng. Hai hình ảnh với các mạch máu nằm ở giữa là hình ảnh quét MRA, trong khi hai hình ảnh còn lại là quét MRI.
Các liên kết sau là nơi tìm thấy những hình ảnh này:
static.cambridge.org/resource/id/urn:cambr…
static.cambridge.org/resource/id/urn:cambr…
Bước 2: Tải hình ảnh vào MATLAB và gán hình ảnh cho một biến để hiển thị hình ảnh
Để bắt đầu quá trình, hãy bắt đầu bằng cách xóa cửa sổ lệnh, đóng tất cả các số liệu và đồ thị có thể có có thể đã mở và xóa các biến đã được gán trong không gian làm việc của bạn.
Sau đó, tạo một vòng lặp for từ 1 đến 2 bằng lệnh i = [1: 2]
Sau đó, tải các hình ảnh MRA bằng cách sử dụng lệnh imread (sprintf ('filename%.filetype', i)) để đọc các hình ảnh từ các tệp được chỉ định bởi tên tệp, theo sau là số được sử dụng cho vòng lặp bằng cách sử dụng sprintf để tải và gán hàng loạt nó thành một biến.
Sau đó, để hiển thị hình ảnh trong một hình, sử dụng lệnh imshow (I).
Để gán một bản đồ màu xám, hãy sử dụng bản đồ màu lệnh (màu xám).
Để loại bỏ hoàn toàn màu sắc và chuyển đổi ma trận 3D cho hình ảnh thành 2D, hãy sử dụng lệnh rgb2gray (I) và gán nó cho một biến riêng biệt.
Sau đó tải các hình ảnh MRI bằng cách sử dụng lệnh đã nêu trước đó hoặc imread (sprintf ('filename%.filetype', i)) và gán nó cho một biến mới
Lặp lại lệnh rgb2gray với biến mới được sử dụng cho hình ảnh MRI.
Nếu cần, bạn có thể thay đổi kích thước hình ảnh bằng lệnh imresize (A, scale) và gán cho một biến riêng biệt.
Bước 3: Tăng cường cấu trúc kéo dài trong hình ảnh cường độ với tính năng lọc đa tỷ lệ
Sử dụng một biến mới, sử dụng lệnh fibermetric (A) để nâng cao cấu trúc hình ống trong hình ảnh
Với biến trước đó, sử dụng lệnh histeq (B) để tăng cường cân bằng biểu đồ bằng cách chuyển đổi cường độ của hình ảnh và gán nó cho một biến mới.
Hiển thị biểu đồ bằng lệnh imhist (B)
Tạo một biến mới để tạo ngưỡng cho bộ lọc. Trong trường hợp này, hãy chỉ định biến trước đó> 0,875, lọc ra cường độ pixel dưới giá trị 0,875
Sau đó, tạo một hình mới và sử dụng lệnh imshow (A) để hiển thị hình ảnh mới được lọc.
Bước 4: Chạy bộ lọc trung vị 2D
Sử dụng lệnh medfilt2 (A, [m n]), chạy bộ lọc trung vị 2D, trong đó mỗi pixel đầu ra chứa giá trị trung bình trong ranh giới mxn xung quanh pixel tương ứng trong hình ảnh đầu vào.
Tạo một hình mới và sử dụng imshow (A) để hiển thị hình ảnh đã lọc trung vị.
Bước 5: Mặt nạ hình ảnh
Sử dụng hình ảnh được lọc trung vị, hãy sử dụng lệnh [labelImage, numberOfBlots] = bwlabel (A) để đếm số lượng đốm trắng trong hình ảnh
Sau đó, sử dụng chức năng region props state = regionprops (có nhãn Hình ảnh, 'Khu vực') để tính toán diện tích của mỗi vết hoặc mạch máu
Gán tất cả các khu vực vào một biến
Sau đó, sử dụng một biến khác, đếm số khối vượt quá 50 pixel
Sau đó, sắp xếp bất kỳ đốm màu nào dưới 50 pixel theo thứ tự giảm dần bằng lệnh [sortedAreas, sortedIndicies] = sort (Các khu vực, 'xuống dưới')
Sau đó, sử dụng một biến khác, sử dụng lệnh ismember (labelImage, sortedIndicies (1: numberToExtract)) để trả về một mảng có các phần tử có nhãnImage được tìm thấy trong sortedIndicies từ số 1 đến số mạch máu để trả về logic 1 (true) hoặc một lôgic 0 (sai).
Với biến ở bước trước, hãy tìm các điểm đúng (giá trị> 0) và tạo một mảng logic để tạo ảnh nhị phân và gán nó cho một biến mới.
Tạo một hình mới và sử dụng imshow (A) hình ảnh nhị phân mới.
Sau đó, đảo ngược hình ảnh bằng lệnh imcomplement (A) và gán nó cho một biến khác.
Để tạo hình ảnh có mặt nạ, hãy sử dụng một biến mới với lệnh thay đổi kích thước. * Uint8 (hình ảnh đảo ngược)
Tạo một hình mới và sử dụng imshow (A) để hiển thị hình ảnh bị che.
Để kết thúc toàn bộ mã, hãy đảm bảo sử dụng lệnh 'end' để kết thúc toàn bộ vòng lặp for
Bước 6: Chọn quét MRA để kiểm tra thống kê
Để chuẩn bị cho thử nghiệm thống kê, hãy chọn các bản quét MRA sẽ được sử dụng cho thử nghiệm t mẫu độc lập. Bởi vì hai mẫu của chúng tôi sẽ là não bị ảnh hưởng bởi Moyamoya và não bình thường, hãy chọn một số lượng quét MRA phù hợp cho mỗi nhóm.
Bước 7: Tính diện tích các bình máu chuẩn bị cho kiểm tra thống kê
Kiểm tra thống kê sẽ tập trung vào chiều dài hoặc số lượng mạch máu được hiển thị trên quét MRA. Vì vậy, chúng ta phải tính toán diện tích của các mạch máu trước khi so sánh.
Bắt đầu bằng cách lọc MRA của não bình thường và tính toán số lượng mạch máu. Để làm điều này, hãy chạy một vòng lặp for. Bởi vì có ba hình ảnh, điều kiện sẽ là i = [1: 3].
Mở hình ảnh bằng lệnh imread và gán nó cho một biến.
Tiếp theo, tạo câu lệnh if / else bằng lệnh if, else. Đối với câu lệnh if, hãy sử dụng kích thước lệnh (A, 3) == 3, trong đó A là biến được sử dụng để mở cho hình ảnh, để tạo câu lệnh if khi kích thước thứ ba của mảng là 3. Sau đó chuyển đổi hình ảnh sang 2D và loại bỏ màu sắc bằng cách sử dụng lệnh rgb2gray (A) và gán nó cho một biến mới. Sử dụng lệnh imresize (A, [m n]) để thay đổi kích thước hình ảnh. Trong trường hợp này, chúng tôi đã thay đổi kích thước hình ảnh thành ma trận 1024 x 1024. Để nâng cao cấu trúc hình ống của hình ảnh, hãy sử dụng lại lệnh fibermetric và gán nó cho một biến mới.
Sau đây là cho câu lệnh else. Nếu hình ảnh không phải là ma trận 3D, chúng tôi muốn bỏ qua chuyển đổi. Thực hiện tương tự như câu lệnh if, nhưng không có lệnh rgb2gray (A).
Tạo một biến mới, đặt nó bằng với biến từ bước đo sợi quang lớn hơn 0,15. Điều này tạo ngưỡng cho hình ảnh đối với các cường độ lớn hơn 0,15.
Chúng tôi sẽ lặp lại các dòng mã từ bước 4 và 5 của chỉ dẫn từ dòng bộ lọc trung vị cho đến dòng imshow (I). Sau đó, sử dụng lệnh sum (I (:)) để cộng tất cả các pixel tạo thành mạch máu và gán nó cho một biến riêng biệt. Đặt tên biến mới là NormalBloodVessels (i) và đặt nó bằng biến từ lệnh sum (I (:)). Điều này thêm dữ liệu vào ma trận.
Kết thúc vòng lặp và lặp lại nhưng đối với MRA của bộ não bị ảnh hưởng bởi Moyamoya. Đặt tên biến cuối cùng là MoyaMoyaBloodVessels (i) để không nhầm lẫn nó với MRA của não bình thường.
Bước 8: Chạy thử nghiệm T-test mẫu độc lập
Vì có hai mẫu độc lập và một dân số nhỏ, nên chạy thử nghiệm t-test các mẫu độc lập.
Tạo và đặt tên cho một chức năng chạy thử nghiệm t-test mẫu độc lập để xác định xem số lượng mạch máu trong MRA của não bình thường có tương đương đáng kể hay không với MRA của não bị ảnh hưởng bởi Moyamoya.
Hiển thị giả thuyết được đặt ra cho phép thử bằng cách sử dụng lệnh disp ('X'). Trên dòng đầu tiên, hiển thị, "Các giả thuyết cho hai phép thử t mẫu." Trên dòng thứ hai, hiển thị, "H0 = Số lượng mạch máu của não bình thường bằng số lượng mạch máu của não bị bệnh Moyamoya," để nêu giả thuyết không. Trên dòng thứ ba, hiển thị, "HA = Số lượng mạch máu của não bình thường không bằng số lượng mạch máu của não bị bệnh Moyamoya." để nêu giả thuyết thay thế.
Sử dụng khoảng tin cậy 95% và cỡ mẫu là 3, tính điểm t bằng cách sử dụng lệnh tinv ([0,025 0,975], 2) và gán cho biến t. Sử dụng lệnh var (NormalBloodVessels) và var (MoyaMoyaBloodVessels) và gán chúng cho các biến để tính toán phương sai của cả hai tập dữ liệu.
Kiểm tra xem các phương sai có gần bằng nhau hay không. Thực hiện việc này bằng cách tạo câu lệnh if / else với lệnh if, else. Đối với điều kiện trong câu lệnh if, hãy viết A / B == [0,25: 4], trong đó A là biến tính phương sai của mạch máu bình thường và B là biến tính phương sai của mạch máu Moyamoya. 0,25 và 4 đến từ một ước lượng chung để xác định xem các phương sai có bằng nhau hay không. Sau đó, chạy thử nghiệm t hai mẫu với [h, p] = ttest2 (A, B, 0,05, 'cả hai', 'bằng nhau'), với A và B là các biến giống như đã đề cập trước đó. Đối với câu lệnh else, hãy sử dụng [h, p] = ttest2 (A, B, 0,05, 'cả hai', 'không bằng nhau') để chạy thử nghiệm t hai mẫu trong trường hợp các phương sai không bằng nhau. Kết thúc câu lệnh if / else. Điều này sẽ tính toán p.
Tạo câu lệnh if / else sẽ hiển thị kết luận dựa trên giá trị của p. Điều kiện cho câu lệnh if sẽ là p> 0,05. Vì chúng tôi thường không bác bỏ giả thuyết rỗng khi giá trị của p lớn hơn 0,05, hãy sử dụng lệnh disp ('X') để hiển thị "Vì giá trị p lớn hơn 0,05 nên chúng tôi không thể bác bỏ giả thuyết rỗng" và " Do đó, chúng tôi không thể bác bỏ rằng số lượng mạch máu của não bình thường tương đương với não bị bệnh Moyamoya. " Trong câu lệnh else, vì chúng tôi thường bác bỏ giả thuyết rỗng khi giá trị của p nhỏ hơn 0,05, hãy sử dụng lệnh disp ('X') để hiển thị "Vì giá trị p nhỏ hơn 0,05 nên chúng tôi bác bỏ giả thuyết rỗng" và " Do đó, chúng tôi không thể bác bỏ rằng số lượng mạch máu của một bộ não bình thường không bằng một bộ não bị bệnh Moyamoya. " Kết thúc câu lệnh if / else.
Đề xuất:
Máy ảnh hồng ngoại hình ảnh nhiệt tự làm: 3 bước (có hình ảnh)
Máy ảnh hồng ngoại hình ảnh nhiệt tự làm: Xin chào! Tôi luôn tìm kiếm các Dự án mới cho các bài học vật lý của mình. Hai năm trước, tôi đã xem một báo cáo về cảm biến nhiệt MLX90614 từ Melexis. Loại tốt nhất chỉ với 5 ° FOV (trường nhìn) sẽ phù hợp với máy ảnh nhiệt tự chế
Tự làm cảm biến hình ảnh và máy ảnh kỹ thuật số: 14 bước (có hình ảnh)
Tự làm cảm biến hình ảnh và máy ảnh kỹ thuật số: Có rất nhiều hướng dẫn trực tuyến về cách xây dựng máy ảnh phim của riêng bạn, nhưng tôi không nghĩ rằng có bất kỳ hướng dẫn nào về việc xây dựng cảm biến hình ảnh của riêng bạn! Cảm biến hình ảnh có sẵn từ rất nhiều công ty trực tuyến và việc sử dụng chúng sẽ giúp thiết kế
Hình ảnh - Máy ảnh Raspberry Pi in 3D.: 14 bước (có Hình ảnh)
Hình ảnh - Máy ảnh Raspberry Pi 3D được in: Cách đây trở lại vào đầu năm 2014, tôi đã xuất bản một máy ảnh có thể hướng dẫn được gọi là SnapPiCam. Máy ảnh được thiết kế để đáp ứng với Adafruit PiTFT mới được phát hành. Đã hơn một năm trôi qua và với bước đột phá gần đây của tôi vào in 3D, tôi nghĩ rằng n
MÁY ẢNH UNICORN - Raspberry Pi Zero W NoIR Cấu hình máy ảnh 8MP: 7 bước (có hình ảnh)
UNICORN CAMERA - Raspberry Pi Zero W NoIR Camera 8MP Build: Pi Zero W NoIR Camera 8MP BuildThis hướng dẫn được tạo ra để giúp bất kỳ ai muốn có Camera hồng ngoại hoặc Camera di động thực sự tuyệt vời hoặc Camera Raspberry Pi di động hoặc chỉ muốn giải trí, heheh . Đây là cấu hình và giá cả phải chăng nhất
Ánh sáng video thân mật / Ánh sáng chụp ảnh cầm tay: 7 bước (với hình ảnh)
Ánh sáng video thân mật / Ánh sáng chụp ảnh cầm tay: Tôi biết bạn đang nghĩ gì. Bằng cách " thân mật, " Ý tôi là chiếu sáng cận cảnh trong các tình huống ánh sáng khó - không nhất thiết dành cho " các tình huống thân mật. &Quot; (Tuy nhiên, nó cũng có thể được sử dụng cho việc đó …) Là một nhà quay phim thành phố New York - hoặc