5.15. การดำเนินการทางสัณฐานวิทยา

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

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

5.15.1. การดำเนินการคลาสสิกสี่ประการ

การดำเนินการดั้งเดิมสองประการและการประกอบสองประการจากมันรวมกันเป็นชุดเครื่องมือทางสัณฐานวิทยา:

dilate() ขยาย ทุกบริเวณพื้นหน้า กฎคือ: พิกเซลใดก็ตามที่มีเพื่อนบ้านพื้นหน้าอย่างน้อยหนึ่งตัวในหน้าต่าง (2 * size + 1) ของมันจะกลายเป็นพื้นหน้า ผลที่มองเห็นได้คือบริเวณพื้นหน้าขยายใหญ่ขึ้น size พิกเซลในทุกทิศทาง และ รู ภายในมันจะหดตัว (หรือหายไป) ในปริมาณเดียวกัน

erode() ทำตรงกันข้าม พิกเซลใดก็ตามที่ไม่มีเพื่อนบ้าน ทุกตัว ในหน้าต่างในพื้นหน้าจะกลายเป็นพื้นหลัง บริเวณพื้นหน้าจะเล็กลง size พิกเซลในทุกทิศทาง พิกเซลพื้นหน้าที่แยกตัว (ซึ่งไม่มีเพื่อนบ้านพื้นหน้า) จะหายไปทั้งหมด และการเชื่อมต่อเล็กๆ ระหว่างบริเวณที่ใหญ่กว่าจะถูกตัด

A binary input region in the leftmost panel: a solid square with a one-pixel hole in its middle and three isolated noise pixels around it. Four panels to the right show the result of applying dilate, erode, open, and close to that input. Dilate grows the region, fills the hole, and grows each noise pixel into a block; erode shrinks the region, grows the hole, and removes the noise; open removes the noise while reproducing the region and its hole exactly; close fills the hole while reproducing the region's outline and the noise pixels exactly.

การดำเนินการทางสัณฐานวิทยาคลาสสิกสี่ประการที่ใช้กับบริเวณไบนารีที่มีสัญญาณรบกวน Erode ลดขนาด; dilate ขยาย; open คือ erode แล้วตามด้วย dilate (กำจัดสัญญาณรบกวน); close คือ dilate แล้วตามด้วย erode (ปิดรู)

open() คือ erode ตามด้วย dilate ภาพที่ถูก erode แล้วจะมีพิกเซลสัญญาณรบกวนที่แยกตัวทุกตัวถูกลบออก แต่ยังถูกย่อลงด้วย size พิกเซลในทุกทิศทาง การติดตาม erode ด้วย dilate ขนาดเดียวกันจะคืนค่าบริเวณพื้นหน้าจริงให้กลับมาใกล้เคียงกับขอบเขตเดิมในขณะที่สัญญาณรบกวนหายไป การประกอบนี้คือสิ่งที่ทำให้ open เป็นการดำเนินการ "กำจัดสัญญาณรบกวน" มาตรฐานในสัณฐานวิทยาคลาสสิก: พิกเซลพื้นหน้าที่แยกตัวจะหายไป บริเวณจริงกลับมาโดยไม่ได้รับความเสียหาย

close() คือภาพสะท้อน -- dilate ตามด้วย erode Dilate จะปิดรูเล็กๆ ภายในบริเวณพื้นหน้าและเชื่อมต่อบริเวณที่แยกกันด้วยช่องว่างเล็กๆ; erode ย่อผลลัพธ์กลับไปยังขอบเขตภายนอกเดิมในขณะที่ปล่อยให้ภายในที่เต็มแล้วคงอยู่ close เป็นการดำเนินการ "ปิดช่องว่างเล็กๆ" มาตรฐาน

binary_mask.open(1)       # remove single-pixel noise
binary_mask.close(2)      # fill small holes and gaps

พารามิเตอร์ขนาดมีความหมายเดียวกับในฟิลเตอร์ความสว่าง: size=1 หมายถึงบริเวณใกล้เคียง 3x3, size=2 หมายถึง 5x5 และต่อไปเรื่อยๆ ขนาดที่ใหญ่กว่าหมายถึงการทำความสะอาดที่รุนแรงกว่า -- และต้นทุนต่อพิกเซลที่นานกว่า

5.15.2. Top-hat และ Black-hat

การประกอบอีกสองรายการควรรู้จักเพราะดึง ลักษณะเด่นที่ตรงกับ สิ่งที่ open และ close ลบออก:

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

black_hat() ส่งคืน ความแตกต่าง ระหว่างเวอร์ชันที่ปิดแล้วของภาพกับต้นฉบับ -- พิกเซลพื้นหลังที่ close จะเติมเข้าไป นั่นคือมาสก์ของรูเล็กๆ ภายในบริเวณพื้นหน้า ช่องว่างแคบๆ ระหว่างบริเวณที่การดำเนินการ close จะเชื่อมต่อ

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

5.15.3. โหมดค่าขีดแบ่ง

การดำเนินการทางสัณฐานวิทยาพื้นฐานสี่ประการทั้งหมดรับคำสำคัญจำนวนเต็ม threshold ที่ทำให้การทดสอบเปิด/ปิดในแต่ละตำแหน่งอ่อนลง หากไม่มี การดำเนินการจะทำตามที่อธิบายไว้ข้างต้น: erode() ต้องการให้เพื่อนบ้าน ทุกตัว เปิด, dilate() ต้องการ อย่างน้อยหนึ่ง ตัว เมื่อตั้งค่า threshold แต่ละการดำเนินการจะทนต่อการโหวตในทิศทางอื่นจากเพื่อนบ้านจำนวนนั้น สำหรับ erode, threshold คือจำนวนเพื่อนบ้าน พื้นหลัง ที่พิกเซลอาจมีและยังคงรอด: threshold=4 รักษาพิกเซลใดก็ตามที่มีเพื่อนบ้านอย่างน้อยสี่จากแปดตัวเปิดอยู่ (ในหน้าต่าง 3x3 พิกเซลกลางมีเพื่อนบ้านแปดตัว) ดังนั้นมันจะไม่ erode อย่างรุนแรง สำหรับ dilate, threshold คือจำนวนเพื่อนบ้าน พื้นหน้า ที่พิกเซลพื้นหลังต้องมีมากกว่าก่อนที่มันจะเปิด: threshold=2 ต้องการเพื่อนบ้านพื้นหน้าอย่างน้อยสามตัวแทนหนึ่งตัว ดังนั้นมันจะขยายน้อยลง

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