ฉันจะสร้างข้อความใหม่จากภาพโดยใช้การทำงานทางสัณฐานวิทยาได้อย่างไร


16

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

ฉันลองใช้การกัดเซาะการขยายเปิดและปิด แต่ผลลัพธ์ไม่ดีมาก

เป็นไปได้ไหม

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


การขยายดูเหมือนขั้นตอนแรกที่ชัดเจนในการทำให้ขอบที่คลุมเครือเหล่านั้นราบรื่น
Paul R

ใช่ฉันคิดว่านี่เป็นขั้นตอนแรกของชุดค่าผสมที่ฉันลอง

2
ฉันคิดว่าคุณต้องกำหนดปัญหาของคุณให้มากขึ้น ตัวอย่างเช่นถ้าคุณหมายความว่าคุณจะทำให้อ่านง่ายขึ้นได้อย่างไรการขยายเล็กน้อยอาจเพียงพอ ถ้าคุณต้องการที่จะสร้างใหม่อย่างชัดเจนว่ามันดูก่อนกระบวนการบิดเบือนอะไรนั้นเป็นไปไม่ได้เพราะอัลกอริทึมทางสัณฐานวิทยาของคุณไม่มีความรู้เกี่ยวกับรูปร่างของตัวอักษรที่ใช้
so12311

เพื่อให้อ่านง่ายขึ้นฉันได้สร้างคำสั่งด้วย [0 1 0; 1 1 1; 0 1 0] ฉันกำลังมองหาบางอย่างที่จะทำให้ข้อความดูใกล้เคียงกับต้นฉบับ
Jackobsen

คำตอบ:


6

หากคุณยินดีที่จะเพิ่ม / ลบ ฯลฯ ภาพที่มีการเปลี่ยนแปลงทางสัณฐานวิทยาคุณสามารถนับจำนวนพิกเซลสัญญาณที่อยู่ในบริเวณใกล้เคียงของแต่ละพิกเซลและเกณฑ์ตามจำนวนนั้น

img = imread('http://i.stack.imgur.com/wicpc.png');

n = false(3);n(4) = 1;
s = false(3);s(6) = 1;
w = false(3);w(2) = 1;
e = false(3);e(8) = 1;

%# note that you could convolve with a cross instead
fourNeighbourCount = imerode(img,n) + imerode(img,s) + imerode(img,w) + imerode(img,3) + img;

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

%# require at least two neighbours
img = fourNeighbourCount > 1;

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

หากคุณเชื่อใจด้วยหน้ากาก 3x3 ที่มีรูตรงกลางคุณสามารถได้รับสิ่งนี้:

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


3

นี่เป็นปัญหาที่น่าสนใจในการแก้ไข! ลองกรองมัธยฐาน ดูการอ้างอิงที่นี่และที่นี่สำหรับรายละเอียดเพิ่มเติม

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

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


1

หากด้วยเหตุผลบางอย่างที่คุณ จำกัด ให้ใช้การดำเนินการทางสัณฐานวิทยาคุณสามารถพิจารณาใช้ "รูปแบบการลงคะแนน" ของการดำเนินการปิดที่มุ่งเน้น

ปัญหาหนึ่งที่เกี่ยวกับการทำงานของก้านคือไม่คำนึงถึงทิศทาง สำหรับพิกเซลกลางพื้นที่ใกล้เคียงเช่นนี้

1 0 0
1 1 0
0 1 1

ไม่ต่างจากย่านนี้อย่างแท้จริง

0 1 0
1 1 0
1 1 0

นั่นอาจทำให้เกิดปัญหาเนื่องจากการขยายและการกัดเซาะไม่ได้เอนเอียงไปในทิศทางที่คุณต้องการให้เป็น ดังนั้นสิ่งหนึ่งที่คุณสามารถทำได้คือหาการดำเนินการทางสัณฐานวิทยาที่มีทิศทางลำเอียงที่เหมาะสมที่สุดโดยใช้เมล็ดคล้ายสิ่งเหล่านี้:

1 1 0   1 0 0   1 0 0
0 1 0   1 1 0   1 1 0
0 1 1   0 1 1   0 1 1 . . .

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

0 0 0 1 1
0 0 1 1 0
0 1 1 0 0 
0 0 1 1 0
0 0 0 1 1

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

ไม่ว่าในกรณีใดถ้าคุณใช้เคอร์เนลหลายตัวและตรรกะบางอย่างการดำเนินการแต่ละอย่างที่ (x, y) ต้องใช้การคำนวณมากกว่าขั้นตอนทางสัณฐานวิทยาแบบดั้งเดิม:

  1. ที่แต่ละพิกเซล (x, y) ให้ใช้ตัวดำเนินการทางสัณฐานวิทยาหลายตัว สำหรับผู้ปฏิบัติงานแต่ละคนให้คำนวณทั้งผลลัพธ์ของการทำงานทางสัณฐานวิทยาและระดับที่อินพุตตรงกับเคอร์เนล ("ดีกรี" = จำนวนพิกเซลที่ตรงกัน)
  2. เลือกผลลัพธ์ทางสัณฐานวิทยาสำหรับเคอร์เนลที่ใกล้เคียงที่สุดกับการกำหนดค่าพิกเซลเปิด / ปิดจริง

ขนาดของเคอร์เนลต้องตรงกับขนาดของอินพุต แทนที่จะใช้เคอร์เนลที่ใหญ่กว่าคุณสามารถใช้เคอร์เนล "spread" เพื่อลดจำนวนการทำงาน เคอร์เนลต่อไปนี้เป็นเพียงเคอร์เนล 3 x 3 ที่มีรัศมีมากกว่า 1

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