Mục lục:
- Bước 1: Sử dụng Hộp não
- Bước 2: Giới thiệu: Phân tích các phần chéo
- Bước 3: Thiết lập một chức năng: LevelCurveTracings.m
- Bước 4: Phát triển thuật toán giới hạn: Tìm các giới hạn
- Bước 5: Phát triển thuật toán giới hạn: Tạo mảng giới hạn bên ngoài
- Bước 6: Phát triển thuật toán ràng buộc: Làm việc với điểm trung tâm
- Bước 7: Phát triển thuật toán giới hạn: Khi một Centroid không được căn giữa
- Bước 8: Phát triển thuật toán ranh giới: Sự giao thoa của các lỗ
- Bước 9: Phát triển thuật toán ranh giới: Xác định vị trí lỗ, hoàn thiện các đường viền não và các đường viền lỗ
- Bước 10: Ghi dữ liệu: Chức năng PatientFiles.m
- Bước 11: Ghi dữ liệu vào tệp
- Bước 12: Ghi lại dữ liệu: Hiển thị một lô khối lượng não theo thời gian
- Bước 13: Đóng khoảng trống trong các lô phụ: Subplotclose.m
- Bước 14: Mã chính: Xóa tất cả và nhắc đầu vào
- Bước 15: Mã chính: Xử lý hàng loạt hình ảnh
- Bước 16: Mã chính: Padding
- Bước 17: Quy tắc chính: Xác định ranh giới
- Bước 18: Mã chính: Xác định thứ nguyên Z thích hợp
- Bước 19: Mã chính: Xác định tọa độ X và Y
- Bước 20: Mã chính: Vẽ cấu trúc ba chiều, tìm khối lượng và ghi dữ liệu
Video: Hộp não: Theo dõi khối lượng thần kinh theo thời gian: 20 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-31 10:26
Việc tiến vào biên giới của sự sống lâu hơn của con người đã làm gia tăng các căn bệnh mà các nền văn minh trước chúng ta chưa từng thấy. Trong số này, bệnh Alzheimer đã ảnh hưởng đến khoảng 5,3 triệu người Mỹ cao tuổi còn sống vào năm 2017, hoặc khoảng 1/10 người Mỹ cao tuổi (https://www.alz.org/facts/) và vô số người khác mắc chứng sa sút trí tuệ. Để hỗ trợ trong cuộc chiến để hiểu những gì đang gây ra cho những người lớn tuổi của chúng ta, mã này sẽ trang bị cho các nhà nghiên cứu tương lai và những người ham học hỏi khả năng theo dõi khối lượng não theo thời gian.
Bước 1: Sử dụng Hộp não
Để sử dụng hộp não, người ta chỉ cần những điều sau:
- Chụp MRI não và tên cũng như định dạng của các tệp đó (tất cả phải có cùng kích thước)
- Thời lượng của một lần quét
- Khoảng cách giữa mỗi lớp (quét MRI)
- Tên bệnh nhân (Khi nhập, không bao gồm dấu cách và vui lòng viết hoa họ và tên, chẳng hạn như: FirstnameLastname)
Và từ đó, người ta có khả năng theo dõi xu hướng của từng cá nhân về khối lượng não theo thời gian. Do đó, phần mềm này có thể theo dõi các số liệu về xu hướng của bệnh Alzheimer. Chiều dài chúng tôi sử dụng trong thử nghiệm là 180 mm cho chiều dài một lần quét và 5 mm cho khoảng cách giữa các lần quét MRI, dựa trên số liệu trung bình.
Tuy nhiên, ứng dụng của hộp não không cần phải bị hạn chế trong một nhiệm vụ này. Nếu các mặt cắt của một vật rắn nhất định được chụp ảnh, giống như một khối u, thì xu hướng thay đổi về thể tích của những vật này cũng có thể được theo dõi trong phần mềm.
Bước 2: Giới thiệu: Phân tích các phần chéo
Trong cấu trúc ba chiều, mặt phẳng hai chiều bao gồm sẽ được gọi là mặt cắt ngang. Hãy tưởng tượng rằng một tập giấy tạo nên một hình lăng trụ chữ nhật, khi đó mỗi mảnh giấy sẽ là một mặt cắt của tờ giấy. Khi tưởng tượng bộ não, chúng ta áp dụng cùng một hướng suy nghĩ. MRI (hình ảnh cộng hưởng từ) (xem thông tin trên MRI) chụp các mặt cắt ngang của não và từ việc sử dụng các ranh giới được xác định trong mỗi "lớp" của não được cung cấp, chúng ta có thể xây dựng một cấu trúc để mô hình hóa và tìm thể tích của não.. Tuy nhiên, trước tiên chúng ta phải xây dựng một chức năng để cung cấp thông tin về các ranh giới đó.
Bước 3: Thiết lập một chức năng: LevelCurveTracings.m
Trước tiên, hãy đảm bảo rằng máy tính của bạn đã tải xuống MATLAB_R2017b (tải xuống tại đây) và mở MATLAB. Trong giao diện MATLAB, nhấp vào nút ở góc trên bên trái của cửa sổ có nội dung "Mới" với dấu cộng màu vàng đậm và chọn tùy chọn "chức năng", để mở trong cửa sổ trình chỉnh sửa một khoảng trống giống như trong bức tranh thứ ba. Chúng tôi sẽ tập trung vào việc thay đổi dòng đầu tiên để thiết lập chức năng. Trong trường hợp nó nói "outputArg1", hãy thay thế nó bằng "brain", "outputArg2" để nói "lỗ", "unsitled2" thành "exp2" và "inputArg1" thành "image" và xóa "inputArg2". Bây giờ bạn có một hàm được gọi bằng cách sử dụng "exp2", lấy một đối số là "hình ảnh" và xuất ra ranh giới của "não" và "lỗ". Dòng đầu tiên của hàm phải giống với dòng được mô tả trong hình thứ tư. Xóa tất cả mã bên dưới dòng đầu tiên này.
Bước 4: Phát triển thuật toán giới hạn: Tìm các giới hạn
Nhập mã như sau bên dưới dòng. Phần này của hàm thực hiện từng dòng sau.
- Tải trong hình ảnh "image" vào biến "mri".
- Biến "mri" thành một hình ảnh được tạo bằng các giá trị trong một dải số thành số đơn vị và số không (hay còn gọi là mã số nhị phân) dựa trên giá trị ngưỡng đã đặt. Nếu giá trị trong một pixel bằng hoặc lớn hơn 0,1, giá trị đó được đặt thành một, nếu không, giá trị tại pixel đó được đặt thành 0.
- Bốn dòng sau biến 10 cột và hàng ở các cạnh của lớp quét MRI thành số không, để tránh đọc các giá trị không chính xác khi tạo giới hạn (như đã học được từ thử nghiệm với mã).
- Trong dòng cuối cùng, bwboundaries theo dõi các giới hạn của hình ảnh hai phân tử "mri" và đặt nó bằng "b", một mảng có các phần tử có chỉ số tương ứng với các chỉ số của các giới hạn được đặt thành một.
Bước 5: Phát triển thuật toán giới hạn: Tạo mảng giới hạn bên ngoài
Làm theo trong cửa sổ trình chỉnh sửa với đoạn mã sau trong hình. Phần này của mã thực hiện từng dòng sau.
- Tìm độ dài của mỗi hàng của hình ảnh hai mã "b" (cellfun áp dụng độ dài hàm cho mỗi hàng).
- Đặt "loc" để lưu trữ độ dài tối đa.
- Tìm chỉ số của độ dài tối đa, được đặt để lưu trữ trong "LargeTrace".
- Tìm kích thước của hình ảnh "mri", có cùng kích thước với "b" và đặt thành "BWsize".
- Tìm số hàng trong mảng của hình ảnh, đặt thành "ysize".
- Tìm số cột trong mảng của hình ảnh, đặt thành "xsize".
- Tạo mảng "largeTraceMat", ma trận "ysize" theo "xsize" gồm các số không.
- Tìm chỉ số tương đương từ các giá trị được chỉ định tương ứng với vị trí các giá trị x và giá trị y lớn nhất củaTrace, lưu trữ trong vectơ "lindex".
- Trong ma trận các số không, "largeTraceMat", hãy chuyển các phần tử tại các chỉ mục tương ứng với các giá trị chỉ mục được lưu trữ dưới dạng các phần tử trong "lindex" thành các phần tử.
Do đó, mảng logic "LargeTraceMat" có vùng giới hạn lớn nhất của mặt cắt quét não đã cho được vẽ như những mảng có phông nền là các số không
Bước 6: Phát triển thuật toán ràng buộc: Làm việc với điểm trung tâm
Tiếp theo, chúng ta phải kiểm tra để xem liệu mặt cắt ngang có nhiều hơn một vùng (vùng lớn nhất) hay không. Bằng cách kiểm tra sự liên kết của trung tâm của khu vực lớn nhất, chúng ta có thể xem liệu có một vùng tiếp giáp, sẽ mang lại một trung tâm hơn hay khả năng có nhiều vùng.
- Sử dụng "regionProps" để tìm thông tin về các trọng tâm hiện diện, đặt bằng mảng cấu trúc "tempStruct"
- Mảng biểu mẫu "centroid" với dữ liệu từ trường "centroid" được nối theo chiều dọc
- Lấy các giá trị cột thứ hai của "centroid" (tọa độ kích thước ngang)
- Chạy bộ lọc để kiểm tra sự căn chỉnh của tâm với tâm ngang
Bước 7: Phát triển thuật toán giới hạn: Khi một Centroid không được căn giữa
Trong trường hợp tâm của vùng vết lớn nhất không được căn giữa, chúng ta thực hiện các bước sau. Như chúng tôi đã quan sát trong các lần quét MRI, xu hướng là các bán cầu não được khắc họa theo mặt cắt ngang khi không liền nhau, vì vậy bây giờ chúng tôi tiếp tục vẽ dấu vết lớn thứ hai cùng với dấu vết lớn nhất trong "LargeTraceMat"
- Đặt ma trận đã theo dõi thành một biến mới "b2"
- Khởi tạo ma trận trống "b2", với một tập hợp được lập chỉ mục bởi "loc"
- Tạo một điều kiện, cho khi một trung tâm không được căn giữa (tức là một lớp nhiều vùng)
- Đặt một kích thước theo dõi mới sẽ được tìm thấy cho mỗi hàng (traceSize2)
- Đặt "loc2" để tìm các chỉ số có giới hạn
- Cho các ô được chỉ định bởi "loc2" trong "b2" bằng "largeTrace2"
- Chuyển đổi các chỉ số thành chỉ số, đặt thành "lindex"
- Thay đổi các phần tử tương ứng với "lindex" trong "largeTraceMat" thành 1
- Khởi tạo ma trận trống "b2", với một tập hợp được lập chỉ mục bởi "loc2"
Bước 8: Phát triển thuật toán ranh giới: Sự giao thoa của các lỗ
Khi xử lý các lỗ hổng, các giá trị được lưu trữ trong "b2" sẽ theo dõi các cấu trúc khác với dấu vết lớn nhất và vẽ các cấu trúc này vào một dạng "LargeTraceMat" đã được lấp đầy sẽ tiết lộ nơi có các lỗ hổng trong vùng não.
- Tạo mảng "fillMat", là một mảng được điền dưới dạng "largeTraceMat"
- Tạo mảng "can thiệp", một mảng "ysize" theo "xsize" gồm các số không
- Tạo mảng "can thiệp", để lưu trữ các giá trị từ "b2", được nối theo chiều dọc
- Tạo mảng "lindex" để lưu trữ các chỉ số tương ứng với "can thiệp"
- Đối với các chỉ số trong "can thiệp" tương ứng với "lindex", hãy đặt giá trị thành 1, tạo một vùng giới hạn khác
Bước 9: Phát triển thuật toán ranh giới: Xác định vị trí lỗ, hoàn thiện các đường viền não và các đường viền lỗ
- Đặt mảng "tempMat" bằng "interferon" cộng với "fillMat", do đó cộng từng giá trị trong ma trận với nhau
- Đặt mảng "lỗ hổng" bằng với các chỉ số trong đó "can thiệp vào" và "lấp đầy" cả hai đều bằng một
- Thiết lập "holeMat" dưới dạng ma trận không của các kích thước "ysize" x "xsize"
- Đặt các chỉ số trong "lỗMat" bằng "lỗLoc" làm chỉ số
- Đặt "brain" thành "largeTraceMat"
- Đặt "lỗ" thành "lỗMat"
Với việc tìm ra giá trị của các ma trận được thêm vào bằng 2, các vị trí lỗ được bảo vệ dễ dàng và được vẽ trên một ma trận trống.
Bước 10: Ghi dữ liệu: Chức năng PatientFiles.m
Giống như thiết lập của chức năng cuối cùng, hãy nhấp vào nút ở góc trên bên trái của cửa sổ có nội dung "Mới" với dấu cộng màu vàng đậm và chọn tùy chọn "chức năng", để mở trong cửa sổ trình chỉnh sửa một khoảng trống giống như trong hình thứ ba. Trong dòng đầu tiên, hãy xóa ma trận đầu ra và thay thế chỉ bằng "đầu ra", thay thế "unsitled2" bằng "tệp bệnh nhân", xóa tất cả các đối số đầu vào và thay vào đó theo định dạng được chỉ định trong hình thứ tư của dòng mã. Dòng đầu tiên của hàm này phải khớp với định dạng của hình ảnh.
Bước 11: Ghi dữ liệu vào tệp
Để thiết lập tệp nhật ký dữ liệu được tìm thấy bởi chức năng chính (chưa được mô tả), chúng ta phải làm theo các bước sau (theo quy định của từng dòng mã).
- Kiểm tra xem đầu vào cho tên bệnh nhân có phải là một chuỗi hay không.
- Nếu nó không phải là một chuỗi, hiển thị rằng đầu vào tên bệnh nhân phải là một chuỗi.
- Kết thúc câu lệnh if (ngăn lỗi).
- Thiết lập một câu lệnh chuỗi "DateandTime" sẽ đưa ra định dạng sau: giờ: phút - tháng / ngày / năm.
- Đặt biến fileName thành như sau: BNName.m.
Bây giờ đến phần tiếp theo của hàm: Đã tồn tại một tệp có tên này chưa?
1) Giả sử tệp có tên này đã tồn tại:
- Chạy tệp để nhận các giá trị từ quá khứ được xếp hàng đợi
- Thêm dữ liệu "DateandTime" của lần lặp hiện tại dưới dạng một ô mới trong mảng ô có giá trị x (chỉ số end + 1)
- Thêm giá trị "brainVolume" hiện tại làm ô mới trong mảng ô gồm các giá trị y (chỉ mục kết thúc + 1)
- Lưu các biến hiện tại được tải trong tệp.
2) Giả sử tệp có tên này không tồn tại:
- Tạo một tệp mới với tên được lưu trữ trong biến "tên bệnh nhân"
- Thêm dữ liệu "DateandTime" hiện tại dưới dạng một ô vào mảng ô trống có giá trị x
- Thêm dữ liệu "brainVolume" hiện tại dưới dạng một ô vào mảng ô trống gồm các giá trị y
- Lưu các biến hiện tại được tải trong tệp.
Bước 12: Ghi lại dữ liệu: Hiển thị một lô khối lượng não theo thời gian
- Chuyển đổi mảng giá trị x (xVals) thành mảng phân loại (xValsCategorical), để cho phép vẽ biểu đồ
- Tạo cửa sổ hình 5
- Vẽ đồ thị các điểm được chỉ định bởi "xValsCategorical" và "yVals" (chứa khối lượng não), sử dụng các vòng tròn rỗng để biểu thị các điểm và được nối với nhau bằng các đường đứt nét
- Đặt tiêu đề cho cốt truyện là: Dữ liệu khối lượng não của BNName
- Dán nhãn cho trục x như trong hình
- Dán nhãn cho trục y như trong hình
- Cho hình 5 bằng đầu ra
Từ đó, hàm tên bệnh nhân đang được gọi sẽ mang lại một tệp với dữ liệu đã chỉnh sửa theo dõi khối lượng não theo thời gian và một biểu đồ hiển thị xu hướng.
Bước 13: Đóng khoảng trống trong các lô phụ: Subplotclose.m
Chức năng này, được điều chỉnh từ mã từ https://www.briandalessandro.com, có chức năng thu hẹp khoảng cách giữa các ô phụ của mã chính, khi các hình hiển thị hình ảnh MRI và các lớp não được tạo ra. Hàm subplot được sử dụng trong subplotclose.m điều chỉnh vị trí của các subplot đã cho để vừa khít với nhau theo khía cạnh của kích thước dài hơn. Ví dụ: nếu mã dự định ma trận 7 x 3, các hàng sẽ vừa khít khi kích thước hàng dài hơn. Nếu mã dự định là ma trận 3 x 7, các cột sẽ vừa khít, với khoảng trống trong các hàng, như được hiển thị trong các hình của mã chính của chúng tôi.
Bước 14: Mã chính: Xóa tất cả và nhắc đầu vào
Để bắt đầu mã chính, hãy nhấp vào cùng một nút có nội dung "Mới" ở góc trên bên trái của cửa sổ và chọn "Tập lệnh" thay vì "Chức năng" từ các phần trước đó. Nhập mã như được hiển thị trong hình trong cửa sổ trình chỉnh sửa. Các dòng mã thực hiện các tác vụ sau theo thứ tự:
- Đóng tất cả các tệp đang mở ngoại trừ 0, 1 và 2.
- Đóng tất cả các cửa sổ hình.
- Xóa tất cả các biến trong không gian làm việc.
- Xóa Cửa sổ Lệnh.
- Hiển thị trong Cửa sổ Lệnh: Vui lòng nhập các kích thước sau để quét MRI:
- Trên một dòng mới trong Cửa sổ Lệnh, hãy hỏi: Độ dài của một lần quét tính bằng milimét:. Phản hồi do người dùng đưa vào sẽ được đặt thành biến "lengthMM".
- Trên một dòng mới, hãy hỏi: Khoảng cách giữa các lần quét MRI tính bằng milimét:. Phản hồi do người dùng đưa vào sẽ được đặt thành biến "ZStacks".
Bước 15: Mã chính: Xử lý hàng loạt hình ảnh
Trong phần này, mã sẽ tải lên các hình ảnh (bao gồm các bản quét MRI của các mặt cắt của não) và lưu trữ tên của mỗi tệp hình ảnh trong biến "Cơ sở" và hiển thị mỗi lần quét MRI. Vui lòng làm theo mã trong hình để thực hiện như sau:
- Tạo mảng cấu trúc "BrainImages" chứa thông tin về tất cả các tệp trong thư mục hiện tại phù hợp với định dạng tên của MRI _ (). Png
- Đặt biến "NumberofImages" bằng số phần tử trong mảng cấu trúc "BrainImages"
- Mở cửa sổ hình 1
- Đặt vòng lặp for để chuyển qua số lượng hình ảnh được đếm trong tệp
- Đối với mỗi vòng lặp, "Hình ảnh hiện tại" là tên tương ứng của mỗi tệp MRI_i.png, với số lần lặp là 'i'
- Tạo ô con 3 x 7 để hiển thị 19 hình ảnh sẽ được tải bằng "imshow"
- Hiển thị từng hình ảnh dưới dạng một phần tử khác trong cửa sổ biểu đồ con
- Đặt tiêu đề cho mỗi phần tử subplot là Level_, trong đó khoảng trống là số lần lặp của vòng lặp for.
- Kết thúc vòng lặp for (tránh lỗi)
Điều này sẽ hiển thị trong cửa sổ hình 1 tất cả các lần quét MRI ở dạng thô trong cấu hình 3 x 7 không có khoảng trống trong hướng x.
Bước 16: Mã chính: Padding
Với phần đệm, chúng tôi tránh được vấn đề có sự khác biệt nhỏ về kích thước hình ảnh có thể gây ra lỗi do kích thước không khớp trong trường hợp một hình lớn hơn một chút so với hình khác.
- Mở cửa sổ hình 2
- Tải ma trận hình ảnh từ MRI_1-p.webp" />
- Tìm kích thước của ma trận hình ảnh và đặt thành "OriginalXPixels" (cho số hàng) và "OriginalYPixels" (cho số cột)
- Thiết lập ma trận "BrainMat" để bao gồm tất cả các số không có thêm 20 hàng và 20 cột nữa cho mỗi mặt phẳng và tổng số 19 mặt cắt ngang, một mặt cắt ngang.
- Thiết lập "HolesMat" để bao gồm cùng một mảng số không ba chiều để nhập tọa độ lỗ sau đó
- Tạo "zeroMat" bằng kích thước của pad cộng với hai mươi hàng và hai mươi cột, một mảng số không hai chiều.
Bước 17: Quy tắc chính: Xác định ranh giới
- Đặt vòng lặp for để xem qua dữ liệu từ mỗi hình ảnh được tải trước đó
- Theo cùng một cách xử lý hàng loạt trước đó, "CurrentImage" tải lên các tệp bằng "MRI_i.png", trong đó tôi là số lần lặp
- Chạy từng hình ảnh thông qua chức năng xử lý "LevelCurveTracings2.m" mà bạn đã thực hiện trước đó
- Tìm kích thước của đầu ra "Brain", đặt số hàng thành "Hiện tại" và số cột thành "Cột hiện tại"
- Đặt "CurrentMat" thành ma trận các số không với các kích thước được chỉ định bởi "Currentrow" và "Currentcolumns"
- Căn giữa dữ liệu từ "Brain" trong "CurrentMat", với lề 10 hàng ở tất cả các bên
- Tạo một biểu đồ con có kích thước 3 x 7, để hiển thị ranh giới của hình ảnh
- Đặt tiêu đề cho từng phần tử của lô phụ trong cửa sổ hình
- Tạo ma trận ba chiều "BrainMat" bao gồm mỗi lớp giới hạn "CurrentMat"
- Kết thúc vòng lặp for (đối với lỗi báo trước)
Phần phụ sau đây điền vào các lỗ còn lại ở trên cùng và dưới cùng của hình dạng ba chiều được đề xuất
- Đặt "LevelCurve1" bằng lớp đầu tiên của "BrainMat" (dưới cùng của chất rắn)
- Đặt "LevelCurveEnd" bằng lớp cuối cùng của "BrainMat" (trên cùng của khối)
- Ghi đè "LevelCurve1" bằng một lớp được lấp đầy
- Ghi đè "LevelCurveEnd" bằng một lớp được lấp đầy
- Đặt lớp đã điền làm lớp dưới cùng của "BrainMat"
- Đặt lớp đã điền làm lớp trên cùng của "BrainMat"
Bước 18: Mã chính: Xác định thứ nguyên Z thích hợp
Ba dòng đầu tiên bao gồm thiết lập một mảng trống "z" và thực hiện các thao tác chuyển đổi đơn giản (chia pixel theo độ dài) để có được số đọc phù hợp tính bằng mm ^ 3
- Tạo vòng lặp for để chuyển động qua từng lớp
- Tìm số lượng cái trong một lớp nhất định
- Chuyển đổi các tọa độ z cho các tọa độ thành các giá trị được chia tỷ lệ theo tỷ lệ thích hợp, được đặt thành "tempz", một vectơ cột
- Thêm giá trị z cho đường cong mức vào vectơ z
Với tọa độ z này được điều chỉnh hợp lý.
Bước 19: Mã chính: Xác định tọa độ X và Y
Bây giờ để xác định vị trí x và y của mỗi điểm trong ranh giới.
- Khởi tạo "xBrain" dưới dạng một mảng trống
- Khởi tạo "yBrain" dưới dạng một mảng trống
- Thiết lập vòng lặp for để lặp lại từng hình ảnh được tải
- Biên dịch ma trận hai cột để lưu trữ tọa độ phẳng của mỗi điểm trong giới hạn, được biểu thị bằng vectơ cột "RowBrain" và "ColumnBrain"
- Nối "xBrain" với tọa độ "RowBrain" hiện được tìm thấy
- Nối "yBrain" với tọa độ "ColumnBrain" hiện được tìm thấy
- Kết thúc vòng lặp for (để tránh lỗi)
Bước 20: Mã chính: Vẽ cấu trúc ba chiều, tìm khối lượng và ghi dữ liệu
Sử dụng hàm alphaShape, chúng ta sẽ tạo ra một cấu trúc ba chiều mà từ đó chúng ta có thể tính thể tích của bộ não.
- Sử dụng hàm alphaShape, cắm các vectơ "xBrain", "yBrain" và "z" cho các tọa độ x, y và z và đặt bằng "BrainPolyhedron"
- Mở cửa sổ hình 3
- Vẽ hình dạng alpha được tính toán "BrainPolyhedron", hiển thị trong cửa sổ hình
- Tính thể tích của hình dạng alpha, sử dụng hàm "volume" hoạt động đối với hình dạng alpha
- Chuyển đổi âm lượng thành mm ^ 3
- In thể tích của vật rắn trong Cửa sổ lệnh
- Nhắc đặt tên bệnh nhân làm đầu vào
- Nhận ngày và giờ hiện tại với đồng hồ và đặt thành "DateandTime"
- Gọi hàm "BNFiles" để ghi lại và vẽ biểu đồ dữ liệu được tính toán
Từ đây, hình ảnh thứ hai và thứ ba sẽ hiển thị các số liệu bật lên và hình ảnh thứ tư sẽ được hiển thị trong Cửa sổ lệnh.
Đề xuất:
Hiệu ứng thao tác thời gian với kính hiển vi sai lệch (chi tiết kỹ lưỡng): 10 bước
Hiệu ứng điều khiển thời gian với kính Strobos sai lệch (Chi tiết kỹ lưỡng): Hôm nay chúng ta sẽ học cách chế tạo một kính hiển vi vi sai có thể làm cho các vật thể chuyển động định kỳ xuất hiện tĩnh đối với mắt. Vẫn đủ để ghi chú những chi tiết nhỏ trong vật thể quay mà về cơ bản là không thể nhìn thấy được. Nó cũng có thể hiển thị mỏ
Theo dõi & theo dõi các cửa hàng nhỏ: 9 bước (có hình ảnh)
Theo dõi & theo dõi cho các cửa hàng nhỏ: Đây là một hệ thống dành cho các cửa hàng nhỏ được cho là gắn vào xe đạp điện hoặc xe tay ga điện tử để giao hàng trong phạm vi ngắn, ví dụ như một tiệm bánh muốn giao bánh ngọt. Theo dõi và theo dõi nghĩa là gì? Theo dõi và theo dõi là một hệ thống được sử dụng bởi ca
Bộ dụng cụ theo dõi xe ô tô tự làm bằng rô bốt thông minh Theo dõi ô tô cảm quang: 7 bước
Tự làm bộ dụng cụ theo dõi rô bốt thông minh theo dõi ô tô Theo dõi ô tô cảm quang: Thiết kế bởi SINONING ROBOT Bạn có thể mua từ rô bốt theo dõi ô tô ChipLM393 so sánh hai điện trở quang, khi có một đèn LED cảm quang một bên TRẮNG thì bên của động cơ sẽ dừng ngay lập tức, bên kia của động cơ quay lên, để
Lập phương thời gian - Tiện ích theo dõi thời gian Arduino: 6 bước
Time Cube - Arduino Time Tracking Gadget: Tôi muốn đề xuất cho bạn một dự án arduino đơn giản nhưng thực sự hữu ích để theo dõi các sự kiện thời gian bằng cách lật một số tiện ích khối thông minh. Lật nó sang " Làm việc " > " Tìm hiểu " > " Việc nhà " > " Phần còn lại " bên và nó sẽ tính
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 - Theo dõi nhiệt độ độ ẩm & chỉ số nhiệt trên M5stick-C với DHT11: 6 bước
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 | Theo dõi nhiệt độ độ ẩm và chỉ số nhiệt trên M5stick-C Với DHT11: Xin chào các bạn, trong phần hướng dẫn này, chúng ta sẽ học cách giao tiếp cảm biến nhiệt độ DHT11 với m5stick-C (một bảng phát triển của m5stack) và hiển thị nó trên màn hình của m5stick-C. Vì vậy, trong hướng dẫn này, chúng ta sẽ đọc nhiệt độ, độ ẩm & nhiệt tôi