สารบัญ:

โครงการแซนด์บ็อกซ์ BME 60B: 6 ขั้นตอน
โครงการแซนด์บ็อกซ์ BME 60B: 6 ขั้นตอน

วีดีโอ: โครงการแซนด์บ็อกซ์ BME 60B: 6 ขั้นตอน

วีดีโอ: โครงการแซนด์บ็อกซ์ BME 60B: 6 ขั้นตอน
วีดีโอ: ปลั๊กอิน Waves คู่มือฉบับสมบูรณ์ 2024, กรกฎาคม
Anonim
โครงการแซนด์บ็อกซ์ BME 60B
โครงการแซนด์บ็อกซ์ BME 60B

โครงการแซนด์บ็อกซ์ของเรามีเป้าหมายเพื่อช่วยนักวิจัยในด้านชีววิทยาวิเคราะห์ตัวอย่างเซลล์และค้นหาสภาวะของเซลล์ หลังจากที่ผู้ใช้ป้อนรูปภาพของตัวอย่างเซลล์แล้ว โค้ดของเราจะประมวลผลรูปภาพเพื่อให้พร้อมสำหรับการนับเซลล์โดยแปลงรูปภาพเป็นระดับสีเทาและไบนารี โค้ดนี้ใช้การจำกัดเกณฑ์เพื่อลบข้อมูลส่วนเกินที่ไม่เกี่ยวข้องกับเซลล์จริง เพื่อค้นหามวลเซลล์อย่างแม่นยำ หลังจากนับจำนวนเซลล์ในภาพแล้ว โค้ดของเราจะกำหนดขนาดพิกเซลของรูปภาพ แล้วหาการกระจายของพื้นที่เซลล์โดยพล็อตจำนวนเซลล์เทียบกับพื้นที่ของเซลล์เพื่อให้ผู้ใช้เกิดการบรรจบกัน ซึ่งก็คือ เปอร์เซ็นต์ของพื้นผิวของจานเพาะเลี้ยงที่เซลล์ที่สนใจปิดไว้ จากการบรรจบกัน ผู้วิจัยสามารถระบุได้ว่าควรส่งผ่านเซลล์หรือไม่ การผ่านของเซลล์หมายถึงการขยายอายุหรือจำนวนเซลล์หรือจุลินทรีย์โดยการถ่ายโอนวัฒนธรรมบางส่วนไปยังอาหารเลี้ยงเชื้อที่สดใหม่ และมีประโยชน์เมื่อเซลล์มีขนาดใหญ่เกินไปหรืออาหารหมด หลังจากรันโค้ดและประมวลผลรูปภาพแล้ว ผู้ใช้สามารถตัดสินใจว่าจะยอมรับหรือปฏิเสธผลลัพธ์ และดำเนินการปรับเกณฑ์เพื่อให้ดึงข้อมูลได้ดีขึ้นหากจำเป็น

ขั้นตอนที่ 1: เลือกและกำหนดค่ารูปภาพสำหรับการวิเคราะห์

เลือกและกำหนดค่ารูปภาพสำหรับการวิเคราะห์
เลือกและกำหนดค่ารูปภาพสำหรับการวิเคราะห์

ขั้นตอนแรกในโค้ดของเราคือการเลือกรูปภาพที่เหมาะสมและกำหนดค่าสำหรับการวิเคราะห์ใน Matlab เราสามารถเลือกรูปภาพโดยใช้ฟังก์ชัน uigetfile ซึ่งช่วยให้เราหยิบไฟล์ใด ๆ และแทรกลงในโปรแกรมได้ จากนั้นใช้ imread เราอ่านรูปภาพและกำหนดค่าสำหรับการวิเคราะห์ใน Matlab รูปภาพที่เลือกจะแสดงในโครงเรื่องย่อย

ขั้นตอนที่ 2: เกณฑ์และ GUI

เกณฑ์และ GUI
เกณฑ์และ GUI
เกณฑ์และ GUI
เกณฑ์และ GUI

ในตอนต้นของโค้ด รูปภาพจะถูกเลือกโดยใช้ "uigetfile" แล้วกำหนดรูปภาพนั้นด้วยตัวแปร จากนั้นตัวแปรจะถูกใช้เพื่อระบุรหัสเมื่อเรียกใช้การวิเคราะห์ที่แตกต่างกัน แผนผังย่อย 2x2 ถูกสร้างขึ้นในรูป ในตำแหน่งที่ 1 ภาพต้นฉบับจะปรากฏขึ้น ส่วนถัดไปของโค้ดคือจุดที่มีการปรับเกณฑ์ เริ่มแรก ค่าเริ่มต้นของขีดจำกัด 0.6 ถูกใช้และแสดงในตำแหน่งที่ 2 ของแผนย่อย คำสั่ง if จะใช้เพื่อกำหนดว่าผู้ใช้ต้องการรักษาขีดจำกัดหรือปรับค่านั้น ผู้ใช้กว่าสามารถปรับเกณฑ์ได้โดยใช้ GUI ซึ่งรวมถึงภาพที่เงื่อนไขเกณฑ์ที่แตกต่างกัน ตัวเลื่อน และปุ่มบันทึก หลังจากตั้งค่าเกณฑ์แล้ว ผู้ใช้จะคลิกปุ่มบันทึกเพื่อบันทึกภาพและจะถูกเก็บไว้ในไฟล์ MATLAB ของผู้ใช้ในรูปแบบ-p.webp

ขั้นตอนที่ 3: พล็อตโครงร่างและการกระจายเซลล์

พล็อตรูปร่างและการกระจายเซลล์
พล็อตรูปร่างและการกระจายเซลล์
พล็อตรูปร่างและการกระจายเซลล์
พล็อตรูปร่างและการกระจายเซลล์

ส่วนถัดไปของโค้ดจะพล็อตโครงร่าง มีวงรอบที่เซลล์ถูกล้อมรอบด้วยเส้นรอบวงสีแดง และเซลล์เหล่านั้นที่อยู่ด้านบนของเซลล์อื่นจะมีโครงร่างเป็นสีเขียว รูปภาพที่ร่างไว้จะแสดงในตำแหน่งที่ 3 ด้วยเส้นระยะห่างแบบโต้ตอบ บรรทัดนี้จะกำหนดจำนวนพิกเซลในบรรทัดที่ปรับโดยผู้ใช้สำหรับตัวแปลงพิกเซลเป็นมิลลิเมตร จากนั้นปัจจัยระยะทางจะคูณพื้นที่ที่กำหนดโดยอุปกรณ์ประกอบฉากและพื้นที่ในขณะนี้แสดงเป็นมิลลิเมตรกำลังสอง ข้อมูลจะถูกพล็อตโดยใช้ฮิสโตแกรมเพื่อดูการกระจายของเซลล์ตามพื้นที่ ฮิสโตแกรมนี้จะแสดงในตำแหน่งที่ 4

ขั้นตอนที่ 4: แปลงภาพเซลล์

แปลงภาพเซลล์
แปลงภาพเซลล์

ในขั้นตอนนี้ เรานำภาพระดับสีเทามาทำเป็นไบนารี่ กรอง และกลับด้าน การใช้งานฟังก์ชันเหล่านี้กับภาพจะลบพิกเซลที่มีสัญญาณรบกวนซึ่งอาจเข้าใจผิดว่าเป็นเซลล์ และทำให้ภาพรอบๆ ขอบเซลล์ดูนุ่มนวลและนุ่มนวลขึ้น วิธีนี้ทำเพื่อแยกเซลล์ในภาพออกเป็น "ก้อน" ที่แยกแยะได้ซึ่งมีความเข้มแตกต่างจากพื้นหลัง "Blobs" เป็นภาพสีขาวที่มีความเข้มสูงและพื้นหลังเป็นสีดำ หากอนุญาตให้มีเวลามากกว่านี้ เราจะใช้การแปลงภาพ Blob แบบอื่นแทนฟังก์ชัน imbinarize เพื่อให้แม่นยำและเหมาะสมกับภาพของเรามากขึ้น แต่เราต้องการเวลามากขึ้นในการวิจัยและใช้งานฟังก์ชันนี้

ขั้นตอนที่ 5: นับเซลล์และคำนวณการบรรจบกันของเซลล์

นับเซลล์และคำนวณการบรรจบกันของเซลล์
นับเซลล์และคำนวณการบรรจบกันของเซลล์

ในโค้ดขั้นตอนนี้ เรามุ่งที่จะนับจำนวนเซลล์ที่อยู่ในรูปภาพ เราใช้ฟังก์ชัน regionprops เป็นหลักในการคำนวณพื้นที่ของ blobs และหากพื้นที่ถูกคำนวณให้อยู่ในขอบเขตที่เราต้องการ พื้นที่นั้นจะถูกพล็อตในแผนผังย่อย ขอบเขตถูกกำหนดขึ้นเพื่อลบพิกเซลที่มีสัญญาณรบกวนขนาดเล็กหรือความเข้มขนาดใหญ่ที่ไม่ใช่เซลล์ ตัวนับเซลล์จะนับเซนทรอยด์ที่ถูกพล็อตและเพิ่มลงในตัวนับในลูป for เมื่อกำหนดพื้นที่ของเซลล์แล้ว เราก็สามารถคำนวณจุดบรรจบกันได้ ความสำคัญหลักของขั้นตอนนี้ในโค้ดคือการหาจุดบรรจบกันของเซลล์ และนี่เป็นส่วนสำคัญต่อเป้าหมายสุดท้ายของเราในโค้ด เราทำสิ่งนี้โดยการคำนวณโดยการรวมพิกเซล (ผลรวม (ทั้งหมดพื้นที่ทั้งหมด)) ในแต่ละหยดแล้วหารด้วยค่าพิกเซลทั้งหมดของภาพ (ตัวเลข (img)) อัตราส่วนนี้จะทำให้เราเกิดการบรรจบกันและหากถูกกำหนดให้มากกว่า 80% ถึงเวลาที่เซลล์จะถูกส่งผ่านโดยผู้วิจัย เรามุ่งหวังที่จะแม่นยำและแม่นยำที่สุดเท่าที่จะเป็นไปได้ แต่ด้วยเวลาที่จำกัด ความแม่นยำจึงเกิดขึ้น หากเวลาเอื้ออำนวย เราจะหาวิธีที่จะทำให้การนับจำนวนหยดมีความแม่นยำมากขึ้น เช่น เทคนิคการกรองที่มากขึ้น และ/หรือ Hough Transform เนื่องจากยังไม่มีการวิจัยเพียงพอที่จะลองใช้เทคนิคการกรองนั้น

ขั้นตอนที่ 6: ความกลมของเซลล์

ความกลมของเซลล์
ความกลมของเซลล์
ความกลมของเซลล์
ความกลมของเซลล์

ก่อนที่จะสามารถวัดความกลมของ Blob ในภาพ เราจำเป็นต้องแปลงจาก RGB เป็นระดับสีเทา ไบนารี กลับด้าน และกรองภาพ เทคนิคการกรองคือการใช้ฟังก์ชัน bwareaopen ซึ่งจะกรองภาพที่สนใจและจะลบข้อกำหนดหรือพิกเซลที่เล็กเกินไปซึ่งไม่ได้แสดงถึงขนาดของเซลล์ องค์ประกอบการจัดโครงสร้างถูกสร้างขึ้นด้วยรูปร่างของดิสก์และพื้นที่ใกล้เคียง 2 และใช้เพื่อเติมช่องว่างใดๆ ในพื้นหลังหรือภายในเซลล์ จากนั้นเราใช้ฟังก์ชัน bwboundaries ซึ่งติดตาม blobs และเก็บไว้ในเมทริกซ์ จากนั้นเราจะติดป้ายกำกับรูปภาพโดยใช้สีต่างๆ เพื่อให้เห็นภาพชัดเจนขึ้น ถัดไป ใช้ for loop ที่ทำงานตามจำนวนอ็อบเจ็กต์และรูที่พบในรูปภาพ จะกำหนดขอบเขตรอบ blobs ที่สอดคล้องกับอาร์เรย์นี้ เมื่อการวนซ้ำนี้สิ้นสุดลง การวนซ้ำอื่นจะเริ่มขึ้นอีกครั้งตามจำนวนวัตถุและรูที่พบในภาพ ครั้งนี้เราใช้ฟังก์ชัน regionprops ซึ่งรวบรวมคุณสมบัติบางอย่าง เช่น พื้นที่จากอาร์เรย์ และเก็บข้อมูลที่มีจำนวนของอ็อบเจ็กต์และรู โดยใช้ข้อมูลนี้ เราคำนวณพื้นที่และปริมณฑลของวัตถุเหล่านี้โดยใช้รูปร่างเซนทรอยด์ เกณฑ์ถูกกำหนดเพื่อเปรียบเทียบผลลัพธ์เมื่อเราคำนวณหน่วยเมตริกของวัตถุทรงกลมและแปลงการวัดนี้เป็นข้อความข้างเซนทรอยด์ที่คำนวณ รหัสสุดท้ายจะแสดงความกลมของเซลล์ต่างๆ ที่พบในรูปภาพ และค่าใดๆ ที่ใกล้เคียงกับค่าที่หนึ่งจะเป็นค่าที่กลมกว่าค่าอื่นๆ ค่า 1 แสดงว่าเซลล์นั้นกลมสมบูรณ์และอยู่ในสภาพดีที่จะผ่านได้

แนะนำ: