جدول المحتويات:
- الخطوة 1: حدد الصورة وقم بتكوينها للتحليل
- الخطوة 2: العتبة وواجهة المستخدم الرسومية
- الخطوة 3: رسم ملامح وتوزيع الخلايا
- الخطوة 4: تحويل صورة الخلية
- الخطوة 5: عد الخلايا وحساب التقاء الخلايا
- الخطوة 6: استدارة الخلايا
فيديو: مشروع صندوق الرمل BME 60B: 6 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:37
يهدف مشروع Sandbox الخاص بنا إلى مساعدة الباحثين في المجال البيولوجي على تحليل عينات الخلايا ومعرفة ظروف خلاياهم. بعد أن يقوم المستخدم بإدخال صورة لعينة الخلية الخاصة به ، يقوم الكود الخاص بنا بمعالجة الصورة لتجهيزها لعد الخلايا عن طريق تحويل الصورة إلى التدرج الرمادي والثنائي. يستخدم الكود عتبة لإزالة المعلومات الزائدة غير المتعلقة بالخلايا الفعلية من أجل العثور بدقة على كتل الخلايا. بعد حساب عدد الخلايا في الصورة ، يعطي الكود الخاص بنا حجم البكسل للصورة ثم يبحث عن توزيع مساحة الخلية عن طريق رسم عدد الخلايا مقابل مساحة الخلايا من أجل منح المستخدم التقاء ، وهو النسبة المئوية لسطح الطبق المزروع المغطى بالخلايا موضع الاهتمام. بناءً على التقاء ، يمكن للباحث تحديد ما إذا كان يجب مرور الخلايا أم لا ؛ يشير مرور الخلايا إلى توسيع الحياة أو عدد الخلايا أو الكائنات الحية الدقيقة عن طريق نقل بعض المستنبت إلى وسط نمو جديد ، ويكون مفيدًا عندما تنمو الخلايا بشكل كبير جدًا أو ينفد الطعام. بعد تشغيل الكود ومعالجة الصورة ، يمكن للمستخدم أن يقرر ما إذا كان يقبل النتائج أو يرفضها ، والمضي قدمًا في ضبط الحد الأدنى لاسترداد البيانات بشكل أفضل إذا لزم الأمر.
الخطوة 1: حدد الصورة وقم بتكوينها للتحليل
الخطوة الأولى في الكود الخاص بنا هي تحديد الصورة المناسبة وتهيئتها للتحليل في Matlab. يمكننا تحديد الصورة باستخدام وظيفة uigetfile التي تتيح لنا الحصول على أي ملف وإدخاله في البرنامج. ثم ، باستخدام imread ، نقرأ الصورة ونقوم بتكوينها للتحليل في Matlab. ثم يتم عرض الصورة التي تم تحديدها في مخطط فرعي.
الخطوة 2: العتبة وواجهة المستخدم الرسومية
في بداية الكود يتم اختيار صورة باستخدام “uigetfile” ثم تعريف تلك الصورة بمتغير. سيتم بعد ذلك استخدام المتغير لتحديد الكود عند تشغيل تحليل مختلف. يتم إنشاء حبكة فرعية 2x2 في الشكل. في الموضع 1 ، سيتم عرض الصورة الأصلية. القسم التالي من الكود هو المكان الذي تحدث فيه تعديلات العتبات. في البداية ، يتم استخدام القيمة الافتراضية لعتبة 0.6 ويتم عرضها في الموضع 2 من الحبكة الفرعية. ثم يتم استخدام عبارة if لتحديد ما إذا كان المستخدم يريد الاحتفاظ بالعتبة أو تعديلها. يمكن للمستخدم ضبط العتبة باستخدام واجهة المستخدم الرسومية التي تتضمن الصورة في ظروف عتبة مختلفة ، وشريط التمرير ، وزر حفظ. بعد تعيين العتبة ، سينقر المستخدم على زر حفظ لحفظ الصورة وسيتم تخزينها في ملفات MATLAB الخاصة بالمستخدمين بصيغة-p.webp
الخطوة 3: رسم ملامح وتوزيع الخلايا
الجزء التالي من الكود يرسم الخطوط العريضة. هناك حلقة يتم فيها إحاطة الخلايا بمحيط أحمر ، ويتم تحديد تلك الخلايا الموجودة أعلى خلية أخرى باللون الأخضر. ثم يتم عرض الصورة الموضحة في الموضع 3 بخط مسافة تفاعلي. سيحدد هذا الخط عدد البكسل في الخط الذي تم ضبطه بواسطة المستخدم لمحول بكسل إلى مليمتر. يتم بعد ذلك ضرب عامل المسافة في المنطقة التي تحددها دعائم المنطقة ويتم الآن التعبير عن المنطقة بالمليمترات المربعة. ثم يتم رسم البيانات باستخدام الرسم البياني لمعرفة توزيع الخلايا حسب مساحتها. سيتم بعد ذلك عرض هذا الرسم البياني في الموضع 4.
الخطوة 4: تحويل صورة الخلية
في هذه الخطوة ، أخذنا الصورة ذات التدرج الرمادي وقمنا بتبديلها وترشيحها وعكسها. يؤدي إجراء هذه الوظائف على الصورة إلى إزالة وحدات البكسل الصاخبة التي يمكن الخلط بينها وبين الخلايا وجعل الصورة أكثر نعومة ونعومة حول حواف الخلية. تم إجراء ذلك لاستخراج الخلايا الموجودة في الصورة على أنها "نقاط" مميزة تختلف في شدتها عن الخلفية. كانت "النقط" عبارة عن صور بيضاء عالية الكثافة والخلفية سوداء. إذا تم السماح بوقت إضافي قليلاً ، فسنستخدم تحويل صورة Blob مختلفًا بدلاً من وظيفة imbinarize لنكون أكثر دقة وملاءمة لصورنا ، لكننا كنا بحاجة إلى مزيد من الوقت للبحث عن الوظيفة وتنفيذها.
الخطوة 5: عد الخلايا وحساب التقاء الخلايا
في هذه الخطوة من الكود ، هدفنا إلى حساب عدد الخلايا الموجودة في الصورة. استخدمنا في المقام الأول دعائم المنطقة الوظيفية لحساب مناطق النقط وإذا تم حساب المنطقة لتكون في حدودنا المرغوبة ، فسيتم رسمها على مخطط فرعي. تم تعيين الحدود لإزالة وحدات البكسل الصاخبة الصغيرة أو الشدة الكبيرة التي لم تكن خلايا. يقوم عداد الخلية بعد ذلك بحساب النقط الوسطى التي تم رسمها بعد ذلك وإضافتها إلى العداد في حلقة for. بمجرد تحديد مناطق الخلايا ، تمكنا من حساب التقاء. كانت الأهمية الرئيسية لهذه الخطوة في الكود هي العثور على التقاء الخلايا وكان هذا محوريًا لهدفنا النهائي من الكود. لقد فعلنا ذلك عن طريق الحساب عن طريق تلخيص وحدات البكسل (مجموع (allAreas)) في كل نقطة ثم تقسيمها على إجمالي قيمة البكسل للصورة (numel (img)). ستعطينا هذه النسبة التقاء وإذا تم تحديدها لتكون أكبر من 80٪ فقد حان الوقت لتمرير الخلايا من قبل الباحث. كنا نهدف إلى أن نكون دقيقين ودقيقين قدر الإمكان ولكن مع الوقت المحدود ، لم يحدث خطأ. إذا سمح الوقت ، فسننظر في طرق لجعل حساب النقاط أكثر دقة مثل المزيد من تقنيات التصفية و / أو Hough Transform حيث لم يتم إجراء بحث كافٍ حتى الآن لتجربة تقنية التصفية هذه
الخطوة 6: استدارة الخلايا
قبل أن نكون قادرين على قياس استدارة النقطة في صورة ما ، نحتاج إلى التحويل من RGB إلى تدرج رمادي ، وثنائي ، وعكس ، وتصفية الصورة. تستخدم تقنية التصفية وظيفة bwareaopen ، التي تقوم بتصفية الصورة محل الاهتمام وتزيل أي مواصفات أو وحدات بكسل صغيرة جدًا ولا تمثل حجم الخلية. يتم إنشاء عنصر هيكلي على شكل قرص وجوار 2 ويتم استخدامه لملء أي فجوات في الخلفية أو داخل الخلايا. ثم نستخدم الدالة bwboundaries التي تتعقب النقط وتخزنها في مصفوفة. ثم نقوم بتسمية الصورة باستخدام ألوان مختلفة بحيث تصبح أكثر وضوحًا. بعد ذلك ، باستخدام حلقة for يتم تشغيلها وفقًا لعدد الكائنات والثقوب الموجودة في الصورة ، فإنها تضع حدًا حول النقاط المتوافقة مع هذه المجموعة. بمجرد أن تنتهي هذه الحلقة ، تبدأ حلقة أخرى ، مرة أخرى وفقًا لعدد الكائنات والثقوب الموجودة في الصورة. هذه المرة نستخدم الدالة regionprops التي تجمع خصائص معينة مثل المنطقة من المصفوفة وتخزن المعلومات التي تحتوي على عدد الكائنات والثقوب. باستخدام هذه المعلومات ، نحسب مساحة ومحيط هذه الكائنات باستخدام شكل النقطه الوسطى. يتم تعيين عتبة لمقارنة النتائج بمجرد أن نحسب الوحدة المترية لكائن دائري ونرسم هذا القياس كنص بجانب النقط الوسطى المحسوبة. سيعرض الكود النهائي استدارة الخلايا المختلفة الموجودة في الصورة وستكون أي قيم قريبة من القيمة الأولى أكثر تقريبًا من غيرها. تشير القيمة 1 إلى أن الخلية مستديرة تمامًا وفي حالة جيدة لتمريرها.
موصى به:
قم بتدوير ساعة الرمل كل دقيقة باستخدام محرك سيرفو - اردوينو: 8 خطوات
قم بتدوير ساعة الرمل كل دقيقة باستخدام محرك سيرفو - Arduino: في هذا البرنامج التعليمي سوف نتعلم كيفية تدوير ساعة رملية صغيرة (دقيقة واحدة) كل 60 ثانية باستخدام محرك مؤازر و Visuino ، شاهد فيديو توضيحي
صندوق الدوبامين - مشروع مشابه لمايك بويد - ليس مايك بويد: 9 خطوات
صندوق الدوبامين | مشروع مشابه لمايك بويد - لا أكون مايك بويد: أريد واحدًا! احتاج واحد! أنا ماطل! حسنًا ، أريد علبة دوبامين … بدون الحاجة إلى البرمجة. لا أصوات ، فقط الإرادة النقية
مشروع "Ready Maker" - التحكم في مشروع Lego Power Functions: 9 خطوات
"Ready Maker" - التحكم في مشروع "Lego Power Functions": تعلم كيفية التحكم في وظائف Lego & quot؛ Power & quot؛ المكونات مع لوحة Arduino وبناء مشروعك في & quot؛ Ready Maker & quot؛ محرر (لا يوجد كود مطلوب) للتحكم عن بعد في نموذجك
صندوق باربي: علبة مموهة / صندوق بوم لمشغل MP3 لديك: 4 خطوات (بالصور)
صندوق باربي: علبة مموهة / صندوق بوم لمشغل MP3 الخاص بك: هذه حقيبة حمل واقية مبطنة لمشغل mp3 الخاص بك والتي تقوم أيضًا بتحويل مقبس سماعة الرأس إلى ربع بوصة ، ويمكن أن تكون بمثابة صندوق ذراع عند قلب المفتاح ، و يتنكر في مشغل mp3 الخاص بك في شكل مشغل شرائط في أوائل التسعينيات أو ما شابه ذلك من السرقة المنخفضة i
بناء صندوق بطارية صندوق السيجار لأجهزة الراديو الأنبوبية: 4 خطوات
قم ببناء صندوق بطارية Cigar Box Battery Box لأجهزة الراديو الأنبوبية: إذا كنت تعمل على البناء واللعب باستخدام أجهزة الراديو الأنبوبية مثلي ، فمن المحتمل أن تكون لديك مشكلة مماثلة كما أفعل في تشغيلها. تم تصميم معظم الدوائر القديمة لتعمل على بطاريات b عالية الجهد والتي لم تعد متوفرة. وبالتالي