5.15. การดำเนินการทางสัณฐานวิทยา¶
การดำเนินการ ทางสัณฐานวิทยา ทำงานบนภาพไบนารี -- มาสก์ที่ได้จากการกำหนดค่าขีดแบ่งและการตรวจจับขอบ การดำเนินการแต่ละอย่างเดินผ่านบริเวณใกล้เคียงแบบเลื่อนชนิดเดียวกับที่ฟิลเตอร์การทำให้เรียบใช้ แต่คำถามที่ถามในทุกตำแหน่งคือใช่/ไม่ใช่: พิกเซล ทุกตัว ในบริเวณใกล้เคียงเปิดอยู่หรือไม่ พิกเซล ใดก็ตาม ในบริเวณใกล้เคียงเปิดอยู่หรือไม่ รูปแบบเปิด/ปิดเป็นอย่างไร คำตอบจะขยายบริเวณ ลดบริเวณ และตัดขอบเขตใหม่ในรูปแบบที่ฟิลเตอร์การหาค่าเฉลี่ยไม่สามารถทำได้
สัณฐานวิทยาคือสิ่งที่อยู่ระหว่างมาสก์ไบนารี เริ่มต้น -- เอาต์พุตของการกำหนดค่าขีดแบ่ง การตรวจจับขอบ หรือตัวจำแนกประเภทอื่นๆ -- และมาสก์ไบนารี ที่สะอาด ที่ส่วนที่เหลือของไปป์ไลน์สามารถใช้ได้ เอาต์พุตของค่าขีดแบ่งดิบมักมีพิกเซลสัญญาณรบกวนแยกตัวกระจายอยู่ในบริเวณพื้นหน้าจริง รูที่เจาะเข้าไปในบริเวณที่เป็นของแข็ง และขอบเขตที่ขรุขระที่ค่าขีดแบ่งตัดใกล้กับขอบของวัตถุ สัณฐานวิทยาจะกำจัดข้อบกพร่องเหล่านั้น
5.15.1. การดำเนินการคลาสสิกสี่ประการ¶
การดำเนินการดั้งเดิมสองประการและการประกอบสองประการจากมันรวมกันเป็นชุดเครื่องมือทางสัณฐานวิทยา:
dilate() ขยาย ทุกบริเวณพื้นหน้า กฎคือ: พิกเซลใดก็ตามที่มีเพื่อนบ้านพื้นหน้าอย่างน้อยหนึ่งตัวในหน้าต่าง (2 * size + 1) ของมันจะกลายเป็นพื้นหน้า ผลที่มองเห็นได้คือบริเวณพื้นหน้าขยายใหญ่ขึ้น size พิกเซลในทุกทิศทาง และ รู ภายในมันจะหดตัว (หรือหายไป) ในปริมาณเดียวกัน
erode() ทำตรงกันข้าม พิกเซลใดก็ตามที่ไม่มีเพื่อนบ้าน ทุกตัว ในหน้าต่างในพื้นหน้าจะกลายเป็นพื้นหลัง บริเวณพื้นหน้าจะเล็กลง size พิกเซลในทุกทิศทาง พิกเซลพื้นหน้าที่แยกตัว (ซึ่งไม่มีเพื่อนบ้านพื้นหน้า) จะหายไปทั้งหมด และการเชื่อมต่อเล็กๆ ระหว่างบริเวณที่ใหญ่กว่าจะถูกตัด
การดำเนินการทางสัณฐานวิทยาคลาสสิกสี่ประการที่ใช้กับบริเวณไบนารีที่มีสัญญาณรบกวน 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 ต้องการเพื่อนบ้านพื้นหน้าอย่างน้อยสามตัวแทนหนึ่งตัว ดังนั้นมันจะขยายน้อยลง
รูปแบบค่าขีดแบ่งมีประโยชน์สำหรับการปรับความรุนแรงของการดำเนินการสัณฐานวิทยาโดยไม่เปลี่ยนขนาดของหน้าต่าง ซึ่งจะเปลี่ยน ขนาด ของลักษณะเด่นที่มันทำงานด้วยเช่นกัน แอปพลิเคชันส่วนใหญ่ยึดติดกับพฤติกรรมเริ่มต้น รูปแบบค่าขีดแบ่งมีไว้สำหรับกรณีที่ค่าเริ่มต้นมีมากหรือน้อยเกินไปเล็กน้อย