ฉันมีภาพ RGB พร้อมสัญญาณต่าง ๆ เป้าหมายหลักของฉันคือการนับสัญญาณที่สัมผัสกับเส้นขอบภาพ
แนวทางและปัญหา
ฉันเริ่มโดยการโหลดภาพ [รูป 1] จากนั้นแปลงเป็นสีเทาและใช้ตัวกรองมัธยฐานเพื่อกำจัดเสียงรบกวน [รูปที่ 1] 2] จากนั้นฉันก็ทำการไบนาริมิเตอร์ด้วยค่า 0.2 ซึ่งส่งผลให้รูปที่ 3 ในขณะนี้ฉันได้รับภาพที่ถูกจัดรูปแบบของฉัน แต่ปัญหาคือบางส่วนที่เป็นสัญลักษณ์เดียวกันปรากฏในภูมิภาคต่าง ๆ แทนที่จะเป็นเพียงภาพเดียว ตอนนี้เป้าหมายของฉันคือการรวมภูมิภาคที่เป็นวัตถุเดียวกันดังนั้นฉันสามารถใช้bwlabel
เพื่อนับจำนวนสัญญาณที่อยู่ในภาพและใช้imclearborder
เพื่อกำจัดสิ่งที่อยู่ในเส้นขอบและใช้bwlabel
อีกครั้งเพื่อให้ได้ความแตกต่างระหว่าง ทั้งสอง.
วิธีการของฉันคือการใช้bwmorph
, Dilate
การขยายวัตถุและแล้วพยายามที่จะกรอกพวกเขาด้วย,imfill
holes
แต่ปัญหาคือถ้าฉันขยายมันในปริมาณเล็กน้อย [รูป 4] imfill
ดูเหมือนจะไม่เติมพวกเขาถ้าฉันขยายพวกมันด้วยจำนวนมาก [รูปที่ 5] วัตถุทั้งหมดเริ่มรวม :(
รหัส
img=im2double(imread('image.png')); figure, imshow(img)
img_gray=rgb2gray(img); imshow(img_gray);
img_mediana=medfilt2(img_gray, [3 3]); figure, imshow(img_mediana);
img_bin=im2bw(img_mediana, 0.2); imshow(img_bin)
img_dilate=bwmorph(img_bin, 'Dilate', 10); imshow(img_dilate)
img_fill=imfill(img_dilate, 'Holes'); figure, imshow(img_fill)
ตัวเลข
รูปที่ 1 :
รูปที่ 1 http://dl.dropbox.com/u/5272012/1.png
รูปที่ 2 :
รูปที่ 2 http://dl.dropbox.com/u/5272012/2.png
รูปที่ 3 :
รูปที่ 3 http://dl.dropbox.com/u/5272012/3.png
รูปที่ 4 :
รูปที่ 4 http://dl.dropbox.com/u/5272012/4.png
รูปที่ 5 :