การวัดความยาวของเส้นใย DNA จากภาพของโมเลกุลเดี่ยว


14

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

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

คุณลักษณะที่ถูกกำหนดให้เป็นพื้นที่ในภาพคอมโพสิตที่มีสีเขียวสีแดงสีเขียวขุ่นสีแดงสีเขียวหรือเท่ากัน 2 กลุ่มเชิงเส้นที่อยู่ติดกันบนสีเขียวและสีแดงที่มี colinear และโรคติดต่อ

ฉันหวังว่าการดูภาพจากทั้งสองแชนเนลแยกกันจะทำให้การระบุคุณสมบัติง่ายขึ้น

ฉันมีคำแนะนำต่อไปนี้สำหรับอัลกอริทึม:

  1. ก่อนอื่นให้ระบุส่วนสีเขียวเชิงเส้นร่วม (และกำหนดความยาวของส่วนสีเขียว)

  2. ตรวจสอบว่ามีส่วนที่ติดต่อกันและส่วนต่อกันของสีที่หันเข้าหากัน (เช่นสีเขียว -> สีแดง -> <-red <- สีเขียว) ในช่องสีแดง ถ้าใช่กำหนดความยาวส่วนสีแดงจากจุดที่ส่วนสีเขียวสิ้นสุด (เพราะจะทับซ้อนกับส่วนสีเขียว) จนถึงจุดบนส่วนสีแดงที่อยู่ใกล้กับส่วนสีแดงอื่น ๆ ของคุณลักษณะ (เช่นปลายด้านหนึ่งของส่วนสีแดงถูกตั้งค่าเป็นจุดสิ้นสุดของส่วนสีเขียวที่ทับซ้อนกัน)

ขอบคุณมาก!

พื้นหลัง :

คำถามของฉันเกี่ยวข้องกับการแยกคุณลักษณะออกจากรูปภาพ:

ป้อนคำอธิบายรูปภาพที่นี่

ภาพต้นฉบับ (tif) อยู่ที่นี่:

ภาพตัวอย่าง 1 (ดรอปบ็อกซ์)

ภาพนี้ประกอบขึ้นด้วย 3 ช่องสัญญาณ (ในรูปแบบ TIF): สีแดง, สีเขียวและสีฟ้าคราม เส้นใยสีเทอร์ควอยส์ทำเครื่องหมาย DNA ทั้งหมดที่เรามีบนผ้าคลุม คุณสมบัติที่น่าสนใจคือคุณสมบัติ Green-Red - Turquoise - Red-Green บนดีเอ็นเอเดี่ยวที่อยู่กึ่งกลางของภาพ

สีแดงเป็นเสียงที่ดังที่สุด ตัวอย่างนี้ดีเพราะความคมชัดดี อย่างไรก็ตามบางครั้งภาพไม่ได้ดีมากและมีสีสันตลอดทั้งภาพดังนั้นการเข้ารหัสค่า RGB เฉพาะสำหรับสีเขียวและสีแดงอาจไม่สามารถใช้ได้กับทุกภาพ นอกจากนี้โปรดทราบว่าเส้นใยไม่จำเป็นต้องเป็นแนวนอนพวกเขาอาจถูกหมุน

โปรดดูตัวอย่างนี้:

ป้อนคำอธิบายรูปภาพที่นี่ ภาพต้นฉบับ (tif) อยู่ที่นี่:

ภาพตัวอย่าง 2 (ดรอปบ็อกซ์)

นอกจากนี้บางครั้งรูปภาพเดียวมีคุณสมบัติดังกล่าวจำนวนมากและบางครั้งก็มีคุณสมบัติหลายอย่างบนสายดีเอ็นเอเดียวกัน ในที่สุดบางครั้งอาจมีคุณลักษณะบางส่วนเท่านั้น (เช่นส่วนสีเขียวที่แยกได้หรือสีแดงที่แยกหรือที่แยกส่วนสีเขียวสีแดงที่แยกได้

คำถาม:

ฉันจะขอบคุณถ้ามีคนสามารถช่วยฉันให้ได้ความยาวของแต่ละส่วนของสีเขียวและส่วนสีแดงนั่นคือเนื่องจากคุณสมบัติที่น่าสนใจคือสีเขียว - แดง - สีเขียวขุ่น - แดง - เขียวแต่ละคุณลักษณะจะมีอาร์เรย์ 5 ค่า (ความยาวของส่วนสีเขียวแรกความยาวของส่วนสีแดงแรกความยาวของส่วนสีเขียวขุ่นความยาวของส่วนสีแดงที่สองและความยาวของส่วนสีเขียวที่สอง)


3
สวัสดีคำถามนี้เป็นเรื่องเกี่ยวกับที่จะถูกย้ายไปประมวลผลสัญญาณ เรามุ่งเน้นที่การประมวลผลภาพและอัลกอริทึมและฉันได้แก้ไขคำถามของคุณเพื่อขอสิ่งนั้น แม้ว่าอาจมีคนที่มีความรู้ใน MATLAB แต่คุณอาจได้รับการแก้ปัญหาในภาษาอื่น (หรือรหัสเทียม) ซึ่งจะนำคุณไปสู่คำตอบ หากคุณยังคงติดตั้งโซลูชันใน MATLAB (ถ้าคุณยังไม่ได้รับคำตอบจาก MATLAB) คุณสามารถกลับมาที่Stack Overflowเพื่อขอความช่วยเหลือในการแปลได้
Lorem Ipsum

ขั้นตอนแรกควรเก็บสัญญาณแต่ละสัญญาณในช่องอิสระ ใช่ CFP เป็นสีฟ้าคราม แต่คุณไม่ควรถอดสัญญาณออกจากช่องสีเขียว
Jonas

คำตอบ:


11

ตัวอย่างใน Mathematica:

(* Get your image*)
img = Import["http://dl.dropbox.com/u/18072545/c_29.tif"];
(*Detect the extended minima and remove background*)
nB = ImageSubtract[img, ColorNegate@FillingTransform@ColorNegate[img]]  

ป้อนคำอธิบายรูปภาพที่นี่

(*Separate RGB channels*)
cS = ImageAdjust /@ ColorSeparate[img]

ป้อนคำอธิบายรูปภาพที่นี่

(*Binarize*)
bcS = Binarize[#, .4] & /@ cS  

ป้อนคำอธิบายรูปภาพที่นี่

(*Remove large elements*)
tH = TopHatTransform[#, DiskMatrix[2]] & /@ bcS  

ป้อนคำอธิบายรูปภาพที่นี่

(*Detect lines using a Hough Transform*)
lines = ImageLines[#, .01, .8] & /@ tH
(*Plot them*)
Show[img, Graphics[{
   Thickness[.01], Red, Line /@ (lines[[1]]),
   Thickness[.006], Green, Line /@ (lines[[2]]),
   Thickness[.004], Blue, Line /@ (lines[[3]])}]]
(*Red and green are superimposed*)  

ป้อนคำอธิบายรูปภาพที่นี่

แก้ไข

ที่นี่คุณอาจเห็นกระจุกสีแดงและเขียวแยกออกจากกัน ในขณะที่คุณสามารถจินตนาการคุณต้องตัดสินใจเมื่อส่วนหนึ่งเป็นสีแดง!

ป้อนคำอธิบายรูปภาพที่นี่


ขอบคุณมากสำหรับคำตอบของคุณ ฉันไม่ชัดเจนว่าควรใช้เส้นสีฟ้าเส้นใดเนื่องจากมีเพียงคุณสมบัติเดียวในภาพนี้ เป็นไปได้หรือไม่ที่จะได้ความยาวของส่วนสีแดงและสีเขียวบนเส้นตรงที่คุณมีสีแดง / เขียวซ้อนทับ?
Lee Sande

1
@ Lee แน่นอนมันเป็นไปได้! เมื่อคุณมีการแปลง Hough แล้วให้ใช้เส้นขยายเป็นหน้ากากและวัดจุดสีแดงที่อยู่ใกล้เคียง
ดร. เบลิซาเรี

@ Lee สิ่งเดียวที่คิดว่าจะใส่ใจคือการมีคำจำกัดความที่ดีของ "red" :)
ดร. เบลิซาเรี

@Lee หากคุณมีสิทธิ์เข้าถึง Mathematica ฉันสามารถโพสต์โค้ดเพิ่มเติมเพื่อแยกส่วนได้
Dr. belisarius

ขอบคุณมากสำหรับคำตอบของคุณ ฉันรู้จากการตอบกลับของคุณว่าช่องสีแดงเป็นปัญหาและสัญญาณที่ทับซ้อนกันในส่วนสีเขียวที่อยู่ติดกันนั้นจะต้องถูกตัดทอน ฉันได้อัปเดตปัญหาแล้ว - คุณช่วยลองดูและบอกฉันได้ไหมว่ามันสมเหตุสมผล
Lee Sande
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.