บ้าน / หลังคา / การรับรู้รูปร่างในภาพ คำสองสามคำเกี่ยวกับการจดจำรูปแบบ เคสธรรมดา แยกมิติ

การรับรู้รูปร่างในภาพ คำสองสามคำเกี่ยวกับการจดจำรูปแบบ เคสธรรมดา แยกมิติ

UDC 004932:621.396

ที.เอ็ม. วลาโซวา, วี.จี. KALMYKOV

อัลกอริธึมและโปรแกรมสำหรับการรับรู้เส้นขอบของภาพเป็นลำดับของส่วนต่างๆ ของเส้นดิจิทัล

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

คำสำคัญ: รูปภาพ คอนทัวร์ ส่วนตรงแบบดิจิทัล อัลกอริธึม โปรแกรม

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

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

1. บทนำ

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

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

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

โดยเฉพาะอย่างยิ่งวิธีการและอัลกอริธึมที่เป็นที่รู้จักโดยเฉพาะอย่างยิ่งที่เสนอในงานทำให้ได้วิธีแก้ปัญหาโดยประมาณซึ่งไม่เป็นที่ยอมรับสำหรับการใช้งานทั้งหมด

ในบทความนี้ เราพิจารณาการจดจำรูปร่างของภาพไบนารีเป็นลำดับของส่วนของเส้นตรงดิจิทัลโดยไม่สูญเสียข้อมูล

2. Contour เป็นลำดับส่วนของเส้นดิจิทัล

ส่วนนี้พิจารณาการวิเคราะห์โครงสร้างของเส้นขอบของภาพเป็นลำดับของส่วนของเส้นดิจิทัล ซึ่งเป็นข้อมูลเริ่มต้นสำหรับการแบ่งส่วนเส้นขอบออกเป็นส่วนโค้งของเส้นโค้งดิจิทัลและส่วนของเส้นดิจิทัล

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

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

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

เพื่อขจัดปัญหาที่เกิดขึ้นจากสิ่งนี้ เราจะพิจารณาภาพที่ได้จากต้นฉบับอันเป็นผลมาจากการแยกส่วนเป็นเซลล์เชิงซ้อนสองมิติ ในกรณีนี้

พิกเซลเป็นองค์ประกอบสองมิติของคอมเพล็กซ์เซลลูล่าร์นี้ นอกจากพิกเซลแล้ว ยังมีรอยแตกและจุดต่างๆ แตกเป็น

ด้านของพิกเซลที่เป็นองค์ประกอบหนึ่งมิติ จุดคือจุดสิ้นสุดของรอยร้าวและจุดมุมของพิกเซล คะแนนเป็นองค์ประกอบที่ไม่มีมิติ ดังนั้น

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

จำกัดรอยแตกของรูปร่าง ดังแสดงใน การแสดงระนาบภาพเป็น

เซลล์คอมเพล็กซ์ให้ประโยชน์มากมาย โดยเฉพาะอย่างยิ่ง ขอบเขตขอบเขตจะกลายเป็นเส้นโค้งบางๆ ที่มีพื้นที่เป็นศูนย์

ในรูป 1 แสดงตัวอย่างรูปร่างเริ่มต้นของวัตถุที่เกิดจากส่วนโค้งของส่วนโค้งและส่วนของเส้นตรง เช่นเดียวกับความเท่าเทียมกันทางดิจิทัลของวัตถุที่เป็นลำดับของรอยแตก จุดที่เป็นของรอยแตกในทิศทางต่าง ๆ จะถูกนับ ในงาน โดยองค์ประกอบ b เราหมายถึงลำดับรอยร้าวที่เชื่อมต่อกันในทิศทางเดียวกัน โดยเริ่มจากจุดใดจุดหนึ่งและสิ้นสุดด้วยรอยร้าวที่มีทิศทางเดียวกันหรือตั้งฉาก ในรูป 1 แสดงหนึ่งในพาร์ติชั่นที่เป็นไปได้ของรูปร่างเป็นองค์ประกอบ b ซึ่งเกิดขึ้นจากรอยแตกระหว่างจุด: (0-2), (2-4), (4-6), (6-8), (8 -9), (9 -11), (11-13), (13-15), (15-17), (17-19), (20-21), (21-23), (23-25) ), (25-27 ), (27-0). องค์ประกอบ b แต่ละองค์ประกอบมีลักษณะตามพารามิเตอร์ต่อไปนี้: ทิศทางที่สัมพันธ์กับจุดเริ่มต้น g (ถ่าย g = 0 - สำหรับทิศทางขึ้น, 1 - ไปทางขวา, 2 - ลง, 3 - ไปทางซ้าย); ล. - จำนวนรอยแตกในทิศทาง ก. (! = 1,2,...); ทิศทางของรอยร้าวสุดท้าย q เทียบกับทิศทาง g ของรอยร้าวก่อนหน้า (q = -1 - รอยร้าวสุดท้ายไปทางซ้ายสัมพันธ์กับทิศทาง g, +1 - ทางขวา, 0 - ตรงกับทิศทาง g ). จำนวนรอยแตก l ตามอัตภาพจะเรียกว่า "ความยาว" ขององค์ประกอบ b สำหรับองค์ประกอบ b (0-2) g =0, !=3, q =+1 สำหรับองค์ประกอบ b (27-0) g =3, =1, q =0

วิธีการเลือกเซ็กเมนต์ของเส้นดิจิทัลในเส้นขอบใช้คุณสมบัติต่อไปนี้ของลำดับขององค์ประกอบ b ที่ประกอบเป็นเซ็กเมนต์ ลำดับดังกล่าวรวมถึงองค์ประกอบ b ที่มีค่าเท่ากับ g, q; ความยาวของพวกเขาใช้ค่า!, +1 และ

การสลับกันขององค์ประกอบ b ของความยาว!, +1 ถูกกำหนดโดยเศษส่วนต่อเนื่องที่ได้จากการหารจำนวนเต็ม n = Ax = |x1 - x2| และ m = Ay = |y1 - y2\ โดยที่ (x1zy1), (x2,y2) เป็นพิกัดเริ่มต้น

และจุดสิ้นสุดของเซ็กเมนต์: or

เพื่อความชัดเจน เราคิดว่า n > m จากสูตร (1) l - ส่วนจำนวนเต็มของการหาร n ด้วย m - สอดคล้องในส่วนของเส้นตรงดิจิทัลกับจำนวน l รอยร้าวต่อเนื่องของทิศทางเดียวกัน เมื่อรวมกับรอยร้าวในแนวตั้งฉากที่อยู่ติดกัน พวกมันจะสร้างองค์ประกอบบีของความยาว! k1 องค์ประกอบ b ที่ต่อเนื่องกันของความยาว l และหนึ่งองค์ประกอบ b ของความยาว!+1 (หรือ k1 องค์ประกอบ b ที่ต่อเนื่องกันของความยาว +1 และหนึ่งองค์ประกอบ b ของความยาว!) ในรูปแบบองค์ประกอบ K1 ของ "ความยาว" k1 (โดย การเปรียบเทียบกับ "ความยาว" b-element) องค์ประกอบ b ที่มีความยาวแตกต่างกัน 1 จากองค์ประกอบ b ที่ต่อเนื่องกันจะถูกเรียกว่าองค์ประกอบ b ที่แก้ไขขององค์ประกอบ K1 ที่กำหนด ในทำนองเดียวกัน องค์ประกอบ K1 ที่ต่อเนื่องกัน k2 ของ "ความยาว" k1 และหนึ่งองค์ประกอบ K1 ของ "ความยาว" k1 +1 (หรือ k2 องค์ประกอบ K1 ที่ต่อเนื่องกันของ "ความยาว" k1 +1 และองค์ประกอบ K1 หนึ่งองค์ประกอบของ "ความยาว" k1) K2- องค์ประกอบ "ความยาว" k1 ดังนั้น

k + k 2 + k z + ... + kg

ต่อไปจนกว่าสมาชิกของเศษส่วนต่อเนื่องจะหมดลง K1 -element (โดยทั่วไป K-1 -element) ซึ่งมีความยาวแตกต่างกัน 1 จาก K1 -element ที่ต่อเนื่องกัน (Kg-1 -element) เราจะเรียก K1 -element ที่แก้ไขแล้ว (Kg-1 -element) ของ K2 นี้ - องค์ประกอบ (Kg -องค์ประกอบ). ดังนั้นสำหรับแต่ละคน

ส่วนดิจิทัลของเส้นตรงสอดคล้องกับเศษส่วนต่อเนื่อง องค์ประกอบที่กำหนดโครงสร้างของส่วนนี้

ในคอนทัวร์ในรูป 1 สามารถเลือกเส้นตรงดิจิทัลส่วนต่อไปนี้ได้: 0-3, 3-9, 910, 10-17, 17-0

3. การเลือกส่วนของเส้นดิจิตอลในรูปร่าง

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

วิธีการเลือกเซ็กเมนต์ของสายดิจิทัลประกอบด้วยการดำเนินการต่อไปนี้ตามลำดับ

1. การเลือกลำดับขององค์ประกอบ b ตามลำดับของรอยแตก การกระทำนี้สอดคล้องกับคำจำกัดความของส่วนจำนวนเต็ม! ยิงต่อเนื่อง (1).

2. การแยกลำดับขององค์ประกอบ Kg โดยที่ r = 1 ในลำดับขององค์ประกอบ b และหนึ่งในองค์ประกอบ b ของแต่ละองค์ประกอบ K1 จะต้องมีการแตกร้าวมากกว่าหรือน้อยกว่า 1 รายการ การดำเนินการนี้สอดคล้องกับคำจำกัดความขององค์ประกอบที่ k1 -th ของเศษส่วนที่ต่อเนื่อง (1) หลังจากดำเนินการแล้ว ค่าของ r จะต้องเพิ่มขึ้น 1

3. การแยกลำดับขององค์ประกอบ Kg ในลำดับขององค์ประกอบ Kg-1

นอกจากนี้ องค์ประกอบ Kg-1 ตัวใดตัวหนึ่งขององค์ประกอบ Kg จะต้องมีองค์ประกอบ K-2 หนึ่งตัวมากหรือน้อยกว่าองค์ประกอบอื่น การกระทำนี้สอดคล้องกับคำจำกัดความของ k(- องค์ประกอบที่ต่อเนื่องของเศษส่วน (1) หลังจากดำเนินการแล้ว ค่าของ r จะต้องเพิ่มขึ้น 1

4. วรรค 3 ซ้ำจนกว่าจะเป็นไปได้จากองค์ประกอบ Kr ที่ต่อเนื่องกัน

แบบฟอร์ม Km-องค์ประกอบ

5. จุดขอบเขตถูกกำหนดระหว่างสององค์ประกอบ b ที่อยู่ติดกันซึ่งไม่รวมอยู่ในองค์ประกอบ Kg เดียวกัน จุดเหล่านี้เป็นจุดสิ้นสุดของส่วนของเส้นดิจิทัลที่สร้างรูปร่าง

พิจารณาอัลกอริทึมสำหรับการเลือกส่วนของเส้นในลำดับขององค์ประกอบ b

ให้ [b5 (/5,gs,qs)); s = 0.1,...,t - ลำดับขององค์ประกอบ L ที่สร้างรูปร่าง x5, y5 - พิกัดของจุดเริ่มต้นขององค์ประกอบ b ที่ e; [hu, y y); y = ; r = 0,1,...,!; !< £ - множество

จุดแตกหักของรูปร่าง เบรกพอยต์กำหนดจุดสิ้นสุดของส่วนของเส้นตรงที่สร้างเส้นทาง การหาจุดแตกหักหมายถึงการกำหนดส่วนของเส้นที่เป็นรูปร่าง

แต่ละส่วนที่อยู่ระหว่างการพิจารณามีลักษณะเป็น Kg -element เช่นเดียวกับ chain

ยิง ในช่วงเวลาเริ่มต้นของการรับรู้เซ็กเมนต์ องค์ประกอบของเศษส่วนที่ต่อเนื่องกันจะเท่ากับ 0 ส่วนนั้นสามารถรับรู้ได้หากรู้จักพารามิเตอร์ขององค์ประกอบ Kr รวมถึงลำดับ r และค่าขององค์ประกอบของ เศษส่วนที่ต่อเนื่องกัน

1. เงื่อนไขเบื้องต้น

ลำดับ [b5 (/5, gs, qs)) และ (x5, y5) ถูกกำหนด

จำเป็นต้องหาพิกัดของจุดพัก |x;.,y,)

k0r:= 0, k1r:= 0, k2r:= 0,..., kr:= 0 - ค่าการทำงานขององค์ประกอบเศษส่วนต่อเนื่อง

ให้เราใช้เป็นจุดเริ่มต้นของส่วนแรกจุด 5 =0; ผม =0; ผม=0.

2. ใช้องค์ประกอบ b แรกในลำดับโดยจุดเริ่มต้นของส่วนของเส้นตรงเส้นแรก จุดเริ่มต้นคือ x5,y ความยาว /=/0 ยังเป็นค่าขององค์ประกอบแรกของเศษส่วนต่อเนื่อง

5:=5+1; k1p:=k1p+1.

3. ตรวจสอบองค์ประกอบ b ถัดไปว่าพวกเขาร่วมกับองค์ประกอบก่อนหน้าเป็นองค์ประกอบ K0 หรือไม่

3.1. ถ้า ((q3 == q3-1) && (q3 == 73-1)&& (4 == /3-1)) ดังนั้นความต่อเนื่องขององค์ประกอบ Kr k0p:= k0p +1; 5:= 5 + 1; และความต่อเนื่องของส่วนของเส้นตรง ไปที่ข้อ 3

3.2. ถ้า ((d3 f d3-1) || (d3 f 73-1)11 (|/e - /є-1!>1)) ดังนั้นจุดสิ้นสุดของส่วนของเส้นตรง ไปที่ข้อ 5

3.3. ถ้า ((&== 93+1) && (%== 73+1)&& ((/3+1== /3+1)1! (/3 - 1 == /3+1))) จากนั้นความสมบูรณ์ขององค์ประกอบ K0 Ї = Ї+1

4. ตรวจสอบความต่อเนื่อง / ความสมบูรณ์ของ K (-element.

4.1. ถ้า (k == 0) แล้ว k ^= k^; cr:= 0; k^1p:= k1+ 1p+1; 5:=5 +1; จุดเริ่มต้นขององค์ประกอบ Km

ไปที่ข้อ 3

4.2. ถ้า ((k IF 0)&&(k == k^)) แล้ว k^1p:= k^1p+1; 5:= 5+1; ความต่อเนื่องขององค์ประกอบ Ki+1 ไปที่ข้อ 3

4.3. ถ้า ((k (Ф 0)&&((k+1== k1p)11(k1-1 == k^))) แล้ว Ї := +1; จุดสิ้นสุดขององค์ประกอบ Km

ไปที่ข้อ 4

4.4. ถ้า ((^φ0)&&(|k - k1p|>1)) จุดสิ้นสุดของกลุ่มจะเป็นการเปลี่ยนโดยตรงไปยังรายการที่ 5

5. จุดสิ้นสุดของส่วน

X] = Xs; y \u003d อุซ; k1p:= 0, k2p:= 0,., kіp:= 0; k:= 0, k2:= 0,., k:= 0.

ถ้า (s< S), то s:= s +1; переход к п. 2.

มิฉะนั้นจะสิ้นสุดลำดับขององค์ประกอบ L จุดสิ้นสุดของอัลกอริทึม

อันที่จริง อัลกอริธึมที่เสนอจะค้นหาองค์ประกอบของเศษส่วนที่ต่อเนื่องกัน และสำหรับองค์ประกอบ Kt ที่ได้รับแต่ละรายการ และตรวจสอบว่าเศษส่วนที่ต่อเนื่องขององค์ประกอบ Kt ที่สร้างขึ้นใหม่นั้นเหมาะสมกับองค์ประกอบที่สร้างขึ้นแล้วหรือไม่

4. โปรแกรมสำหรับเลือกส่วนของสายดิจิทัล

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

ไม่สามารถระบุได้ เนื่องจากตัวแปร t ไม่ถูกจำกัดไว้ล่วงหน้า จำกัดค่าของt

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

อัลกอริทึมที่เสนอถูกนำไปใช้ในรูปแบบของโปรแกรม LINESEGM ซึ่งเป็นส่วนหนึ่งของแพ็คเกจซอฟต์แวร์สำหรับห้องปฏิบัติการสำหรับการประมวลผลภาพในสภาพแวดล้อม Visual C++

เป็นข้อมูลเบื้องต้น โปรแกรม LINESEGM ใช้ลำดับขององค์ประกอบ L ที่สร้างขึ้นสำหรับรูปทรงแต่ละส่วนของภาพที่ประมวลผล

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

ดังจะเห็นได้จากอัลกอริธึม การดำเนินการสร้าง Kt -elements จาก Kt-l -elements

มีค่าเท่ากันทุกค่าของ t โปรดทราบว่าค่าเริ่มต้น t =0 จะเพิ่มขึ้น 1 ทุกครั้งที่อัลกอริทึมทำงาน CKForLn คลาสพิเศษมีวิธีการที่สอดคล้องกับการทำงานของอัลกอริทึม ระหว่างการทำงานของโปรแกรมที่ใช้อัลกอริธึม โดยแต่ละค่า t เพิ่มขึ้น 1 ออบเจกต์ใหม่จะถูกสร้างขึ้นซึ่งมีฟังก์ชันที่ดำเนินการตามอัลกอริธึมสำหรับแต่ละค่าของ t

โดยคำนึงถึงว่าที่ระดับศูนย์ K0 -องค์ประกอบไม่ได้เกิดขึ้นจากองค์ประกอบ K แต่มาจาก L -

องค์ประกอบ การดัดแปลงพิเศษของคลาส CKForLn ซึ่งเป็นคลาส Cmini ได้ถูกสร้างขึ้นเพื่อใช้อัลกอริทึมที่ระดับศูนย์

หลักการทำงานของโปรแกรมคือ สำหรับแต่ละค่าของ t โปรแกรมจะใช้อ็อบเจ็กต์ของคลาส CKForLn ของระดับ t-th ซึ่งมีฟังก์ชันที่กำหนดพารามิเตอร์ขององค์ประกอบ Kt พารามิเตอร์เริ่มต้นขององค์ประกอบ Kt เป็นพารามิเตอร์อยู่แล้ว

เสร็จสิ้น Kt-l -องค์ประกอบซึ่งพารามิเตอร์ถูกกำหนดโดยวัตถุของคลาส CKForLn t-1

ระดับวะ.

ออบเจ็กต์ของคลาส CKForLn ถูกนำไปใช้ตามเงื่อนไขที่เกิดขึ้น กล่าวคือ: ความจำเป็นในการสร้างองค์ประกอบ K ของระดับถัดไป และถูกสะสมในอาร์เรย์ไดนามิกพิเศษ วัตถุระดับศูนย์จะถูกสร้างขึ้นทันทีเมื่อเริ่มต้นโปรแกรม

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

เมื่ออธิบายการทำงานของโปรแกรมจะใช้แนวคิดของ Kt ที่เสร็จสมบูรณ์ -

องค์ประกอบ. องค์ประกอบ Kt ที่เสร็จสมบูรณ์แต่ละรายการประกอบด้วยองค์ประกอบ kt Kt-l และองค์ประกอบ Kt-l ที่แก้ไขหนึ่งองค์ประกอบซึ่งมีองค์ประกอบ Kt-l ±1 Kt-2 ซึ่งแตกต่างจากองค์ประกอบ Kt ที่ไม่สมบูรณ์ซึ่งไม่มีองค์ประกอบ Kt ที่ไม่สมบูรณ์

คลาส CKForLn มีวิธีการดังต่อไปนี้

1. วิธี DK(), (กำหนดองค์ประกอบ K) - กำหนดองค์ประกอบ K

การกำหนดองค์ประกอบ Kt หมายถึงการกำหนดจำนวนขององค์ประกอบ Kt-1 ที่สร้างองค์ประกอบ Kt ที่กำหนด

2. วิธี VK§ (ตรวจสอบองค์ประกอบ K) - ตรวจสอบตัวตนขององค์ประกอบ K ที่พิจารณาด้วยองค์ประกอบ K ในระดับเดียวกันซึ่งกำหนดก่อนหน้านี้โดยฟังก์ชันของวิธี DK()

3. วิธี DEO (กำหนดจุดสิ้นสุดขององค์ประกอบ K) - เพื่อกำหนดจุดสิ้นสุดขององค์ประกอบ K นั่นคือเมื่อกำหนดองค์ประกอบ Kt ให้ค้นหาองค์ประกอบ Kt-1 ที่แก้ไขแล้ว ฟังก์ชันเมธอด DE() ของระดับ t-1 ถูกเรียกโดยฟังก์ชันเมธอด DK() ของระดับ t

4. วิธี VE(),(ตรวจสอบจุดสิ้นสุดขององค์ประกอบ K) - ตรวจสอบตัวตนของการสิ้นสุดขององค์ประกอบ K ที่พิจารณาด้วยองค์ประกอบ K ที่แก้ไข ซึ่งกำหนดไว้ก่อนหน้านี้โดยฟังก์ชันของวิธี DE ()

คลาส Cmini มีเมธอดเดียวกัน ซึ่งแตกต่างจากเมธอดของคลาส CKForLn โดยที่เมธอดของคลาส Cmini ทำงานบนองค์ประกอบ L และกำหนดหรือตรวจสอบองค์ประกอบ K0

วิธีการเรียน Cmini

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

ฟังก์ชันของเมธอด DK() ของคลาส Cmini จะเปรียบเทียบพารามิเตอร์ของแต่ละองค์ประกอบ L ถัดไปกับพารามิเตอร์ขององค์ประกอบ L เริ่มต้นจนกว่าจะตรงกัน หากพารามิเตอร์ไม่ตรงกัน ฟังก์ชัน DK() จะตรวจสอบว่าองค์ประกอบ K0 เสร็จสมบูรณ์และสิ้นสุดหรือไม่

งาน. องค์ประกอบ K0 จะถือว่าสมบูรณ์หากลงท้ายด้วยองค์ประกอบ L ที่แก้ไขแล้ว ซึ่งมีความยาวแตกต่างจากองค์ประกอบ L อื่นๆ ขององค์ประกอบ K0 ทีละ 1 (การดำเนินการ 3.1 สำหรับจุดเริ่มต้นของส่วน - t = 0)

ฟังก์ชันของเมธอด VK() จะตรวจสอบว่าพารามิเตอร์ขององค์ประกอบ k0 L ต่อไปนี้ตรงกับพารามิเตอร์ขององค์ประกอบ L ขององค์ประกอบ K0 ที่กำหนดไว้ก่อนหน้านี้โดยฟังก์ชันของเมธอด DK() หรือไม่

ระดับเดียวกัน หากพารามิเตอร์ขององค์ประกอบ K0 ปัจจุบันตรงกับค่าก่อนหน้านี้

กำหนดไว้ ฟังก์ชัน VK() จะสร้างสัญญาณของความต่อเนื่องของเซ็กเมนต์และสิ้นสุด (การดำเนินการ 3.1 สำหรับการต่อเนื่องของเซ็กเมนต์ - t > 0)

ที่ มิฉะนั้นฟังก์ชัน VK() สร้างสัญญาณของการสิ้นสุดของกลุ่มและสิ้นสุด

ฟังก์ชันเมธอด DE() จะเปรียบเทียบพารามิเตอร์ขององค์ประกอบ Kci ปัจจุบันกับพารามิเตอร์ขององค์ประกอบ K0 ที่กำหนดไว้ก่อนหน้านี้โดยฟังก์ชัน DK() เพื่อตรวจสอบว่าองค์ประกอบ K0 ปัจจุบันมีการเปลี่ยนแปลงหรือไม่ หากพารามิเตอร์อื่นเท่ากัน จำนวนของ L -องค์ประกอบ k0

ขององค์ประกอบ K0 ที่แก้ไขแล้วเทียบกับองค์ประกอบ K0 ที่กำหนดไว้ก่อนหน้านี้

ฟังก์ชัน DK() ต้องแตกต่างกัน 1 (การดำเนินการ 3.2, 3.3 เพื่อกำหนดความสมบูรณ์

เริ่มต้น K0 -องค์ประกอบของเซ็กเมนต์ - t = 0) ผลลัพธ์ - พารามิเตอร์ขององค์ประกอบ K0 ที่แก้ไข

ใช้ในเมธอด VE() ของคลาส Cmini

ฟังก์ชันเมธอด VE() จะเปรียบเทียบพารามิเตอร์ขององค์ประกอบ K0 ปัจจุบันกับพารามิเตอร์ขององค์ประกอบ K0 ที่แก้ไขก่อนหน้านี้ซึ่งกำหนดโดยฟังก์ชัน DE() เพื่อตรวจสอบว่า

พวกเขาตรงกันหรือไม่ (การดำเนินการ 3.2, 3.3 เพื่อความต่อเนื่องของกลุ่ม - t > 0) ผลลัพธ์ - เครื่องหมายของการจับคู่หรือไม่ตรงกัน - ถูกใช้ในวิธี VK() ของคลาส CKForLn

เมธอดของคลาส CKForLn

วิธีการที่ใช้เป็นข้อมูลเริ่มต้นสำหรับพารามิเตอร์ขององค์ประกอบ K ที่สร้างขึ้นสำหรับระดับต่ำสุด นั่นคือเพื่อกำหนดพารามิเตอร์ขององค์ประกอบ Kt จะใช้พารามิเตอร์

สร้างแล้ว Kt-l -elements

ฟังก์ชันของเมธอด DK() ของระดับ t ของคลาส CKForLn เมื่อกำหนดพารามิเตอร์ของ ^-element ให้เรียกใช้ฟังก์ชัน VK() ของระดับ t-1 ของคลาส CKForLn ซึ่งจะตรวจสอบว่าองค์ประกอบ Kt-l ด้วย พารามิเตอร์เดียวกันตามองค์ประกอบ Kt-l ที่กำหนดไว้แล้ว ถ้าใช่ การเรียกใช้ฟังก์ชัน VK() จะถูกทำซ้ำ ในกรณีนี้จะนับจำนวนการทำซ้ำนั่นคือกำหนดพารามิเตอร์ kt

มิฉะนั้น ฟังก์ชัน DK() ของระดับ t จะเรียกใช้ฟังก์ชัน DE() ของระดับ t-1 เพื่อกำหนดองค์ประกอบ Kt-l ที่แก้ไขแล้วและออก เมื่อสิ้นสุดการทำงาน ฟังก์ชัน DK() ของระดับ t ของคลาส CKForLn จะกำหนดพารามิเตอร์และสร้างสัญญาณขององค์ประกอบ Kt ที่เสร็จสมบูรณ์หรือไม่สมบูรณ์ (การดำเนินการ 4.1, 4.2 โดยมีค่าสูงสุดในปัจจุบันคือ t)

ฟังก์ชันของวิธีการ VK() ของระดับ t ของคลาส CKForLn จะตรวจสอบว่าพารามิเตอร์ขององค์ประกอบ kt Kt ต่อไปนี้ตรงกับพารามิเตอร์ขององค์ประกอบ Kt ที่กำหนดไว้ก่อนหน้านี้หรือไม่

ฟังก์ชันของวิธี DK() ในระดับเดียวกัน หากพารามิเตอร์ขององค์ประกอบ Kt ปัจจุบันตรงกับ

ก่อนหน้านี้ ฟังก์ชั่นที่กำหนดไว้ DK() Kt -องค์ประกอบของระดับเดียวกัน, ฟังก์ชัน VK()

สร้างสัญญาณของความต่อเนื่องของกลุ่มและเสร็จสิ้นการทำงาน

มิฉะนั้น ฟังก์ชัน VK() จะสร้างสัญญาณของการสิ้นสุดของเซ็กเมนต์และการออก (การดำเนินการ 4.1,4.2 โดยมีค่าปัจจุบัน t น้อยกว่าค่าสูงสุด)

องค์ประกอบ Kt ฟังก์ชันของวิธีการระดับ DE0 t ของคลาส CKForLn เมื่อกำหนดพารามิเตอร์ขององค์ประกอบ Kt ให้เปรียบเทียบพารามิเตอร์ขององค์ประกอบ Kt ปัจจุบันกับพารามิเตอร์ขององค์ประกอบ Kt ที่กำหนดไว้ก่อนหน้านี้โดยฟังก์ชัน DK() เพื่อตรวจสอบว่า องค์ประกอบ Kt ปัจจุบันมีการเปลี่ยนแปลง หากพารามิเตอร์อื่นเท่ากัน ค่า kt-1 ของพวกมันจะต้องแตกต่างกันด้วย 1 หากตรงตามเงื่อนไขนี้ ฟังก์ชัน DE() จะสร้างสัญญาณขององค์ประกอบ Kt ที่เปลี่ยนแปลงและ

ยุติ (การทำงาน 4.3, 4.4 ที่ค่าสูงสุดปัจจุบันของ t)

ฟังก์ชันของเมธอด VE() ของระดับ t ของคลาส CKForLn จะเปรียบเทียบพารามิเตอร์ขององค์ประกอบ Kt ปัจจุบันกับพารามิเตอร์ขององค์ประกอบ Kt ที่แก้ไขซึ่งจัดสรรไว้ก่อนหน้านี้โดยฟังก์ชัน DE() เพื่อตรวจสอบว่าค่าพารามิเตอร์ตรงกันหรือไม่

หากค่าของพารามิเตอร์ขององค์ประกอบ Kt ปัจจุบันตรงกับค่าก่อนหน้านี้

กำหนดโดยฟังก์ชัน DK() ในระดับเดียวกัน ฟังก์ชัน VK() จะสร้างสัญญาณว่าค่าพารามิเตอร์ตรงกันและสิ้นสุด (การดำเนินการ 4.3,4.4 โดยมีค่าปัจจุบัน t น้อยกว่าค่าสูงสุด)

แผนภาพเวลา (รูปที่ 2) แสดงการทำงานของโปรแกรม LINESEGM โดยใช้ตัวอย่างการจดจำส่วนของเส้นตรง ส่วนล่างของภาพแสดงส่วนของเส้นดิจิตอล ซึ่งประกอบด้วยองค์ประกอบ L ที่มีทิศทางหลักและทิศทางเสริมเดียวกัน และความยาวต่างกัน

ในขั้นตอนที่ 0 วัตถุของคลาสStіnіจะถูกสร้างขึ้นซึ่งกำหนดพารามิเตอร์ขององค์ประกอบ K0

ในขั้นตอนที่ 10 การกำหนดพารามิเตอร์ขององค์ประกอบ K0 จะเสร็จสมบูรณ์ และสร้างอ็อบเจ็กต์ 1 ของคลาส CRORGn ซึ่งใช้ฟังก์ชันของออบเจ็กต์ที่สร้างไว้ก่อนหน้านี้เพื่อกำหนดพารามิเตอร์ขององค์ประกอบ K1 ในขั้นตอนที่ 19 คำจำกัดความของพารามิเตอร์ขององค์ประกอบ K1 จะเสร็จสมบูรณ์ และสร้างอ็อบเจ็กต์ 2 ของคลาส CCROGn ซึ่งใช้ฟังก์ชันของออบเจ็กต์ที่สร้างไว้ก่อนหน้านี้เพื่อกำหนดพารามิเตอร์ขององค์ประกอบ K2 ในขั้นตอนที่ 49 การกำหนดพารามิเตอร์ขององค์ประกอบ K2 จะเสร็จสมบูรณ์และสร้างวัตถุ 3 ของคลาส CRORGn ซึ่งใช้ฟังก์ชันของวัตถุที่สร้างไว้ก่อนหน้านี้เพื่อกำหนดพารามิเตอร์ขององค์ประกอบ K3 ในขั้นตอนที่ 79

เงื่อนไขการสิ้นสุด การทำงานของโปรแกรมมีรายละเอียดอยู่ในภาคผนวก

ในส่วน 0-6 องค์ประกอบ b สององค์ประกอบจะสร้างองค์ประกอบ K0 ที่ยังไม่เสร็จ เป็นที่ชัดเจนว่า b -

องค์ประกอบ 3-6 ของความยาว 3 ทำให้ส่วนของเส้นสมบูรณ์ เนื่องจากองค์ประกอบ b 6-7 ของความยาว 1 ไม่สามารถต่อเนื่องกันได้ ดังนั้นองค์ประกอบ b 6-7 จึงเป็นจุดเริ่มต้นของส่วนของสายดิจิทัล

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

การทำงานของโปรแกรมได้รับการทดสอบกับตัวอย่างจำนวนมาก (มากกว่า 2,000 รายการ) และใช้ในการศึกษาการวิเคราะห์โครงสร้างของภาพฮาล์ฟโทน

5. การทำงานของโปรแกรมการรับรู้ส่วนของเส้นตรง

ลองพิจารณาการทำงานของโปรแกรม iEBESM จากตัวอย่างมะเดื่อ 4. ส่วนล่างของภาพแสดงส่วนของเส้นดิจิตอล ซึ่งประกอบด้วยองค์ประกอบ b ของทิศทางหลักและทิศทางเสริมเดียวกัน และความยาวต่างกัน ในส่วน 0-6 สององค์ประกอบ b ก่อให้เกิด K0- ที่ไม่สมบูรณ์

ข้าว. 3. ตัวอย่างการทำงานของโปรแกรมสำหรับการวิเคราะห์โครงสร้างของเส้นชั้นความสูง - การแบ่งส่วนของเส้นชั้นความสูงตามส่วนของเส้นตรงแบบดิจิทัล

องค์ประกอบ. เห็นได้ชัดว่าองค์ประกอบ b 3-6 ของความยาว 3 ทำให้ส่วนของเส้นสมบูรณ์ เนื่องจากองค์ประกอบ b 6-7 ของความยาว 1 ไม่สามารถต่อเนื่องกันได้ ดังนั้นองค์ประกอบ b 6-7 จึงเป็นจุดเริ่มต้นของส่วนของสายดิจิทัล

การทำงานของโปรแกรมเพื่อกำหนดส่วนถัดไปของเส้นตรงเริ่มต้นโดยฟังก์ชัน OK() ของระดับศูนย์ซึ่งกำหนด K0 -element 6-10 ที่เสร็จสมบูรณ์ซึ่งประกอบด้วยองค์ประกอบ b

ความยาว 1,1,2; k0=2. องค์ประกอบ K0 นี้เป็นองค์ประกอบเริ่มต้นสำหรับองค์ประกอบ K1 โปรแกรมสร้างอ็อบเจ็กต์ระดับแรกและโอนการควบคุมไปยังฟังก์ชัน OK() ของอ็อบเจ็กต์นี้ ฟังก์ชัน OK() ของระดับ 1 เรียกใช้ฟังก์ชัน VKQ ของระดับ 0 ฟังก์ชัน VKQ จะเปรียบเทียบพารามิเตอร์ขององค์ประกอบ b ขององค์ประกอบ K0 6-10 กับองค์ประกอบ b ที่ตามมา และยืนยันการมีอยู่ขององค์ประกอบ K0 10-14

เหมือนกับ K0 -องค์ประกอบ 6-10 ต่อไป ฟังก์ชัน VKQ จะตรวจพบว่าองค์ประกอบ b ถัดไปไม่ก่อให้เกิดองค์ประกอบ K0 เดียวกัน ออกและโอนการควบคุมไปยังฟังก์ชัน OK() ระดับ 1 ฟังก์ชัน OK() ระดับ 1 จะเรียกใช้ฟังก์ชัน OE() ระดับ 0 ด้วยองค์ประกอบ b 6-7 กำหนดการปรากฏตัวขององค์ประกอบ K0 ที่แก้ไข 14-19 ซึ่งประกอบด้วยองค์ประกอบ b ที่มีความยาว 1,1,1,2; k0=3 ออกและโอนการควบคุมไปยังฟังก์ชัน OK() ของระดับ 1 ฟังก์ชันนี้กำหนดสถานะขององค์ประกอบ K1 ที่เสร็จสมบูรณ์ 6-19 ซึ่งประกอบด้วย K0 สองตัว -

องค์ประกอบ 1,1,2, (k1=2) และหนึ่งเปลี่ยน 1,1,1,2 (k0=3) โปรแกรมสร้างอ็อบเจ็กต์ระดับที่สองและโอนการควบคุมไปยังฟังก์ชัน OK() ของอ็อบเจ็กต์นี้ ฟังก์ชันระดับ 2 OK() เรียกใช้ฟังก์ชัน VKQ ระดับ 1 ซึ่งจะเรียกใช้ฟังก์ชันระดับ 0 VKQ ฟังก์ชัน VKQ จะเปรียบเทียบองค์ประกอบ b ขององค์ประกอบ K0 6-10 กับค่า b ต่อไปนี้

องค์ประกอบและยืนยันการมีอยู่ขององค์ประกอบ K0 19-23, 23-27 เหมือนกับองค์ประกอบ K0 6-10 นั่นคือหมายเลขเดียวกันกับองค์ประกอบ K0 ดังกล่าวมีอยู่ในองค์ประกอบ K1 6-19 ถัดไป ฟังก์ชัน VKQ ของระดับ 0 จะส่งคืนการควบคุมโดยมีเครื่องหมายแสดงส่วนของฟังก์ชัน VKQ ที่ระดับ 1 ต่อ ฟังก์ชัน VKQ เรียกใช้ฟังก์ชัน VE0 ของระดับ 0 ซึ่งกำหนดสถานะของ K0 ที่เปลี่ยนแปลง -

องค์ประกอบ 27-32 เหมือนกับองค์ประกอบ K0 14-19 ดังนั้น จึงกำหนดองค์ประกอบ K1 19-32

เหมือนกับองค์ประกอบ K1 6-19 นอกจากนี้ ฟังก์ชัน VKQ ระดับ 1 ไม่ได้กำหนดองค์ประกอบ K1 ถัดไป ซึ่งเหมือนกับองค์ประกอบ K1 6-19 เนื่องจากฟังก์ชันระดับ 0 VE0 ไม่ได้กำหนดองค์ประกอบ K1 ที่แก้ไขแล้ว ซึ่งเหมือนกับองค์ประกอบ K1 6-19 โดยเริ่มจากองค์ประกอบ b 40-41 และส่งคืนการควบคุมของฟังก์ชัน OK() ของระดับ 2 ฟังก์ชัน OK() ของระดับ 2 เรียกฟังก์ชัน OE() ของระดับ 1 ซึ่งกำหนดการปรากฏตัวขององค์ประกอบ K1 ที่แก้ไข 32-49 ซึ่งประกอบด้วย องค์ประกอบ K0 32-36, 36- 40,

40-44, 44-49. ถัดไป กำหนดองค์ประกอบ K2 6-49 สร้างวัตถุระดับ 3 กำหนดองค์ประกอบ K2 ที่แก้ไข 49-79 องค์ประกอบ K2 ทั้งสองนี้ก่อให้เกิดองค์ประกอบ K3 6-79 การสร้างส่วนนี้เสร็จสมบูรณ์ เนื่องจากองค์ประกอบ b 79-81 และ 81-83 ต่อไปนี้ไม่สร้างองค์ประกอบ K0

เหมือนกับองค์ประกอบ K0 6-10 และฟังก์ชันระดับ 0 VKQ ไม่สร้างแฟล็กต่อเนื่อง

ส่วน ในลำดับขององค์ประกอบ b ส่วนของเส้นตรงดิจิทัล 6-79 จะถูกเลือก โปรแกรมเริ่มต้นคำจำกัดความของส่วนถัดไปโดยเริ่มจาก b-element 80-82

ข. การค้นพบ

1. มีการเสนออัลกอริธึมใหม่สำหรับการเลือกส่วนของเส้นในรูปทรงของภาพและการใช้งานซอฟต์แวร์ที่ไม่สำคัญของอัลกอริธึม ซึ่งช่วยให้ได้แนวทางแก้ไขปัญหาที่แน่นอนในการจำแนกเส้นขอบของภาพเป็นลำดับของส่วนของเส้นตรง

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

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

บรรณานุกรม

1. Kovalevsky V.A. การประยุกต์ใช้ Digital Straight Segments กับการเข้ารหัสภาพที่ประหยัด ในการดำเนินการของการประชุมเชิงปฏิบัติการนานาชาติครั้งที่ 7, DGCI"97, Montpellier. - ฝรั่งเศส, 1997. - 3-5 ธันวาคม - หน้า 51-62.

2. Kalmykov V.G. วิธีโครงสร้างสำหรับการอธิบายและจำแนกส่วนของเส้นดิจิทัลในรูปทรงของภาพไบนารี // Piece Intellect - 2545. - ลำดับที่ 4 - ค. 450-457.

3. Kalmykov V.G. , Vishnevsky V.V. การวิเคราะห์รูปร่างของวัตถุในภาพไบนารี // เครื่องจักรและระบบทางคณิตศาสตร์ - 1997. - ลำดับที่ 2 - ส. 68 - 71.

4. Kalmikov V.G. ส่วนโค้งของเส้นโค้งดิจิทัล - การกำหนดและความซบเซา // การประมวลผลสัญญาณและการรับรู้ภาพและการรับรู้ภาพ การดำเนินการของการประชุมนานาชาติ All-Ukrainian - เคียฟ - 2004. - 11 - 15 Zhovten.

การกำหนดปัญหากำหนดโดยวัตถุประสงค์และความเป็นไปได้ของการดำเนินการ

เป้า.พัฒนาโปรแกรมจำแนกชิ้นส่วนสี่เหลี่ยมที่มีคุณภาพและชิ้นส่วนที่มีข้อบกพร่อง

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

การสร้างแบบจำลองโดยใช้คอมพิวเตอร์หมายถึงการเปลี่ยนจากวัตถุจริง (โลก) เป็นคำอธิบายคุณสมบัติของวัตถุโดยใช้ข้อมูลและการดำเนินการกับวัตถุ การเปลี่ยนแปลงดังกล่าวตามกฎจะดำเนินการในหลายขั้นตอน:

สิ่งที่เป็นนามธรรม- การเลือกคุณสมบัติที่สำคัญที่สุดของวัตถุในแง่ของงาน

จำเป็นต้องทำการวิจัยที่อนุญาตให้คุณย้ายจากวัตถุแบบจำลองไปยังวัตถุแบบจำลองโดยละทิ้งทุกสิ่งที่ไม่จำเป็นตามเป้าหมายในงาน

สี่เหลี่ยมผืนผ้าแตกต่างจากรูปสี่เหลี่ยมอื่น ๆ อย่างไร?

  • ความเท่าเทียมกันของด้านตรงข้าม
  • ความขนานของด้านตรงข้าม
  • ความเท่าเทียมกันของเส้นทแยงมุม
  • ถูกทุกมุมครับ

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

  • ความเท่าเทียมกันของ 2 ด้านตรงข้าม + ความเสมอภาคของเส้นทแยงมุม
  • ความขนานของ 2 ด้านตรงข้าม + ความเท่ากันของเส้นทแยงมุม
  • สามมุมขวา.

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

วิธีการสำหรับการดำเนินงาน.

ภาพวาดของชิ้นส่วนที่มีคุณภาพ (สี่เหลี่ยมผืนผ้า) หรือชิ้นส่วนที่มีข้อบกพร่อง (quadrangle) สร้างขึ้นจากกลุ่ม (คำสั่ง LINE) ในระบบกราฟิก AutoCAD และส่งออกไปยังไฟล์ . โปรแกรม kntrs.lsp() อ่านข้อมูลส่วนของเส้น (พิกัดจุดยอด) จากไฟล์ DXF และเขียนลงในไฟล์ข้อความ vrtks.txt ตามลำดับแบบวนซ้ำ

ไฟล์ข้อความ vrtks.txt สามารถสร้างได้ด้วยตนเองโดยใช้พิกัดของจุดยอดโดยตรงจากภาพวาด

โปรแกรม rct.lsp ที่พัฒนาขึ้นควรอ่านข้อมูลจากไฟล์ vrtks.txt วิเคราะห์ และส่งออกไปยังไฟล์ result.txt บันทึกเกี่ยวกับการปฏิบัติตามข้อกำหนดของชิ้นส่วน (สี่เหลี่ยมผืนผ้าหรือไม่)

การทำให้เป็นทางการของคุณสมบัติ

ความเท่าเทียมกันของความยาวของส่วน (ด้านหรือเส้นทแยงมุม): ความยาวของแต่ละส่วนถูกกำหนดเป็นด้านตรงข้ามมุมฉากของสี่เหลี่ยมผืนผ้ารูปสี่เหลี่ยมผืนผ้า (ตามทฤษฎีบทพีทาโกรัส) ผ่านความแตกต่างในพิกัดของส่วนต่างๆ:

(setq DX12 (abs (- X1 X2))) (setq DY12 (abs (- Y1 Y2))) (setq DA1 (sqrt (+ (* DX12 DX12) (* DY12 DY12))))

เส้นขนาน: K2= K1, ที่ไหน ถึงคือความชันของเส้นตรง K=(Y2-Y1)/(X2-X1)

จะทำให้แนวคิดของ "Right Angle" เป็นทางการได้อย่างไร? ในส่วนของงาน การมีอยู่ของ " มุมฉาก» สามารถกำหนดได้บนพื้นฐานของความตั้งฉากของเซ็กเมนต์: K2= -1/K1, ที่ไหน ถึงคือความชันของเส้นตรง K=(Y-Y0)/(X-X0).

การแสดงรุ่นบนคอมพิวเตอร์

ข้อมูลใด ๆ จะปรากฏในคอมพิวเตอร์โดยใช้เลขฐานสอง (รหัส) ในรูปแบบเครื่องภายใน ก่อนหน้านี้การเขียนโปรแกรมทำโดยโปรแกรมเมอร์ ตอนนี้โปรแกรมส่วนใหญ่ถูกสร้างขึ้นในภาษาอัลกอริธึม

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

ยิ่งกว่านั้น หากคุณเข้าใกล้หน้าจอของจอคอมพิวเตอร์ คุณจะเห็นว่าภาพบนหน้าจอนั้นไม่ราบรื่นและต่อเนื่องกัน แต่เป็น “โมเสค” ที่ไม่ต่อเนื่องซึ่งประกอบด้วยสี่เหลี่ยมสีต่างๆ ที่จัดเรียงในเมทริกซ์สี่เหลี่ยมปกติ นี่คือภาพดิจิทัล จากมุมมองทางคณิตศาสตร์ ภาพดิจิตอลเป็นเมทริกซ์สองมิติ Im ของขนาด (DimXDimY) โดยที่ x เป็นจำนวนเต็มตั้งแต่ 0 ถึง DimX– 1 ซึ่งอธิบายหมายเลของค์ประกอบในแถวเมทริกซ์ y เป็นจำนวนเต็มตั้งแต่ 0 ถึง DimY– 1 ซึ่งอธิบายแถว จำนวนของเมทริกซ์ที่องค์ประกอบนี้ตั้งอยู่ ในเวลาเดียวกัน องค์ประกอบของภาพดิจิทัลเอง (เซลล์ของเมทริกซ์สี่เหลี่ยม) เรียกว่า พิกเซล(พิกเซล,องค์ประกอบภาพ). ในกรณีที่ง่ายที่สุด Im แต่ละพิกเซลมีค่าจำนวนเต็มสเกลาร์ตามสัดส่วนกับค่าของฟังก์ชันการกระจายความสว่าง (x, y) ณ จุดที่กำหนดในเครื่องบิน

ในรูป ในรูปที่ 1.1.1 ด้านซ้ายแสดงรูปภาพของใบหน้าเพศหญิงที่แสดงเป็นรูปภาพ และด้านขวาจะแสดงส่วนของรูปภาพที่ขยายใหญ่ขึ้นของใบหน้าเดียวกัน (ตาขวา) โดยที่แต่ละองค์ประกอบของรูปภาพมีค่าพิกเซลที่เป็นตัวเลขที่สอดคล้องกัน องค์ประกอบแสงของภาพสอดคล้องกับ b เกี่ยวกับค่าเมทริกซ์ที่มากขึ้น ค่ามืด – ค่าที่น้อยกว่า ภาพดิจิทัลไม่มีข้อมูลอื่นใด

@ข้าว. 1.1.1 ภาพดิจิทัลเป็นเมทริกซ์ความเข้มสองมิติ

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

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

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

ในที่สุด เพื่อโน้มน้าวตัวเราเองถึงความซับซ้อนของงานวิเคราะห์รูปภาพที่เป็นอาร์เรย์ข้อมูลตัวเลขสองมิติ เราจะพยายามแทนที่โปรแกรมคอมพิวเตอร์ที่เกี่ยวข้องกับตัวเลขที่เป็นนามธรรม ในการทำเช่นนี้ให้เปลี่ยนรูปแบบการรับรู้ของภาพ - เราจะถ่ายโอนจากพื้นที่ที่มองเห็นไปยังส่วนที่สัมผัสได้ ลองนึกภาพอาเรย์แบบสองมิติของค่าความเข้มเป็นกระดานหมากรุกซึ่งมีขนาดเท่ากับขนาดของภาพ (DimXDimY) และคอลัมน์จะติดอยู่ตรงกลางแต่ละเซลล์ซึ่งมีความสูง เป็นสัดส่วนกับค่าพิกเซลของภาพที่เกี่ยวข้อง กล่าวอีกนัยหนึ่ง ให้พิจารณาภาพสองมิติเป็นพื้นผิวสามมิติแบบมีเงื่อนไข ในรูป 1.1.2 ทางด้านซ้าย ส่วนของใบหน้าผู้หญิงจะแสดงเป็นรูปภาพ และด้านขวาจะแสดงเป็นรูปนูนสามมิติหลอก

@ข้าว. 1.1.2. ภาพดิจิตอลเป็นภาพสามมิติหลอก

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