რასტერული გამოსახულებები ჰგავს ორგანზომილებიან მონაცემთა მასივებს. სურათების რასტერული გამოსახულებები, როგორც ორგანზომილებიანი მონაცემთა მასივი ალგორითმები სურათებში შაბლონების ამოცნობისთვის

UDC 004932: 621.396

თ.მ. ვლასოვა, ვ.გ. კალმიკოვი

ალგორითმი და პროგრამა გამოსახულებებში კონტურების ამოცნობის, როგორც ციფრული სწორი ხედვის თანმიმდევრობისთვის

რეზიუმე: მოცემულ ნაშრომში განხილულია ორობითი გამოსახულებების კონტურებში ციფრული პირდაპირი ხაზის სეგმენტის ამოცნობის ალგორითმი და ალგორითმის პროგრამული დანერგვა. ამ ალგორითმის გამოყენება სურათების დასამუშავებლად გამოიწვევს უფრო ბუნებრივ და ეკონომიურ აღწერას სურათების აღწერის ცნობილ გზებთან შედარებით. განხილული ალგორითმი და პროგრამული უზრუნველყოფის დანერგვა ასევე შეიძლება გამოყენებულ იქნას კონტურების აღწერისთვის ნახევრად ტონალური და ფერადი სურათების დამუშავებისას.

საკვანძო სიტყვები: გამოსახულება, კონტური, ციფრული სწორი სეგმენტები, ალგორითმი, პროგრამა.

რეზიუმე: ეს ნამუშევარი შეიმუშავებს ალგორითმს ციფრული ხაზების სეგმენტების ამოცნობისთვის ბინარული დანაზოგების კონტურებში, ასევე ალგორითმის პროგრამული დანერგვისთვის. ამ ალგორითმის გამოყენება გამოსახულების დასამუშავებლად უზრუნველყოფს, რომ დანაზოგის აღწერა უფრო ბუნებრივი და ეკონომიური იქნება გამოსახულების კოდირების ტიპზე დაყრდნობით. დადგენილი ალგორითმი და პროგრამული უზრუნველყოფის დანერგვა შეიძლება გაერთიანდეს კონტურების კოდირებისთვის, ტონისა და ფერის დაზოგვის დროს. საკვანძო სიტყვები: გამოსახულება, კონტური, ციფრული ხაზების მონაკვეთები, ალგორითმი, პროგრამა.

რეზიუმე: ეს ნაშრომი განიხილავს ციფრული ხაზების სეგმენტების ამოცნობის ალგორითმს ბინარული გამოსახულების კონტურებში და ალგორითმის პროგრამის განხორციელებას. სურათის დამუშავებისას შესაბამისი ალგორითმი მცირდება უფრო ბუნებრივ და ეკონომიურზე, გამოსახულების აღწერისთვის ნაცნობი მეთოდების გამოყენებით. განხილული ალგორითმი და პროგრამული უზრუნველყოფის განხორციელება ასევე შეიძლება გამოყენებულ იქნას კონტურების აღსაწერად მონოტონური და ფერადი სურათების დამუშავებისას. საკვანძო სიტყვები: გამოსახულება, კონტური, ციფრული ხაზების მონაკვეთები, ალგორითმი, პროგრამა.

1. შესავალი

კონტურების სტრუქტურული ანალიზი, რომელიც ასახავს სწორი ხაზების თანმიმდევრობას და მრუდის რკალებს, არის ერთ-ერთი მთავარი ამოცანა ხელოვნური ინტელექტის სისტემებში მათი ინტერპრეტაციის მეთოდის გამოყენებით სურათების დამუშავებისას.

უმეტეს შემთხვევაში, გამოსახულება ჩანს, როგორც ზედაპირის ნაწილი, დაყოფილია უბნებად კანონის მიხედვით მუდმივი ან ცვლადი პარამეტრებით, მაგალითად, ოპტიკური სიძლიერე, ფერი, ტექსტურა, რაც მიუთითებს გამოსახულების ფონსა და ობიექტებზე. კანის უხილავი ძალა ამ ადგილებში მოიცავს საზღვრებს, ისე, რომ კონტური არის უბრალოდ დაკავშირებული თანმიმდევრობა, რომელიც შედგება სწორი ხაზებისა და მოხრილი რკალებისგან. რასტრული სურათების დამუშავებისას აშკარად ჩანს ობიექტების კონტურები. თუმცა, ობიექტების კონტურები, რომლებიც წარმოდგენილია როგორც მიმდებარე, მოსაზღვრე პიქსელების კრებული, ნაკლებად გამოსადეგია შემდგომი დამუშავებისთვის, რადგან ისინი საკმარისად არ განსაზღვრავენ მათ გეომეტრიულ არსს.

გამოსახულების კონტურების ამოცნობა სწორი ნაჭრების თანმიმდევრობის დათვალიერებით შეიძლება იყოს ერთ-ერთი მთავარი ამოცანა რასტრული გამოსახულების დამუშავების პროცესში. სწორი ჭრის თანმიმდევრობის ხედში კონტურის გარეგნობის დაზუსტების გამოსავალი საშუალებას გაძლევთ ამოიღოთ სურათის აღწერა კომპაქტური ხედით, ბუნებრივი ადამიანის გაგებისთვის, უცვლელი აფინური ტრანსფორმაციებით, ხელით, ვიზუალურად, ნერვულ დამუშავებისთვის. ქსელები. სწორი ჭრილები კონტურის ძირითადი ელემენტებია. მრუდის რკალი ასევე ხშირად იცვლება მასში ჩაწერილი ლამინირებული ხაზით, როგორც მათემატიკური ანალიზის ძირითად პრინციპებში, ასევე ბევრ პრაქტიკულ სიტუაციაში.

რობოტში გამოყენებული სხვადასხვა მეთოდები და ალგორითმები საშუალებას აძლევს ადამიანს იპოვოთ უფრო მჭიდრო გადაწყვეტილებები, რაც არ არის შესაფერისი ყველა აპლიკაციისთვის.

ეს რობოტი ცნობს ორობითი გამოსახულების კონტურს, როგორც ციფრული ხაზების სეგმენტების თანმიმდევრობას ინფორმაციის დაკარგვის გარეშე.

2. კონტური, როგორც ციფრული ხაზების სეგმენტების თანმიმდევრობა

ეს განყოფილება განიხილავს ციფრული ხაზების სეგმენტების თანმიმდევრობის ამსახველი კონტურების სტრუქტურულ ანალიზს, რაც წარმოადგენს გამომავალ მონაცემს კონტურის ციფრული მრუდების რკალებად და ციფრული ხაზების სეგმენტებად დაყოფისთვის.

ორობითი გამოსახულებების დათვალიერებით, რომელთა ობიექტები, როგორც ჩანს, გარშემორტყმულია მათი კონტურებით. ციფრული მრუდების რკალი, ისევე როგორც ციფრული სწორი ხაზების სეგმენტები, იქმნება გამოსახულების შერჩევის დროს, რათა შეცვალოს სწორი ხაზების სეგმენტებითა და მრუდების რკალებით შექმნილი კონტურები.

ტრანსფორმაციის პროცესში გამოიყენება სწორი ხაზებისა და მრუდე რკალების დამახასიათებელი ნიშნები. ნიმუშის სურათის საკმარისი გაუმჯობესებით დათვალიერებისას, ხშირად მნიშვნელოვანია სწორი ხაზების სეგმენტების და მრუდების რკალების თანმიმდევრობით ამოცნობა.

ვერტიკალური და ჰორიზონტალური ჭრილები. დამატებითი სირთულეები წარმოიქმნება მათში დამუშავებისას, ვისი კონტურის ხაზები - მათემატიკური ხაზები აურზაურის გარეშე - ნაჩვენებია მონიტორის ეკრანზე, როგორც პიქსელების ბლანტი თანმიმდევრობა, როგორიცაა ვიზუალური ხაზები, როგორიცაა yut comradeship.

ამ პრობლემის გამორთვის მიზნით, ჩვენ შევხედავთ სურათს, რომელიც გადაღებულია კობიდან დისკრეტიზაციის შედეგად, როგორც ორგანზომილებიან ფიჭურ კომპლექსს. ასეთ სიტუაციაში

პიქსელები ამ უჯრედის კომპლექსის ორგანზომილებიანი ელემენტებია. პიქსელების, ბზარების და წერტილების კრემი. კრეკ-ცე

პიქსელების მხარე, რომლებიც ერთგანზომილებიანი ელემენტებია. წერტილები არის ბზარების ბოლო წერტილები და პიქსელების კუთხის წერტილები. წერტილები ნულოვანი განზომილებიანი ელემენტებია. Ისე

ამიტომ, ამ შემთხვევაში, ობიექტის კონტური დაკავშირებულია კონტურის კიდეების დახურული თანმიმდევრობით, რომელიც ესაზღვრება ობიექტის პიქსელებს და ფონის. კონტური შეიძლება შეფასდეს, როგორც წერტილების მთელი რიცხვის კოორდინატების თანმიმდევრობა,

ესაზღვრება კონტურული ბზარები. როგორც ნაჩვენებია, ნაჩვენებია გამოსახულების სიბრტყე

კლინიფორმულ კომპლექსს უამრავ სარგებელს აძლევს. ზოკრემა, უბნებს შორის ხდება თხელი მრუდი ნულოვანი ფართობით.

ნახ. 1 ჩვენ მივუთითებთ ობიექტის გამომავალი კონტურის კონდახს, რომელიც შექმნილია რკალის მრუდით და მკვეთრი სწორი ხაზით, ასევე მის ციფრულ ეკვივალენტს, როგორც მრუდების თანმიმდევრობას. არის დანომრილი წერტილები, სადაც სხვადასხვა სწორი ხაზები დევს. როგორც რობოტებში, b -ელემენტის ქვეშ გავიგებთ კავშირს ერთი და იგივე სწორი ხაზის ბზარების უწყვეტობას შორის, რომელიც მოდის ნებისმიერი წერტილიდან და მთავრდება იმავე ან პერპენდიკულარული სწორი ხაზის ბზარით. ნახ. 1-ზე ნაჩვენებია წრედის ერთ-ერთი შესაძლო გაყოფა L-ელემენტებზე, რომელიც ქმნის ბზარს წერტილებს შორის: (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). კოჟენ ბ-ელემენტს ახასიათებს შემდეგი პარამეტრები: პირდაპირ კობ წერტილამდე g (მიღებული g = 0 - ზევით მიმართულებისთვის, 1 - მარჯვნივ, 2 - ქვემოთ, 3 - მარცხნივ); l - სწორი ხაზების რაოდენობა g (! = 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.

წრედის მახლობლად ციფრული სწორი ხაზების მონაკვეთების ნახვის მეთოდი ეფუძნება L- ელემენტების თანმიმდევრობის ძალას, რომლებიც ქმნიან მონაკვეთებს. ეს თანმიმდევრობა მოიცავს b - ელემენტებს იგივე მნიშვნელობებით g, q; მათი დოვჟინები იღებენ ღირებულებებს!, +1. რატომ

b-ელემენტების ნახაზი dovzhin!, +1 მიეთითება Lanczug წილადით, მიღებული მთელი რიცხვების გაყოფით n = Ax = | x1 - x2 | i t = Ау = | y1 - y2\, de (x1zy1), (x2, y2) - cob კოორდინატები

და ჭრის ბოლო წერტილი: ან

მნიშვნელობისთვის აუცილებელია, რომ p> t. როგორც (1) ფორმულიდან ჩანს, l - მთელი ნაწილი p გაყოფიდან t-ზე - ციფრული სწორი ხაზის მონაკვეთზე ჩნდება იმდენივე l, რამდენიც l ერთი წრფის ჯვრების შემდეგ. ხაზი. ერთად დავწექით პერპენდიკულარული ბზარით, რათა შევქმნათ სუნი b - დოვჟინის ელემენტი!. k1 დოჟინის b ელემენტების შემდეგ l і დოჟინის ერთი b ელემენტი! +1 (ან k1 b- ელემენტების შემდეგ +1 და ერთი b-ელემენტი dovzhin!) შექმენით K1-ელემენტი "dovzhin" k1 (ანალოგიით b-ელემენტების "dovzhin"). b-ელემენტს, რომელიც გაზრდილია 1-ით b- ელემენტების შემდეგ, დაერქმევა ამ K1 ელემენტის ურთიერთშემცვლელი b ელემენტი. ანალოგიურად, k2 შემდეგ K1 - ელემენტები "dovzhin" k1 და ერთი K1 - ელემენტი "dovzhin" k1 +1 (ან k2 შემდეგ K1 - ელემენტები "dovzhin" k1 +1 და ერთი K1 -ელემენტი "dovzhin" k1) ქმნის. K2 ელემენტი "dovzhin" "k1. დიახ

+ დან 2 + მდე з + ... + კგ

მისცა მანამ, სანამ ლანციუგის გასროლის წევრები არ მოიხსნებოდნენ. K1 -ელემენტი (vzagali K1 -Element), რომელიც K1 -ელემენტების შემდეგ 1 ტიპით არის გაზრდილი (Kg-1 -Element), დაერქმევა შეცვლილი K1 -ელემენტით (Kg-1 -ელემენტი) მოცემული K2 -ელემენტით (Kg). - ელემენტი). ამგვარად, ყოველი

ციფრული ჭრილი პირდაპირ წააგავს ლანკუგის მარცვალს, რომლის ელემენტებიც მიუთითებს ამ ჭრის სტრუქტურაზე.

კონტურზე ნახ. 1 შეგიძლიათ ნახოთ ციფრული პირდაპირი ხაზების მიმდინარე სექციები: 0-3, 3-9, 910, 10-17, 17-0.

3. ციფრული ამონაწერების ხილვადობა პირდაპირ წრეში

კონტურების, გვერდიგვერდ გამოსახულების, ორობითი გამოსახულებების შერჩევისას, ბზარების თანმიმდევრობაში, რომლებიც ქმნიან კონტურს, საჭიროა დავინახოთ მიმდევრობის ის ნაწილები, რომლებიც ქმნიან სწორ ჭრილებს. ეს დავალება შეიძლება ჩაითვალოს, როგორც ლანციუგის წილადის ელემენტების მინიჭების ამოცანა კონტურის L- ელემენტების თანმიმდევრობის მიხედვით. ეს მოცემულია ლანკუგის ფრაქციის წევრების თანმიმდევრობის მიხედვით სწორი ჭრის სტრუქტურის დადგენის ამოცანასთან დაკავშირებით, რომელიც ეფუძნება კუბის კოორდინატებსა და ჭრის ბოლოს შორის ურთიერთობას.

ვიდეო კლიპების ციფრულად ნახვის მეთოდი პირდაპირ ვითარდება შემდეგი ნაბიჯების თანმიმდევრული დასკვნის დროს.

1. L- ელემენტების თანმიმდევრობის დანახვა ბზარების მიმდევრობაში. ეს ქმედება აჩვენებს მთელი ნაწილის მნიშვნელობას! ლანცეტის გასროლა (1).

2. Kg ელემენტების თანმიმდევრობის დანახვა r = 1-ით L- ელემენტების თანმიმდევრობით და კანის ერთ-ერთი L-ელემენტის K1 ელემენტი პასუხისმგებელია სხვებზე 1-ით მეტი ან ნაკლების ტარებაზე. ეს მოქმედება ადასტურებს ლანციუმის გასროლის 1 ელემენტის მნიშვნელობას (1). მისი გარდაცვალების შემდეგ დანაშაულის ღირებულება 1-ით გაიზარდა.

3. კგ-ელემენტების თანმიმდევრობის დანახვა კგ-1 ელემენტების მიმდევრობაში,

უფრო მეტიც, კანის კგ-ელემენტის ერთ-ერთი კგ-1 ელემენტი პასუხისმგებელია ერთ K-2 ელემენტზე მეტ-ნაკლებად, ვიდრე სხვები. ეს ქმედება ადასტურებს მნიშვნელობას ლანცეტის ფრაქციის (1) მდე ელემენტამდე. მესამე ელემენტის შემდეგ მნიშვნელობა გაიზრდება 1-ით.

4. მე-3 პუნქტი მეორდება მანამ, სანამ ჯერ კიდევ არ იქნება შესაძლებელი კგ-ელემენტების რიგზე გადასვლა

უტვორიტი კმ -ელემენტი.

5. დაადგინეთ სასაზღვრო წერტილები ორ მეზობელ b-ელემენტს შორის, რომლებიც არ არიან ერთი და იგივე კგ-ელემენტის ნაწილი. ეს წერტილები არის ციფრული ხაზების მონაკვეთების ბოლო წერტილები, რომლებიც ქმნიან კონტურს.

მოდით შევხედოთ სექციების ნახვის ალგორითმს პირდაპირ L- ელემენტების თანმიმდევრობით

ნეჰაი [b5 (/ 5, gs, qs)); 5 = 0.1, ..., £ - L- ელემენტების თანმიმდევრობა, რომლებიც ქმნიან კონტურს; x5, y5 - e-th b ელემენტის cob-ის კოორდინატები; [Hu, y y); y =; r = 0.1, ...,!; !< £ - множество

წერტილი ბოროტების კონტურზე. ბოროტების წერტილები წარმოადგენს სწორი ხაზების მონაკვეთების ბოლო წერტილებს, რომლებიც ქმნიან კონტურს. ზიანის წერტილების ცოდნა ნიშნავს სწორი ხაზების იდენტიფიცირებას, რომლებიც ქმნიან კონტურს.

გამოკვლეული მონაკვეთების კანს ახასიათებს კგ-ელემენტი, ასევე ლანკუგი

დახვრიტეს. ჭრის ამოცნობის მომენტის დასაწყისში, ლანცეტის ტიპის ფრაქციის პირდაპირი ელემენტია დონე 0. ჭრის ამოცნობა შესაძლებელია კგ-ელემენტის პარამეტრების ამოცნობით, მისი რიგისა და ელემენტების მნიშვნელობების ჩათვლით. მსგავსი შუბის გასროლა.

1. ყელი.

დააყენეთ თანმიმდევრობა [b5 (/ 5, gs, qs)) და (x5, V5).

აუცილებელია ვიცოდეთ ბოროტების წერტილის კოორდინატები | x;., Y,).

k0r: = 0, k1r: = 0, K2R: = 0, ..., kr: = 0 - Lancium გასროლის ელემენტების სამუშაო მნიშვნელობები.

მოდით მივიღოთ პირველი მოჭრილი წერტილის კობ წერტილში 5 = 0; i = 0; i = 0.

2. აიღეთ პირველი b-ელემენტი თანმიმდევრობით პირველი სწორი ჭრის კობთან ერთად. პოჩატკოვა იოგო წერტილი x5, y. დოვჟინა / = / 0 є ასევე ლანციუმის ფრაქციის პირველი ელემენტის მნიშვნელობები.

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

3. შექმენით წინა ნაწილის მომზადება b-ელემენტით და აღმოფხვრათ სუნი ერთდროულად წინა K0 ელემენტთან ერთად.

3.1. Yakscho ((D3 == d3-1) && (D3 == 73-1) && (4 == / 3-1)), შემდეგ Kg -ელემენტის გაგრძელება k0r: = k0r +1; 5: = 5 + 1; და სწორი ჭრის გაგრძელება. გადადით მე-3 ნაბიჯზე.

3.2. თუ ((D3 f d3-1) || (D3 f 73-1) 11 (| / e - / є-1!> 1)), მაშინ ჭრის დასასრული სწორია. გადადით მე-5 ნაბიჯზე.

3.3. იაკშჩო ((& == 9з + 1) && (% == 7з + 1) && ((/з + 1 == /з + 1) 1! (/З - 1 == / 3 + 1))), შემდეგ დასრულებულია K0 ელემენტით; Ї = Ї + 1.

4. K-ის გაგრძელების/დასრულების შემოწმება (-ელემენტ.

4.1. თუ (to == 0), მაშინ ^ = to ^; cr: = 0; ^ 1p-მდე: = k1 + 1p + 1; 5: = 5 +1; cob კმ-ელემენტი.

გადადით მე-3 ნაბიჯზე.

4.2. თუ ((IF 0-მდე) && (==-მდე ^)), მაშინ ^ 1р: = ^ 1р + 1-მდე; 5: = 5 + 1; Ki + 1 ელემენტის გაგრძელება. გადადით მე-3 ნაბიჯზე.

4.3. თუ ((-მდე (Ф 0) && ((-მდე + 1 == к1р) 11 (К1-1 == ^))), მაშინ Ї: = +1; კმ-ელემენტის დასასრული.

გადადით მე-4 საფეხურზე.

4.4. თუ ((^ f0) && (| to - k1р |> 1)), მაშინ განყოფილების დასასრული არის პირდაპირი გადასვლა მე-5 საფეხურზე.

5. ჭრის დასასრული.

X] = Xs; y = Uz; k1р: = 0, К2Р: = 0,., кір: = 0; to: = 0, k2: = 0,., to: = 0.

იაკშჩო(ები)< S), то s:= s +1; переход к п. 2.

წინააღმდეგ შემთხვევაში - L- ელემენტების თანმიმდევრობის დასასრული. რობოტული ალგორითმის დასასრული.

არსებითად, ალგორითმი გვთავაზობს გაირკვეს Kt -ელემენტით ამოღებული კანისთვის Lancugian ფრაქციის ელემენტები და შეამოწმოს არის თუ არა ახლად აღგზნებული Kt -ელემენტის Lancugian ფრაქცია შესაფერისი უკვე წარმოქმნილისთვის.

4. ვიდეო კლიპის პროგრამა ციფრული პირდაპირი

როგორც ალგორითმის აღწერილობიდან ჩანს, ის შეიცავს გონებრივი გადასვლების მნიშვნელოვან რაოდენობას, რომლებიც აუცილებელია სტრუქტურული პროგრამირების რეკომენდაციების შესასრულებლად კარგად ჩამოყალიბებულ პროგრამებთან დაკავშირებული სირთულეების გამო. გარდა ამისა, Kt პარამეტრების რაოდენობა კულისებშია

ეს ნიშნავს, რომ შეუძლებელია ცვლილების ფრაგმენტები უკანა მხარეს არ იყოს გამოყოფილი. დაურთეთ t მნიშვნელობა

ეს ნიშნავს, რომ შორიდან უნდა განისაზღვროს გამოსახულების ზომები. პროგრამული უზრუნველყოფის დანერგვა, განსაკუთრებით ალგორითმის შემუშავება ტრივიალური გზებით, მნიშვნელოვანი მიზეზების გამო, უკიდურესად რთულია. შესაძლებელია პროგრამული უზრუნველყოფის დანერგვის შემუშავებისა და გაუმჯობესების სირთულის შეცვლა ობიექტზე ორიენტირებული პროგრამირების თანდაყოლილი მახასიათებლების ხაზგასმით.

განხორციელების ალგორითმის წინადადება LINESEGM პროგრამების სახით, რომელიც შედის ლაბორატორიული პროგრამული კომპლექსის საწყობში, ნიმუშის სურათის მიხედვით Visual C ++ გარემოში.

გამომავალი ინფორმაციის შედეგად, LINESEGM პროგრამა აძლიერებს L- ელემენტების თანმიმდევრობას, რომლებიც წარმოიქმნება ნიმუშის გამოსახულების კანის კონტურებისთვის.

რობოტული პროგრამის შედეგია კანის კონტურის ციფრული სწორი ჭრების თანმიმდევრობა, რომელიც წარმოდგენილია ჭრილობის ბოლო წერტილების კოორდინატებით.

როგორც ალგორითმიდან ჩანს, ოპერაციები მოიცავს Kt-ელემენტებს Kt-l-ელემენტებიდან

თუმცა, t-ის მნიშვნელობა ყველასთვის ერთნაირია. მნიშვნელოვანია, რომ საწყისი მნიშვნელობა t = 0 და ალგორითმის მუშაობისას ყოველ ჯერზე იზრდება 1-ით. სპეციალური კლასი CKForLn მოიცავს მეთოდებს, რომლებიც დაკავშირებულია ალგორითმის ოპერაციებთან. პროგრამასთან მუშაობის პროცესში, რომელიც ახორციელებს ალგორითმს, როდესაც კანის t იზრდება 1-ით, იქმნება ახალი ობიექტი, რომელიც შეიცავს ფუნქციებს, რომლებიც ქმნიან ოპერაციებს ალგორითმისთვის კანის t მნიშვნელობისთვის.

თუ გადავხედავთ იმ ფაქტს, რომ ნულოვან დონეზე K0-ელემენტები იქმნება არა Do-ელემენტებისგან, არამედ L-დან.

ელემენტები, ალგორითმის ნულოვან დონეზე განსახორციელებლად, შეიქმნა CKForLn კლასის სპეციალური მოდიფიკაცია - Cmini კლასი.

პროგრამის პრინციპია, რომ t მნიშვნელობისთვის, პროგრამა ახორციელებს t დონის CKForLn კლასის ობიექტს, რომელიც შეიცავს ფუნქციებს, რომლებიც განსაზღვრავენ პარამეტრებს Kt ელემენტით. გამომავალი პარამეტრები Kt -element - პარამეტრები უკვე

დასრულებული Kt-l-ელემენტები, რომელთა პარამეტრებს ობიექტი ანიჭებს CKForLn t-1 კლასს

Ოჰ ძვირფასო.

CKForLn კლასის ობიექტები დანერგილია ტვინშტორმინგის სამყაროში და მოთხოვნილება გახდეს დრაფტის დონის ელემენტი გროვდება სპეციალურ დინამიურ მასივში. ნულოვანი დონის ობიექტი იქმნება დაუყოვნებლივ რობოტის პროგრამის დასაწყისში.

დინამიურ მასივში ობიექტების დანერგვა უფრო დიდ სამყაროში შესაძლებელს ხდის არ დაწესდეს საზღვრები გამოსახულების ზომაზე. სურათის ზომა განისაზღვრება მხოლოდ არჩეული კომპიუტერის რესურსებით.

რობოტული პროგრამის აღწერისას გამოყენებული იქნება დასრულებული Kt კონცეფცია -

ელემენტი. დასრულებების კანი Kt -ელემენტი kt Kt-l-ელემენტების ჩასანაცვლებლად და ერთი ცვლილება Kt-l -ელემენტი kt-l ± 1 Kt-2-ელემენტები, დაუმთავრებელი Kt-ელემენტის თითო ქვესექციაში, რომელიც არ ცვლის დაუმთავრებელს. კტ-ელემენტი.

CKForLn კლასი მოიცავს მოწინავე მეთოდებს.

1. მეთოდი DK (), (განსაზღვრეთ K-ელემენტი) - მნიშვნელობა Before-Element.

მნიშვნელობა Kt -Element - ნიშნავს, მნიშვნელობა Kt-1 ელემენტების რაოდენობას, რომლებიც ქმნიან მონაცემებს Kt -Element.

2. მეთოდი VK§, (დაამოწმეთ K-ელემენტი) - გადაამოწმეთ Do-ელემენტის იდენტურობა იმავე დონის K-ელემენტთან, იგივე ფუნქციით, როგორც DK () მეთოდი.

3. მეთოდი DEO, (განსაზღვრეთ K-ელემენტის დასასრული) - დაადგინეთ Do-ელემენტის დასასრული, რათა Kt-ელემენტის მინიჭებისას გაარკვიოთ რა იცვლება Kt-1 -Element. t-1 დონის DE () მეთოდის ფუნქციას უწოდებენ t დონის DK () მეთოდის ფუნქციას.

4. მეთოდი VE (), (დაამოწმეთ Do -ელემენტის დასასრული) - შეამოწმეთ ამ Do -ელემენტის დასასრულის იდენტურობა შეცვლილი Do -ელემენტით, DE () მეთოდის წინა ფუნქციით.

Cmini კლასი მოიცავს იგივე მეთოდებს, რომლებიც იყოფა CKForLn კლასის მეთოდებისგან, რომ Cmini კლასის მეთოდები მოქმედებენ L-ელემენტებზე და აფასებენ ან ამოწმებენ K0 ელემენტებს.

მეთოდები Cmini კლასისთვის

Cmini კლასის მეთოდები ეფუძნება L- ელემენტების თანმიმდევრობის გამომავალ მონაცემებს, რომლებიც წარმოიქმნება ნიმუშის გამოსახულების კანის კონტურებისთვის, დაწყებული L- ელემენტების სერიული ნომრიდან მეთოდის ფუნქციის გამოძახების დროს.

DK მეთოდის ფუნქცია () Cmini კლასში ათანაბრდება კანის L- ელემენტების პარამეტრებს cob L- ელემენტების პარამეტრებთან, სანამ სუნი არ აღმოიფხვრება. იმის გამო, რომ პარამეტრებში განსხვავებებია, DK() ფუნქცია ამოწმებს არის თუ არა K0 ელემენტის დასრულება და დასრულება.

რობოტი. K0 -ელემენტი დასრულებულია და საბოლოოდ ჩანაცვლდება L -ელემენტით, რომლის დარჩენილი ნაწილი იყოფა სხვა L-ელემენტებისგან K0 -ელემენტით 1-ზე (ოპერაცია 3.1 საჭრელი კუბისთვის - t = 0) .

VK () მეთოდის ფუნქცია ამოწმებს, შეესაბამება თუ არა წინა k0 L- ელემენტების პარამეტრები K0 -ელემენტის L ელემენტების პარამეტრებს, რომლებიც ადრე მინიჭებული იყო DK () მეთოდისთვის ფუნქციისთვის.

იგივე თანაბარი. ხანდახან, წინა ხაზზე K0 ელემენტის პარამეტრები

შემდეგ ფუნქცია VK () აყალიბებს ნიშანს ჭრის გასაგრძელებლად და ასრულებს სამუშაოს (ოპერაცია 3.1 ჭრის გასაგრძელებლად - t> 0).

წინააღმდეგ შემთხვევაში, VK() ფუნქცია ქმნის შეწყვეტის დასრულების ნიშანს და სრულდება

ფუნქციის DE () მეთოდი ატოლებს ნაკადის Kci-ელემენტის პარამეტრებს K0 -ელემენტის პარამეტრებთან, რომლებიც ადრე იყო მინიჭებული ფუნქციით DK (), რათა დადგინდეს, იცვლება თუ არა ნაკადის K0 -ელემენტი. სხვადასხვა ტიპის სხვა პარამეტრებისთვის, L- ელემენტების რაოდენობა 0-მდეა

შეცვალა K0 -ელემენტით გათანაბრებული K0 -ელემენტით, ადრე ტოლი

ფუნქცია DK (), შეიძლება დაიყოს 1-ზე (ოპერაცია 3.2, 3.3 საბოლოო დასრულებისთვის

cob K0 -ელემენტი vidrezka - t = 0). შედეგი არის შეცვლილი K0 ელემენტის პარამეტრები

vikorystvayutsya მეთოდი VE () კლასი Cmini.

VE () მეთოდის ფუნქცია ატოლებს ნაკადის K0 -ელემენტის პარამეტრებს DE () ფუნქციის მიერ ადრე მინიჭებულ პარამეტრებთან, K0 -ელემენტით შეცვლილი მნიშვნელობად,

სუნის თავიდან ასაცილებლად (ოპერაცია 3.2, 3.3 პროცესის გასაგრძელებლად - t> 0). შედეგი - გაქცევის ან განშორების ნიშანი - გაანალიზებულია CKForLn კლასის VK () მეთოდით.

მეთოდები CKForLn კლასისთვის

მეთოდები ეფუძნება ქვედა დონისთვის განკუთვნილი K-ელემენტების პარამეტრების გამომავალ მონაცემებს. გარდა ამისა, Kt-ელემენტისთვის პარამეტრების მინიჭებისთვის, გამოიყენება პარამეტრები

უკვე გენერირებული Kt-l-ელემენტები.

მეთოდის ფუნქცია DK () ტოლია t კლასის CKForLn მითითებული პარამეტრებით ^ -element იძახებს ფუნქციას VK () ტოლია t-1 კლასის CKForLn, რომელიც ამოწმებს უკვე ღირებული Kt-l -ელემენტის Kt-l რაოდენობას. -ელემენტი იგივე პარამეტრებით ami. ასე რომ, ფუნქცია VK () მეორდება. როდესაც გამეორებების რაოდენობა მეორდება, kt პარამეტრი დაყენებულია.

წინააღმდეგ შემთხვევაში, t დონის ფუნქცია DK () უწოდებს t-1 დონის DE () ფუნქციას, რათა მიაკუთვნოს შეცვლილი Kt-l ელემენტები და დაასრულოს სამუშაო. სამუშაოს დასრულების შემდეგ CKForLn t კლასის ფუნქცია DK () ანიჭებს პარამეტრებს და აყალიბებს დასრულებული ან დაუმთავრებელი Kt ელემენტის ნიშნებს (ოპერაცია 4.1, 4.2 t მიმდინარე მაქსიმალური მნიშვნელობით).

CKForLn კლასის VK() მეთოდის ფუნქცია ამოწმებს, შეესაბამება თუ არა წინა kt Kt-ელემენტების პარამეტრები წინასწარ მინიჭებულ Kt-ელემენტის პარამეტრებს.

ფუნქცია იმავე დონის DK() მეთოდზე. ხანდახან, ხაზში Kt-ელემენტის პარამეტრები

ადრე შეფასებული ფუნქციით DK () Kt - იგივე დონის ელემენტი, ფუნქცია VK ()

აყალიბებს cut-continue ნიშანს და ასრულებს სამუშაოს.

წინააღმდეგ შემთხვევაში, ფუნქცია VK () აყალიბებს შეწყვეტის დასრულების ნიშანს და ასრულებს სამუშაოს (ოპერაცია 4.1,4.2 ნაკადის მნიშვნელობით t მაქსიმუმზე ნაკლები).

Kt -ელემენტი DE0 დონის t მეთოდის ფუნქცია CKForLn კლასისთვის მინიჭებული პარამეტრებით Kt -ელემენტი ნაკადის ტოლი პარამეტრებით Kt -ელემენტი პარამეტრებით Kt -ელემენტი, ადრე მინიჭებული ფუნქციით DK (), გამოთვალოთ რა არის ნაკადი Kt -ელემენტი zm ინონიმი. თანაბარი რაოდენობის სხვა პარამეტრებისთვის, მათი kt-1 მნიშვნელობები, სავარაუდოდ, იყოფა 1-ზე. სხვადასხვა მნიშვნელობებისთვის, გონებრივი ფუნქცია DE () ქმნის ნიშანს, რომელიც შეიცვალა Kt -ელემენტით და

ასრულებს სამუშაოს (ოპერაცია 4.3, 4.4 ტ-ის in-line მაქსიმალური მნიშვნელობით).

CKForLn t კლასის VE () მეთოდის ფუნქცია ატოლებს მომდინარე Kt -ელემენტის პარამეტრებს იმ პარამეტრებთან, რომლებიც ადრე იყო ნანახი ფუნქციის DE () მიერ შეცვლილი Kt -ელემენტით, რათა უზრუნველყოს მათი პარამეტრების მნიშვნელობები. აცილებული.

ზოგჯერ, წინა მხრიდან ხაზოვანი Kt ელემენტის პარამეტრების მნიშვნელობა იზრდება

იგივე დონის შემდეგი ფუნქცია DK () ფუნქცია VK () აყალიბებს ნიშანს პარამეტრის მნიშვნელობებისგან თავის დაღწევისთვის და ასრულებს სამუშაოს (ოპერაცია 4.3,4.4 ნაკადის მნიშვნელობით t მაქსიმუმზე ნაკლები).

დრო-საათის დიაგრამა (ნახ. 2) ასახავს LINESEGM პროგრამის მუშაობას სწორი ხაზის ამოცნობის აპლიკაციაზე. პატარა სურათის ბოლოში არის ციფრული ხაზის ნაწილი, რომელიც შედგება იგივე ძირითადი და დამხმარე მიმართულებების L-ელემენტებისგან და სხვადასხვა დვრილებისგან.

0 შემოქმედების ბოლოს არის Step კლასის ობიექტი, რაც ნიშნავს K0 ელემენტის პარამეტრებს.

მე-10 საფეხურზე სრულდება K0-ელემენტის პარამეტრების მინიჭება და იქმნება 1 კლასის ობიექტი, რომელიც ემსახურება ადრე შექმნილი ობიექტის შემცვლელს K1-ელემენტის პარამეტრების მინიჭებისთვის. მე-19 საფეხურზე სრულდება K1-ელემენტის მიერ პარამეტრების მინიჭება და იქმნება მე-2 კლასის ობიექტი, რომელიც ემსახურება როგორც შემცვლელ ფუნქციას K2-ელემენტის მიერ პარამეტრების მინიჭებისთვის ობიექტების შექმნამდე. 49-ე საფეხურზე სრულდება K2 ელემენტის მიერ პარამეტრების მინიჭება და იქმნება მე-3 კლასის ობიექტი, რომელიც ემსახურება როგორც შემცვლელ ფუნქციას K3 ელემენტის პარამეტრების მინიჭებისთვის ობიექტების შექმნამდე. ამავე croci 79 vikonovatsya

გონებრივი დასრულება. რობოტის პროგრამა დეტალურად არის აღწერილი დანართში.

0-6 სტადიაზე ორი b-ელემენტი წყვეტს K0 ელემენტის არასრულყოფილებას. აშკარაა, რომ ბ -

დოვჟენი 3-ის 3-6 ელემენტი ავსებს სწორ მონაკვეთს, ვინაიდან ბ -დოვჟენი 1-ის 6-7 ელემენტის გაგრძელება შეუძლებელია. ამრიგად, b-ელემენტი 6-7 არის ციფრული სწორი ხაზის დასაწყისი.

ნახ. კონდახის რობოტული პროგრამა 3 ნახვით. ხვეული ისრის ორობითი გამოსახულების კონტური დაყოფილი კვადრატებით სწორ მონაკვეთებად. რობოტული პროგრამის შედეგია სწორი ხაზების და სწორი ხაზების თანმიმდევრობა ციფრული მოსახვევების რკალების დასანახად. ციფრული მრუდების რკალებს შორის ნაჩვენებია დიდი კვადრატები.

პროგრამის მუშაობა დამოწმებულია აპლიკაციების მნიშვნელოვან რაოდენობაზე (2000-ზე მეტი) და დამოწმებულია ნიუტონის სურათების სტრუქტურული ანალიზის შემდეგ.

5. პირდაპირი ფრაგმენტების ამოცნობის პროგრამების მუშაობა

მოდით შევხედოთ IIEBESM პროგრამას ნახ. 4. ბავშვის ქვედა ნაწილში ნაჩვენებია ციფრული ხაზის ნაწილი, რომელიც შედგება ერთი და იგივე ძირითადი და დამხმარე მიმართულებების b-ელემენტებისგან და სხვადასხვა დოვგინისაგან. 0-6 მონაკვეთზე ორი ბ ელემენტი წყვეტს არასრულყოფილებას K0-

Პატარა 3. რობოტული პროგრამის გამოყენება კონტურის სტრუქტურული ანალიზისთვის - კონტურის სეგმენტაცია ციფრული სწორი ხაზების მონაკვეთებში.

ელემენტი. ცხადია, დოვჟინ 3-ის b -ელემენტი 3-6 ასრულებს სწორ მონაკვეთს, რადგან დოჟნი 1-ის b -ელემენტის 6-7 გაგრძელება შეუძლებელია. ამრიგად, b-ელემენტი 6-7 არის ციფრული სწორი ხაზის დასაწყისი.

პროგრამის მუშაობა სწორი ხაზის ნახაზის მონაკვეთის მნიშვნელობის მიხედვით იწყება ნულოვანი დონის OK () ფუნქციით, რაც ნიშნავს K0-ის დასრულებას - ელემენტი 6-10, რომელიც შედგება b- ელემენტებისაგან.

დოვჟინი 1,1,2; to0 = 2. Tsei K0 -ელემენტი არის კობი K1-ელემენტისთვის. პროგრამა ქმნის პირველი დონის ობიექტს და გადასცემს კონტროლს ამ ობიექტის OK() ფუნქციაზე. 1 დონის OK () ფუნქცია უწოდებს 0 დონის VKQ ფუნქციას. VKQ ფუნქცია ატოლებს K0-ელემენტის 6-10-ის b-ელემენტების პარამეტრებს მოწინავე b-ელემენტებთან და ადასტურებს K0-ელემენტის არსებობას. 10-14,

იდენტური K0 ელემენტი 6-10. რობოტის გაგრძელებით, VKQ ფუნქცია აღმოაჩენს, რომ ასეთი b -ელემენტები არ შეიცავს იგივე K0 -ელემენტს, ასრულებს რობოტს და გადასცემს საკონტროლო ფუნქციას OK () დონე 1. OK () დონის 1 ფუნქცია უწოდებს OE ფუნქციას () დონე 0. ეს არის დანარჩენი, დაწყებული b-ელემენტით 6-7, ნიშნავს შეცვლილი K0-ელემენტის არსებობას 14-19, რომელიც იქმნება b-ელემენტებით dovzhin 1,1,1,2; to0 = 3, ასრულებს სამუშაოს და გადასცემს საკონტროლო ფუნქციას OK () 1 დონის. ეს ფუნქცია ნიშნავს დასრულებული K1 ელემენტის არსებობას 6-19, რომელიც არის ორი K0-ის ჯამი

ელემენტები 1,1,2, (k1 = 2) და ერთი შეიცვალა 1,1,1,2 (K0 = 3). პროგრამა ქმნის სხვა დონის ობიექტს და გადასცემს კონტროლს ამ ობიექტის OK () ფუნქციაზე. მე-2 დონის OK () ფუნქცია უწოდებს 1 დონის VKQ ფუნქციას, რომელიც, თავის მხრივ, 0 დონის VKQ ფუნქციას.

ელემენტები და ადასტურებს K0 ელემენტების არსებობას 19-23, 23-27, იდენტურია K0 ელემენტის 6-10, შემდეგ რამდენი ასეთი K0 ელემენტია განთავსებული K1 ელემენტში 6-19. შემდეგი, 0 დონის VKQ ფუნქცია აბრუნებს კონტროლს 1 დონის VKQ ფუნქციის გაგრძელების ნიშნით. VKQ ფუნქცია უწოდებს 0 დონის VE0 ფუნქციას, რაც ნიშნავს შეცვლილი K0-ის არსებობას -

ელემენტი 27-32, K0 ელემენტის იდენტური 14-19. ამ წოდებით, K1-ელემენტი 19-32 არის დანიშნული,

იდენტურია K1 ელემენტის 6-19. გარდა ამისა, 1 დონის VKQ ფუნქცია არ ცვლის K1-ელემენტს, რომელიც იდენტურია K1 ელემენტის 6-19-ის, იმით, რომ 0 დონის VE0 ფუნქცია არ ცვლის K1 ელემენტს, იდენტურია K1 ელემენტისა. 6-19, დაწყებული b -ელემენტიდან 40- 41, და აქცევს მე-2 დონის საკონტროლო ფუნქციას OK (). K1 ელემენტი 32-49, რომელსაც ემატება z 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 და ფუნქცია VKQ დონე 0 არ ქმნის გაგრძელების ნიშანს

ვიდეო. L- ელემენტების თანმიმდევრობა აჩვენებს ციფრულ სწორ მონაკვეთს 6-79. პროგრამა იწყებს შეტევითი განყოფილების დავალებას, დაწყებული b-ელემენტით 80-82.

ბ. ვისნოვკი

1. ახალი ალგორითმი Vidіlennya Vidrizkiv პირდაპირ Zyeni I-ის სქემებში არ არის Realizati პროგრამის არატრივიალური პროგრამა ალგორითმისთვის, იაკი საშუალებას იძლევა უარი თქვას პოსტ-რიზის კონტურის -yak-ის rospіznovannaya-ზე.

2. ალგორითმის პროგრამული დანერგვა კლიპინგების ნახვის პირდაპირ ვიდეოკონანის გამოსახულების კონტურებში, ობიექტზე ორიენტირებული პროგრამირების არსებულ მახასიათებლებზე დაყრდნობით, რამაც შესაძლებელი გახადა არ დაწესდეს აშკარა საზღვრები ამოჭრილი გამოსახულების ზომაზე მაქსიმალურ კორესტანში. გაყინული კომპიუტერის რესურსები.

3. შემოთავაზებული ალგორითმისა და მისი პროგრამული დანერგვის საფუძველზე, მიღებული იქნა თეორიული გადაწყვეტილებები და ჩატარდა ექსპერიმენტები ციფრული მრუდების რკალების ამოცნობაზე და ბინარული გამოსახულების კონტურის სეგმენტაციაზე ციფრული სწორი ხაზებისა და ციფრული მრუდების რკალებად x .

ლიტერატურა

1. კოვალევსკი ვ.ა. ციფრული სწორი სეგმენტების გამოყენება გამოსახულების ეკონომიურ დაშიფვრაში, მე-7 საერთაშორისო სემინარის შრომებში, DGCI "97, მონპელიე. - საფრანგეთი, 1997. - 3-5 დეკემბერი. - გვ. 51-62.

2. კალმიკოვი ვ.გ. ციფრული ხაზების სეგმენტების ამოცნობის სტრუქტურული მეთოდი ბინარული გამოსახულების კონტურებში // ცალი ინტელექტი. - 2002. - No 4. - გვ 450-457.

3. კალმიკოვი ვ.გ., ვიშნევსკი ვ.ვ. ობიექტის კონტურების ანალიზი ბინარულ გამოსახულებებში // მათემატიკური მანქანებისა და სისტემების ამოცანების ინსტიტუტი. - 1997. - No 2. - გვ 68 - 71.

4. კალმიკოვი ვ.გ. ციფრული მრუდის რკალი არის მნიშვნელობა და! Zastosuvannya // სიგნალების შეგროვება და დანაზოგი და სურათების ამოცნობა. ამ სრულიად უკრაინული საერთაშორისო კონფერენციის მასალები. - კიევი. - 2004. - 11 - 15 ჟოვტენ.

პრობლემის განცხადებაგანისაზღვრება მეთოდით და შესაძლებლობებით და განხორციელებით.

მეტა.შეიმუშავეთ პროგრამა სწორი ფორმის ნაწილების ნათელ და დეფექტებად დაყოფისთვის.

მიზნის განხორციელების შესაძლებლობებიგანისაზღვრება კომპიუტერის შესაძლებლობებით. კომპიუტერი შექმნილია რიცხვითი ინფორმაციის ალგორითმული თანმიმდევრობით დასამუშავებლად. კომპიუტერის შესაძლებლობების გასაცნობად, საჭიროა მოგვარებული პრობლემის მოდელირება.

კომპიუტერიდან მოდელირება შეიძლება მოიცავდეს გადასვლას რეალური ობიექტიდან (სამყაროდან) მისი ძალაუფლების კოდირებულ აღწერაზე დამატებითი მონაცემებისა და მათზე ოპერაციებისთვის. ასეთი გადასვლა, როგორც წესი, შედგება რამდენიმე ეტაპისგან:

აბსტრაქცია- ამოცანის თვალსაზრისით ობიექტის უმაღლესი მნიშვნელობის ნიშნის შერჩევა.

აუცილებელია ჩატარდეს გამოკვლევები, რომლებიც საშუალებას მოგცემთ გადახვიდეთ მოდელირების ობიექტიდან სამოდელო საგანზე, დაამატოთ ყველა აპლიკაცია დაკისრებული დავალების შესაბამისად.

რით განსხვავდება ორთოკანური სახეობა სხვა კანქვეშა სახეობებისგან?

  • საპირისპირო მხარეების ეჭვიანობა.
  • საპირისპირო მხარეების პარალელიზმი.
  • დიაგონალების ტოლობა.
  • ყველაფერი სწორია.

რა არის მინიმალური ნიშანი, რომელიც საჭიროა ცალსახა დადასტურებისთვის?

  • 2 გვერდის თანაბარობა + დიაგონალების თანასწორობა.
  • 2 გვერდის პარალელიზმი + ტოლი დიაგონალები.
  • სამი პირდაპირი მილი.

ისე, ყველა აბსტრაქციამ წაართვა ვერბალური ინფორმაციის მოდელი. ალე, ის ჯერ კიდევ ძალიან ახალგაზრდაა კომპიუტერისთვის. ეს ნიშნავს მათემატიკურ მოდელს, რომელიც ვიზუალურად არის წარმოდგენილი ალგორითმში და განხორციელებულია პროგრამულად.

დავალების განხორციელების მეთოდოლოგია.

გამჭვირვალე ნაწილი (პირდაპირი საჭრელი) ან დეფექტური ნაწილი (სწორი საჭრელი) იკრიბება AutoCAD-ის გრაფიკულ სისტემაში ჭრილებიდან (LINE ბრძანება) და ექსპორტირებულია მასში. 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)

როგორ მოვახდინოთ "სწორი ჭრის" კონცეფციის ფორმალიზება? მოცემული დავალების ფარგლებში, „პირდაპირი ჭრის“ არსებობა შეიძლება განისაზღვროს ჭრილობების პერპენდიკულარულობის ნიშნით: K2 = -1 / K1, დე მანამდე- ჭრის კოეფიციენტი პირდაპირია. K = (Y-Y0) / (X-X0).

მოდელის ჩვენება კომპიუტერზე

ნებისმიერი ინფორმაცია ბოლო ჩანთაში ნაჩვენებია კომპიუტერზე In-Machine მოდელის ორმაგი ნომრების (კოდების) გამოყენებით. ადრე კოდირებას პროგრამისტი აკეთებდა. დღესდღეობით პროგრამის ძირითადი ნაწილი შექმნილია ალგორითმულ ენებზე.

მინდოდა დამეწერა გრძელი სტატია გამოსახულების ამოცნობის საფუძვლების შესახებ, სახელმძღვანელო ძირითადი მეთოდების შესახებ, რომლებიც გამოავლენენ, როდესაც მათ ერთად აწყობთ, როგორი სუნი არსებობს, რისი გაკეთებაც შეგიძლიათ საღამოს მუხლებზე და რა არის ჯობია არ იფიქრო, დაუფიქრებლად უბრძანე ხალხს 20 წლის ასაკში.

მე დიდი ხანია ვწერ სტატიებს ოპტიკურ ამოცნობაზე, ამიტომ თვეში რამდენჯერმე სხვადასხვა ხალხი მწერს ამ თემაზე. ზოგჯერ ისეთი შეგრძნებაა, თითქოს მათთან ერთად სხვადასხვა სამყაროში ცხოვრობ. ერთის მხრივ, გესმით, რომ ადამიანები ამ თემის უფრო მეტად არიან პროფესიონალები, მაგრამ მათ ძალიან ცოტა იციან ოპტიკური ამოცნობის მეთოდების შესახებ. და რაც მთავარია, ის მიდრეკილია მეთოდის სტაგნაციისკენ ცოდნის მიმდებარე სფეროებიდან, რაც ლოგიკურია, მაგრამ გამოსახულების ამოცნობაში ეს ნამდვილად არ მუშაობს და აზრი არ აქვს და ძლიერად აისახება, როცა იწყებ ამოცნობას - არა. მხოლოდ საფუძვლებიდან. ექიმებს კი ბევრი დრო სჭირდება, რაც ხშირად აკლია, საფუძვლების სწავლას და ეს კიდევ უფრო გიჟდება.

ეს სტატია შექმნილია ისე, რომ ადამიანებს, რომლებსაც არასდროს ჰქონიათ შეხება გამოსახულების ამოცნობის მეთოდებთან, შეუძლიათ 10-15 კვირის განმავლობაში შექმნან თავიანთ თავში სამყაროს ძირითადი სურათი, მსგავსი თემა და გაიგონ ის ყოველგვარი გათხრების გარეშე. . აქ აღწერილია მრავალი მეთოდი, მათ შორის რადარის და აუდიო ნიმუშის აღება.
ნება მომეცით დავიწყოთ რამდენიმე პრინციპით, რომელთა ამოცნობასაც მალე დავიწყებთ პოტენციური ფულის გამსესხებლებისთვის ან ადამიანებისთვის, რომლებსაც სურთ ოპტიკური ამოცნობის კეთება:

  • როდესაც დიდი ამოცანის წინაშე დგახართ, ყოველთვის იარეთ უმარტივესზე. ბევრად უფრო ადვილია ნარინჯისფერი ტეგის დაკიდება ადამიანზე და მიჰყვე მას, ვინც მას კასკადებში ხედავს. გაცილებით მარტივია კამერის გადაღება კომპონენტების ფართო სპექტრით და შემდეგ სუპერ გარჩევადობის ალგორითმის შემუშავება.
  • ასე რომ, პრობლემის ფორმულირება ოპტიკური ამოცნობის მეთოდებში არის მასშტაბების ბრძანებები უფრო მნიშვნელოვანი, ნაკლებად - სისტემური პროგრამირების პრობლემებში: ტექნიკურ სპეციფიკაციაში ერთი სიტყვა შეიძლება დაემატოს სამუშაოს 50%.
  • ამოცნობის ამოცანებს არ გააჩნია უნივერსალური გადაწყვეტილებები. შეუძლებელია ისეთი ალგორითმის შემუშავება, რომელიც უბრალოდ „ამოიცნობს ნებისმიერ ნაწერს“. ქუჩაში ნიშანი და ტექსტის ფურცელი ფუნდამენტურად განსხვავებული ობიექტებია. რა თქმა უნდა, თქვენ შეგიძლიათ განავითაროთ საიდუმლო ალგორითმი (კარგი მაგალითი Google-ისგან), მაგრამ დიდი გუნდის დიდი თანამშრომლების დახმარებით და შედგება ათობით სხვადასხვა ქვეპროგრამისგან.
  • OpenCV არის წიგნი, რომელშიც უამრავი მეთოდია და ამის მიღმა შეგიძლიათ მიიღოთ მთლიანი ღირებულების 50%, მაგრამ OpenCV მხოლოდ მცირე ნაწილია იმისა, რაც რეალურად შეგიძლიათ მიიღოთ. ერთ მოხსენებაში ეწერა: „პრობლემა არ არის შექმნილი OpenCV მეთოდების გამოყენებით, ამიტომ ის გაშიფრავია“. შეეცადეთ ამის გაკეთება ცალსახად, არ დაიზაროთ და ყოველ ჯერზე ზედმიწევნით შეაფასეთ ზუსტი დავალება ნულიდან, OpenCV შაბლონის არეულობის გარეშე.
ძალიან რთულია რაიმე სახის უნივერსალური გადაწყვეტის მიცემა, ან იმის ცოდნა, თუ როგორ შევქმნათ ისეთი სტრუქტურა, რომლის ირგვლივ შესაძლებელი იქნება გადაწყვეტილებების მიღება, რომლებიც დააკმაყოფილებს კომპიუტერის თვალის მოთხოვნებს. ეს სტატიები მეტა სტრუქტურირებაში, რისი ვიკორიზებაც შეიძლება. შევეცდები ეს მეთოდები სამ ჯგუფად დავყო. პირველი ჯგუფი ნიშნავს ფილტრაციას და გამოსახულების მომზადებას. მეორე ჯგუფი არის ფილტრაციის შედეგების ლოგიკური დამუშავება. მესამე ჯგუფი შედგება ალგორითმებისგან, რომლებიც გადაწყვეტილებებს იღებენ ლოგიკური დამუშავების საფუძველზე. ჯგუფებს შორის ისინი კიდევ უფრო ჭკვიანები არიან. წარმატებული ამოცანისთვის ყოველთვის არ არის საჭირო ყველა ჯგუფის მეთოდების შერწყმა; ზოგჯერ ორი საკმარისია, ზოგჯერ კი მხოლოდ ერთი.

სახელმძღვანელო მეთოდების სია აქ არ არის სრული. მე ვთავაზობ კომენტარებში დავამატო კრიტიკული მეთოდები, რომლებიც მე არ დავწერე და თითოეულ ადამიანს მივაკუთვნო 2-3 ზებუნებრივი სიტყვა.

ნაწილი 1. ფილტრაცია

ამ ჯგუფში მე განვათავსე მეთოდები, რომლებიც საშუალებას გაძლევთ იხილოთ გასუფთავებული ადგილები სურათებში მათი ანალიზის გარეშე. ამ მეთოდების უმეტესობა სტაგნაციას განიცდის, რადგან ისინი მიმართავენ ერთ ეფექტს გამოსახულების ყველა წერტილზე. ფილტრაციის დონეზე, გამოსახულების ანალიზი არ ტარდება, მაგრამ წერტილები, რომლებიც გადის ფილტრაციას, შეიძლება ჩაითვალოს განსაკუთრებული მახასიათებლების მქონე უბნებად.
ბინარიზაცია ზღურბლით, ფართობის შერჩევა ჰისტოგრამებით
ძალიან მარტივი ტრანსფორმაცია არის გამოსახულების ბინარიზაცია ზღურბლის მიხედვით. RGB სურათებისთვის და ნაცრისფერი ფერის გამოსახულებებისთვის, ბარიერი იგივეა, რაც ფერის მნიშვნელობა. ჩნდება იდეალური სამუშაო ადგილები, რომლებსაც შეუძლიათ ასეთი ტრანსფორმაცია. მაგალითად, თქვენ ავტომატურად უნდა ნახოთ ობიექტები თეთრ ქაღალდზე:




იმ ზღვრის არჩევა, რომლის მიღმაც ხდება ბინარიზაცია, დიდ კავშირშია თავად ბინარიზაციის პროცესთან. ამ შემთხვევაში, გამოსახულებები ორობითი იყო შუა ფერის უკან. ბინარიზაცია ეფუძნება დამატებით ალგორითმს, რომელიც ადაპტირებულად ირჩევს ბარიერს. ეს ალგორითმი შეიძლება გამოყენებულ იქნას მათემატიკური მოლოდინების ან რეჟიმების შესარჩევად. და თქვენ შეგიძლიათ აირჩიოთ უმაღლესი პიკი ჰისტოგრამების გამოყენებით.

ბინარიზაციას შეუძლია კიდევ უფრო უკეთესი შედეგი მოგვცეს ჰისტოგრამებთან მუშაობისას, მათ შორის ისეთ სიტუაციებში, როდესაც ჩვენ სურათებს ვუყურებთ არა RGB, არამედ HSV. მაგალითად, სეგმენტის და კლანჭების ფერები. ამ პრინციპით შეგიძლიათ გამოიყენოთ როგორც ნიშნის დეტექტორი, ასევე ადამიანის კანის დეტექტორი.
კლასიკური ფილტრაცია: ფურიე, დაბალი გამტარი ფილტრი, მაღალი გამტარი ფილტრი
რადარიდან გაფილტვრის კლასიკური მეთოდები და სიგნალის დამუშავება წარმატებით შეიძლება განხორციელდეს შაბლონის ამოცნობის უპიროვნო ამოცანაში. რადარში ტრადიციული მეთოდი, რომელიც შეიძლება არ იყოს ხილული სუფთა სურათებში, არის ფურიეს ტრანსფორმაცია (უფრო კონკრეტულად, FFT). ერთ-ერთი იმ რამდენიმე პრობლემადან, რომლითაც ხდება ოთხის ერთგანზომილებიანი ტრანსფორმაცია, არის გამოსახულების შეკუმშვა. ერთგანზომილებიანი ტრანსფორმაციის გამოსახულების გასაანალიზებლად არ არის საჭირო უფრო რესურსზე ინტენსიური ორგანზომილებიანი გარდაქმნების გამოყენება.

ცოტა ადამიანი ნამდვილად ანაზღაურებს, ამიტომ უკეთესი და მარტივია უკვე მომზადებული, მაღალი (HPF) ან დაბალი (LPF) სიხშირეზე გამკაცრებული ფილტრის გამოყენება. ეს მეთოდი, რა თქმა უნდა, არ იძლევა სპექტრის ანალიზს, თორემ კონკრეტულ ვიდეოთვალთვალის ამოცანაში საჭიროა არა ანალიზი, არამედ შედეგი.


ფილტრების უმარტივესი აპლიკაციებია ის, რაც აძლიერებს დაბალ სიხშირეებს (გაუსის ფილტრი) და მაღალ სიხშირეებს (გაბორის ფილტრი).
გამოსახულების კანის წერტილისთვის არჩეულია ფანჯარა და მრავლდება იმავე ზომის ფილტრით. ასეთი გორაკის შედეგი წერტილის ახალი მნიშვნელობაა. დაბალი გამტარი ფილტრის და მაღალგამტარი ფილტრის დანერგვისას გამომავალი სურათი იქნება შემდეგი ტიპის:



ტალღოვანი
რა არის საუკეთესო გზა სიგნალის მქონე სიგნალისთვის დამახასიათებელი ფუნქციის გამოსაყენებლად? ამას დაერქმევა "Wavelet-reinvention". ვეილეტების ეს მნიშვნელობა არ არის სწორი, მაგრამ ტრადიციულად იყო, რომ ბევრ ბრძანებაში ტალღის ანალიზს უწოდებენ გამოსახულებაზე შესაფერისი ნიმუშის ძიებას კასეტურის დახმარებით მისი ნიმუშის მოდელით. არსებობს კლასიკური ფუნქციების ერთობლიობა, რომელიც გამოიყენება ტალღის ანალიზში. მათ წინაშე შეიძლება მოისმინოს Haar wavelet, Morley wavelet, მექსიკური capeluch wavelet და ა.შ. გთხოვთ გაითვალისწინოთ Haar, რომლის შესახებაც ჩემი მრავალი წარსული სტატია (,) ეხებოდა ორგანზომილებიანი სივრცის ასეთ ფუნქციებს.


ზოგადად, გამოყენებულია კლასიკური ტალღების 4 კონდახი. 3-განზომილებიანი Haar wavelet, 2-განზომილებიანი Meyer wavelet, მექსიკური Kapelyukh wavelet, Daubechies wavelet. ვეილეტების გაფართოებული ინტერპრეტაციის კარგი მაგალითია ვეილეტის ძიება ots-ში, რისთვისაც ვეილეტი არის თავად ვეილეტი:

კლასიკური ტალღები გამოიყენება გამოსახულების შეკუმშვისთვის, ან მათი კლასიფიკაციისთვის (აღწერილია ქვემოთ).
კორელაცია
ტალღების ასეთი მკაფიო ინტერპრეტაციის შემდეგ, ახლა უკვე შესაძლებელია გამოიცნოთ კორელაცია, რომელიც მათ საფუძვლად უდევს. ფილტრაციისას სურათი შეუცვლელი ინსტრუმენტია. კლასიკური მიდგომა არის ვიდეო ნაკადის კორელაცია დაზიანების ან ოპტიკური ნაკადების გამოსავლენად. უმარტივესი დეტექტორი არის სენსორული კორელატორი. გამოსახულების გამოსახულება არ არის - ბლა ბლა ბლა.

ფილტრაციის ფუნქცია
ფილტრების ეს კლასი არის ფილტრაციის ფუნქცია. ეს არის წმინდა მათემატიკური ფილტრები, რომლებიც საშუალებას გაძლევთ გამოავლინოთ მარტივი მათემატიკური ფუნქცია სურათზე (პირდაპირი, პარაბოლა, წრე). იქნება დაგროვილი გამოსახულებები, რომლებშიც გამომავალი გამოსახულების კანის წერტილი იქნება მონიშნული არაპერსონალური ფუნქციით, რაც გამოიწვევს. ყველაზე კლასიკური ხელახალი ინტერპრეტაცია არის Hough-ის ხელახალი ინტერპრეტაცია სწორი ხაზებისთვის. რისთვისაც კანის წერტილი (x; y) ხელახლა არის შექმნილი, უსახო წერტილი (a; b) დახაზულია პირდაპირ y = ax + b, რომლისთვისაც იგივეა. გამოდით ლამაზი სურათებით:


(პირველი პლიუსი იმისა, ვინც პირველმა იცის მიდგომა სურათზე და ასე მნიშვნელოვანია და ხსნის მას, მეორე პლუსი იმისა, ვინც პირველმა თქვა ის, რაც აქ არის გამოსახული)
Hough-ის რედიზაინი საშუალებას გაძლევთ იპოვოთ ნებისმიერი პარამეტრიზირებადი ფუნქცია. მაგალითად, წრეები. და მოდიფიკაცია შეცვლილია, რაც საშუალებას გაძლევთ ხუმროთ ნებისმიერ ფიგურაზე. ეს ტრანსფორმაცია საშინელია მათემატიკოსებისთვის სიყვარულისთვის. თუ ღერძი გამოსახულია ნიმუშის აღებისას, სამწუხაროა, რომ ის დიდხანს არ იმუშავებს. რობოტის სიჩქარე ძალიან მაღალია, მგრძნობელობა ბინარიზაციის სიმკვეთრის მიმართ ძალიან მაღალია. თუმცა, იდეალურ სიტუაციებში მირჩევნია სხვა მეთოდების გამოყენება.
ჰოფის ხელახალი შექმნის ანალოგი სწორი ხაზებისთვის არის რადონის ხელახალი შექმნა. ის გამოითვლება FFT-ის საშუალებით, რაც იძლევა პროდუქტიულობის ზრდას სიტუაციაში, თუ წერტილი ძალიან მდიდარია. მანამდე, თქვენ შეგიძლიათ სურათების ვიკორიზაცია, სანამ ისინი არ იქნება ბინარიზაცია.
ფილტრაციის სქემები
ფილტრების შემდეგი კლასი არის კორდონების და კონტურების ფილტრაცია. კონტურები კი ყავისფერია, თუ გვინდა გადავიდეთ სურათებთან მუშაობიდან გამოსახულების ობიექტებთან მუშაობაზე. თუ ობიექტი დასაკეცია, მაგრამ აშკარად ჩანს, მაშინ ხშირად მასთან მუშაობის ერთადერთი გზა მისი კონტურების დანახვაა. არსებობს მრავალი ალგორითმი, რომელიც წყვეტს კონტურების ფილტრაციის პრობლემას:

ყველაზე ხშირად გამარჯვებულია თავად კენი, რომელიც კარგად მუშაობს და ახორციელებს OpenCV-ში (სობელიც არის, მაგრამ ჯობია კონტურებს ეძებოს).



სხვა ფილტრები
ზევით მოთავსებულია ფილტრები, რომელთა მოდიფიკაცია ხელს უწყობს შეკვეთის 80-90%-ის მიღწევას. მათ გარდა, არსებობს უფრო იშვიათი ფილტრები, რომლებიც გამოიყენება ადგილობრივ პარამეტრებში. ათობით ასეთი ფილტრია, მე არ ჩამოვთვლი ყველას. ეს მოიცავს განმეორებით ფილტრებს (მაგალითად, ამჟამინდელი გარეგნობის მოდელი აქტიურია), ისევე როგორც თავად რიჯლეტი და მრუდი, კლასიკური ტალღის ფილტრაციისა და ანალიზის კომბინაცია რადონის ტრანსფორმაციის სფეროში. ბიმლეტის ტრანსფორმაცია მშვენივრად მუშაობს ტალღის ტრანსფორმაციისა და ლოგიკური ანალიზის კორდონზე, რაც საშუალებას გაძლევთ ნახოთ კონტურები:

მაგრამ გარდაქმნები კიდევ უფრო სპეციფიკური და გამძაფრებულია იშვიათ პირობებში.

ნაწილი 2. ფილტრაციის შედეგების ლოგიკური დამუშავება

ფილტრაცია უზრუნველყოფს დამუშავებისთვის შესაბამის მონაცემებს. მაგრამ ყველაზე ხშირად შეგიძლიათ უბრალოდ აიღოთ და ინტერპრეტაცია გაუკეთოთ ამ მონაცემებს დამუშავების გარეშე. ამ განყოფილებას ექნება რამდენიმე კლასიკური მეთოდი, რომელიც საშუალებას მოგცემთ გადახვიდეთ სურათიდან ობიექტების ძალაზე, ან თავად ობიექტებზე.
Მორფოლოგია
ფილტრიდან ლოგიკაზე გადასვლა, ჩემი აზრით, არის მათემატიკური მორფოლოგიის მეთოდი (,,). არსებითად, ეს არის ბინარული სურათების ზრდისა და წაშლის უმარტივესი ოპერაციები. ეს მეთოდები საშუალებას გაძლევთ ამოიღოთ ხმაური ბინარული სურათიდან, გაზარდოთ ან შეცვალოთ აშკარა ელემენტები. მათემატიკური მორფოლოგიის საფუძველზე, კონტურის ალგორითმები შეიძლება შემუშავდეს, მაგრამ შეიძლება დაგჭირდეთ რამდენიმე ჰიბრიდული ალგორითმის ან ალგორითმის შესწავლა.
კონტურის ანალიზი
ფილტრაციის განყოფილებამ უკვე გაარკვია კორდონების მოხსნის ალგორითმები. საზღვრები უბრალოდ გადაიქცევა კონტურებად. კენის ალგორითმისთვის ეს ავტომატურად გენერირებულია; სხვა ალგორითმებისთვის საჭიროა დამატებითი ბინარიზაცია. თქვენ შეგიძლიათ დახაზოთ კონტური ბინარული ალგორითმისთვის, მაგალითად, ხოჭოს ალგორითმის გამოყენებით.
კონტური ობიექტის უნიკალური მახასიათებელია. ხშირად ეს საშუალებას გაძლევთ ამოიცნოთ ობიექტი მისი კონტურის მიხედვით. არსებობს ძლიერი მათემატიკური აპარატი, რომელიც საშუალებას გაძლევთ მიიღოთ ფული. მოწყობილობას ეწოდება კონტურის ანალიზი (,).

მართალი გითხრათ, არასოდეს ყოფილა შესაძლებელი კონტურული ანალიზის სტაგნაცია რეალურ პრობლემებში. ჩვენ გვჭირდება იდეალური გონება. თუ კორდონს ვერ იპოვით, მაშინ ძალიან ბევრი ხმაურია. თუ საჭიროა იდეალურ გონებაში ამოცნობა, მაშინ კონტურის ანალიზი მშვენიერი ვარიანტია. ძალიან კარგად მუშაობს, მათემატიკა მშვენიერია და ლოგიკა გასაგებია.
სპეციალური ქულები
ცალკეული წერტილები არის ობიექტის უნიკალური მახასიათებლები, რომლებიც საშუალებას აძლევს ობიექტს დაჯგუფდეს საკუთარ თავთან ან ობიექტთა მსგავს კლასებთან. ასეთი პუნქტების სანახავად ათობით გზა არსებობს. არსებობს რამდენიმე გზა, რომ ნახოთ სპეციალური წერტილები მიმდინარე ჩარჩოებში, მაგალითად, დიდი ხნის შემდეგ და განათების შეცვლისას, რაც საშუალებას გაძლევთ იპოვოთ სპეციალური წერტილები, რომლებიც კარგავენ ასეთ წერტილებს ობიექტის ბრუნვისას. მოდით გადავხედოთ მეთოდებს, რომლებიც საშუალებას გაძლევთ გაარკვიოთ სპეციალური წერტილები, რომლებიც არც თუ ისე სტაბილურია, შემდეგ სწრაფად აღფრთოვანდებით და შემდეგ გადავალთ სირთულის გაზრდაზე:
Პირველი კლასი. აირჩიეთ წერტილები, რომლებიც სტაბილურია წამების განმავლობაში.ასეთი წერტილები გამოიყენება ობიექტის წარმართვისთვის მიმდინარე ვიდეო კადრებს შორის, ან სურათების სანახავად მიმდინარე კამერებიდან. ასეთ წერტილებს შეიძლება დაემატოს გამოსახულების ლოკალური მაქსიმუმი, ლაქები გამოსახულებაზე (დეტექტორებიდან ყველაზე ახლოს, ალბათ ჩარისის დეტექტორი), წერტილები, რომლებზეც მიიღწევა მაქსიმალური დისპერსიის, გრადიენტური ხაზები და ა.შ.
სხვა კლასი. განსაკუთრებით წერტილები, რომლებიც სტაბილურია განათების შეცვლისა და ობიექტში მცირე ცვლილებების დროს.ასეთი წერტილები ძირითადად ემსახურება ობიექტების ტიპების თავდაპირველ და შემდგომ კლასიფიკაციას. მაგალითად, კვარცხლბეკის კლასიფიკატორი ან ინდივიდუალური კლასიფიკატორი არის ასეთ წერტილებში წარმოქმნილი სისტემის პროდუქტი. ადრე გამოცნობილი ტალღების მოქმედებები შეიძლება გახდეს ასეთი წერტილების საფუძველი. მაგალითად, განიხილეთ Haar, მოძებნეთ vidblisks, მოძებნეთ სხვა კონკრეტული ფუნქციები. ასეთ წერტილებში აღმოჩენილია წერტილები წინა გრადიენტების ჰისტოგრამის (HOG) გამოყენებით.
Მესამე კლასი. სტაბილური წერტილები.მე მხოლოდ ორი მეთოდი ვიცი, როგორ მივიღო ახალი სტაბილურობა და მათი მოდიფიკაციები. ეს არის SURF და SIFT. ისინი საშუალებას გაძლევთ იპოვოთ სპეციალური წერტილები გამოსახულების როტაციისას. ასეთი პუნქტების გაფართოება უფრო სწრაფად ხდება, ვიდრე სხვა მეთოდებით, მაგრამ მხოლოდ ერთი საათი სჭირდება. სამწუხაროდ, ეს მეთოდები დაპატენტებულია. თუ გსურთ დააპატენტოთ დაბალტექნოლოგიური ალგორითმები რუსეთში, მისგან მოგება უნდა მიიღოთ შიდა ბაზრისთვის.

ნაწილი 3. Navchannya

მიმოხილვის მესამე ნაწილი დაეთმობა მეთოდებს, რომლებიც პირდაპირ არ მუშაობს სურათებთან, მაგრამ გადაწყვეტილების მიღების საშუალებას იძლევა. ძირითადად, არსებობს მანქანური სწავლისა და გადაწყვეტილების მიღების სერიოზული მეთოდები. Yandix-მა ახლახან დაიწყო კურსი Habré-ზე ამ თემაზე და იქ კარგი არჩევანია. ღერძი ტექსტურ ვერსიაშია. ამ თემის სერიოზული ინტერესისთვის, გირჩევთ, თავად გაოცდეთ მათზე. აქ შევეცდები დავასახელო თავად ვიკორიზაციის რამდენიმე ძირითადი მეთოდი აღიარებულ სურათებში.
სიტუაციების 80% -ში ამოცანის არსი არის არსებული სიტუაციის ამოცნობა:
Є ტესტის შერჩევა, რომელიც შეიცავს ობიექტების უამრავ კლასს. დაე არ იყოს ფოტოზე გამოსახული ადამიანების აშკარაობა/ხილვადობა. კანის გამოსახულებისთვის, თქვენ აკრიფებთ ნიშანს, რომელიც აღიქმება როგორც ნიშანი, იქნება ეს Hara, HOG, SURF თუ სხვა ტალღები. ალგორითმი თავდაპირველად პასუხისმგებელია ასეთი მოდელის შექმნაზე, რათა მან შეძლოს ახალი სურათების ანალიზი და გადაწყვეტილებების მიღება გამოსახულების ობიექტებზე დაყრდნობით.
როგორ უნდა გვეშინოდეს? საცდელი სურათების კანი არის წერტილი ნიშნის სივრცეში. ეს არის კანის ნიშნის კოორდინატები სურათზე. შეიძლება ჩვენი ნიშნები იყოს: „თვალების არსებობა“, „ცხვირის არსებობა“, „ორი ხელის არსებობა“, „ყურების არსებობა“ და ა.შ... ყველა ეს ნიშანი ჩვენთვის ხილულია დეტექტორებით, რომლებიც გვხვდება სხეულის ნაწილებზე, ადამიანის მსგავსი. ასეთ უზარმაზარ სივრცეში მყოფი ადამიანებისთვის ეს წერტილი სწორი იქნებოდა. მავპისთვის, ცხენის ქულა. კლასიფიკატორი იწყება აპლიკაციების შერჩევის შემდეგ. მაგრამ ყველა ფოტოზე არ იყო ხელები, ზოგში თვალები არ იყო, ხოლო მესამეში, კლასიფიკატორის მეშვეობით ადამიანის ცხვირი გამოჩნდა. ის, რომ ადამიანის კლასიფიკატორი ავტომატურად არღვევს გაფართოებულ ნიშანს ისე, რომ იტყვის: თუ პირველი ნიშანი 0.5-ის დიაპაზონშია. არსებითად, მეტა კლასიფიკატორი არის სივრცეში დახატოს იმ ფართობის ნიშანი, რომელიც დამახასიათებელია კლასიფიკაციის ობიექტებისთვის. ასე გამოიყურება ღერძი ერთ-ერთი კლასიფიკატორის (AdaBoost) ხაზთან თანმიმდევრულ სიახლოვეს ორგანზომილებიან სივრცეში:


უკვე ბევრი კლასიფიკატორია. მათი კანი საუკეთესოდ მუშაობს საკუთარ ამოცანაში. კონკრეტული ამოცანისთვის კლასიფიკატორის არჩევის ამოცანას ბევრი მაგია აქვს. რამდენიმე ლამაზი სურათის ღერძი თემაზე.
უბრალო ეპიზოდი, ერთი ამქვეყნიური მარცხი
მოდით შევხედოთ კლასიფიკაციის უმარტივეს ტიპს, თუ ნიშანს გავაგრძელებთ ერთგანზომილებიანად და უნდა გამოვყოთ მე-2 კლასი. სიტუაცია უფრო ხშირად უარესდება, ვიდრე თქვენ წარმოიდგენთ: მაგალითად, როდესაც გჭირდებათ ორი სიგნალის გამოყოფა ან ნიმუშის სიგნალის გასწორება. მოდით, პირველი არჩევნები ჩავატაროთ. როდესაც ეს მოხდება, სურათები მსგავსი იქნება X ღერძის გასწვრივ, ხოლო მსგავსება Y ღერძის გასწვრივ. თუ თქვენ იპოვით თქვენს მსგავს ობიექტს, გამოჩნდება მარცხენა გაუსიანი. თუ მსგავსი არაა, მართალი ხარ. მნიშვნელობა X = 0.4 გამოყოფს ნიმუშებს ისე, რომ ზომიერი გამოსავალი მინიმუმამდე დაიყვანოს არასწორი გადაწყვეტილების მიღების ალბათობაზე. ასეთი გამყოფის ხმა არის კლასიფიკაციის საფუძველი.


პატარა შენიშვნა. შორს არ არის გარკვეული, რომ ოპტიმალური კრიტერიუმი იქნება ის, რაც მინიმუმამდე დააყენებს ჯარიმას. მომავალი გრაფიკი არის ცისარტყელას ჭურვის რეალური ამოცნობის სისტემის გრაფიკი. ასეთი სისტემისთვის არჩეულია კრიტერიუმი, რათა მინიმუმამდე შემცირდეს მესამე მხარის დაწესებულებაში შესვლის ნებართვა. ამ სახის შფოთვას ეწოდება "პირველი სახის შეწყალება", "შეწყალების შფოთვა", "მოწყალების თხოვნა". ინგლისურ ლიტერატურაში “False Access Rate”.
) AdaBusta არის ერთ-ერთი ყველაზე ფართო კლასიფიკატორი. მაგალითად, ჰაარის მოთხოვნილების კასკადი თავისთავად. დაურეკეთ ვიკორისტებს, თუ გჭირდებათ ორობითი კლასიფიკაცია, წინააღმდეგ შემთხვევაში, არაფერ შუაშია კლასების უფრო დიდი რაოდენობის სწავლა.
SVM (,,,) ერთ-ერთი ყველაზე რთული კლასიფიკატორი, რომლის დანერგვა შეუძლებელია. პრინციპში, ნასწავლ ამოცანებში ადაბუსტას ანალოგიურად ვვარჯიშობდი. მნიშვნელოვანია, რომ დაასრულოთ თქვენი სამუშაო სითხეებით, მაგრამ თქვენ უნდა აირჩიოთ სწორი ბირთვი.

ასევე არსებობს ნერვული გაზომვები და რეგრესია. მათი მოკლედ კლასიფიკაციისთვის და იმის საჩვენებლად, როგორ სუნი აქვთ, საჭიროა ბევრად უფრო დიდი სტატია.
________________________________________________
ვიმედოვნებ, რომ შევძელი კვლევის მეთოდების სწრაფად დათვალიერება მათემატიკასა და აღწერაში ჩაძირვის გარეშე. იქნებ ვინმეს დავეხმარო. თუმცა, რა თქმა უნდა, სტატია არ არის სრული და არც ერთი სიტყვა არ არის ნათქვამი სტერეო გამოსახულების მქონე რობოტზე, არც კალმანის ფილტრით LSM-ზე და არც ადაპტირებულ ბაიესიან მიდგომებზე.
თუ სიტუაცია სწორია, მაშინ შევეცდები შევქმნა კიდევ ერთი ნაწილი აპლიკაციების შერჩევით, თუ როგორ მუშაობს ImageRecognition-ის ძირითადი ამოცანები.

І ნაშთებს

რა წავიკითხო?
1) ძალიან მომეწონა ბ.იანის წიგნი „ციფრული გამოსახულების დამუშავება“, რადგან ის წერია მარტივად და გარკვევით, მაგრამ ამავდროულად მას მთელი მათემატიკა გააცნო. კარგია სხვა მეთოდების გასაცნობად.
2) კლასიკური ჟანრი - R. Gonzalez, R. Woods "ციფრული გამოსახულების დამუშავება". ვგრძნობ, რომ თავს უკეთ და უკეთ ვგრძნობ. გაცილებით ნაკლები მათემატიკა, მაგრამ მეტი მეთოდი და სურათი.
3) „კომპიუტერული ხედვის პრობლემებში გამოსახული დამუშავება და ანალიზი“ - დაწერილი ფიზიკური ტექნოლოგიის ერთ-ერთ განყოფილებაში ჩატარებული კურსის საფუძველზე. მე აღვწერ უამრავ მეთოდს და მათ ანგარიშს. თუმცა, ჩემი აზრით, წიგნს ორი დიდი მინუსი აქვს: წიგნი ძლიერად არის ორიენტირებული პროგრამულ პაკეტზე, რომელსაც თან ახლავს; წიგნში მარტივი მეთოდის აღწერა ხშირად გარდაიქმნება მათემატიკურ ბადეებად, რაც ართულებს დახატვას. მეთოდის სტრუქტურული დიაგრამა. შემდეგ ავტორებმა შექმნეს მოსახერხებელი ვებგვერდი, სადაც წარმოდგენილია მთელი მსოფლიო - wiki.technicalvision.ru
4) მე ვფიქრობ, რომ კარგ წიგნს აქვს სტრუქტურა და სამყაროს სურათი, რომელიც მოდის გამოსახულების ამოცნობისა და მანქანათმცოდნეობის შესწავლიდან - ჯეფ ჰოკინსის „ინტელექტის შესახებ“. პირდაპირი მეთოდები არ არსებობს, მაგრამ ბევრი იდეაა მოსაფიქრებელი, ამიტომ დამუშავების პირდაპირი მეთოდები ხელმისაწვდომია. თუ წაიკითხავთ, მიხვდებით, რომ უკვე ისწავლეთ ადამიანის ტვინის მუშაობის მეთოდები, განსაკუთრებით ვიდეოს დამუშავების ამოცანებში.

როდესაც ჩვენ ვხედავთ ორ სამყაროს სურათზე რაიმე ტრივიმირალურ სცენას (ნახატზე, ფოტოზე, მონიტორის ეკრანზე), გვეჩვენება, რომ ყველა ის ობიექტი, რომლის დანახვაც შეგვეძლო, თითქოს თვალსაჩინოდ, იქ არის, მათ მოიტანეს იგივე სცენა ცხოვრებაში. დრო, ყველაფერი, რაც ნამდვილად გვეძლევა ორგანზომილებიან გამოსახულებაში, ეს ხილული ველირა არის დეიაკუ სიკაშკაშის განყოფილების ფუნქციაან კიდევ ფერიორგანზომილებიან სიბრტყეზე: (x, ) , დე xі - დეკარტის კოორდინატები, რომლებიც აღწერს გამოსახულების არეალს.

უფრო მეტიც, თუ კომპიუტერის მონიტორის ეკრანს მიუახლოვდებით, ხედავთ, რომ ეკრანზე გამოსახულებები ნამდვილად არ არის გლუვი და უწყვეტი, არამედ წარმოადგენს დისკრეტულ „მოზაიკას“, რომელიც შედგება რამდენიმე ფერადი მართკუთხედისგან, რომლებიც განლაგებულია თქვენს გარეგნულად. ჩვეულებრივ მართკუთხა მატრიცაზე. ეს არის ციფრული სურათები. მათემატიკური თვალსაზრისით ციფრული გამოსახულებაარის ზომის ორგანზომილებიანი მატრიცა (DimXDimY), სადაც x არის რიცხვი 0-დან DimX-1-მდე, რომელიც აღწერს ელემენტის რაოდენობას მატრიცის მწკრივში, y არის რიცხვი 0-დან DimY-1-მდე, რომელიც აღწერს მატრიცის მწკრივის რაოდენობას, რომელშიც დანიის ელემენტი . ამიტომ, თავად ციფრული გამოსახულების ელემენტს (მართკუთხა მატრიცის შუა) ე.წ პიქსელი(პიქსელი, სურათის ელემენტი). უმარტივეს ფორმაში კანის პიქსელს აქვს სკალარული მთელი რიცხვი, სიკაშკაშის გაყოფის ფუნქციის მნიშვნელობის პროპორციული. (x, ) ტერიტორიის ამ წერტილში.

ნახ. სურათი 1.1.1 გვიჩვენებს ქალის სხეულის გამოსახულებას, რომელიც წარმოდგენილია გამოსახულების სახით, ხოლო მარჯვენა მხარეს არის იგივე ინდივიდის გამოსახულების გადიდებული ფრაგმენტი (მარჯვენა თვალი), სადაც გამოსახულების კანის ელემენტისთვის არის შესაბამისი რიცხვითი მითითებულია პიქსელის მნიშვნელობა. სურათზე მსუბუქი ელემენტები მიუთითებს შესახებუფრო დიდი მატრიცის მნიშვნელობები, მუქი - უფრო მცირე მნიშვნელობები. არ წაშალოთ სხვა ინფორმაცია ციფრული სურათებიდან.

@Mal. 1.1.1 ციფრული გამოსახულებები, როგორც ორგანზომილებიანი ინტენსივობის მატრიცა

კომპიუტერული გამოსახულების გამოყენების დაწყებისას აუცილებელია ნათლად გვესმოდეს, რომ კომპიუტერში, ციფრული გამოსახულების ბირთვში, ინახება მხოლოდ და მათ შორის ამა თუ იმ ფორმატის რიცხვების ორგანზომილებიანი მასივი. ნებისმიერი სხვა მონაცემი, რომლის ამოღებაც გვინდოდა სურათიდან (ფორმები, ხაზები, ობიექტები, ზომები, ნაჩვენები ტექსტის ჩანაცვლება და ა.შ. და ა.შ.) შეიძლება ამოღებულ იქნეს მთელი რიგი დამუშავების პროცედურების შედეგად, გამოსახულების ანალიზით, რომელიც ჩვენ ჩვენ უნდა დავაპროგრამოთ ან გამოვიყენოთ მზა პროცედურები, რომლებიც ხელმისაწვდომია პოპულარულ პროგრამულ პაკეტებში გამოსახულების ანალიზისთვის. ვინაიდან კომპიუტერული ხედვის უმარტივესი ამოცანებისთვის მზა მეთოდები შეგიძლიათ იხილოთ გამოსახულების დამუშავების პროცედურების სტანდარტულ ბიბლიოთეკებში; ყველაზე რთული ამოცანებისთვის საჭირო იქნება ამ და სხვა მზა პროცედურების გაერთიანება და მდიდრებისთვის. , ჩაის გამოძახების“ ბრძანებები, რომლებიც ადამიანთა „ბიოლოგიური“ სამყაროებია, როგორც ჩანს, ის მარტივად და ეფექტურად მუშაობს, კომპიუტერულ მანქანას ჯერ კიდევ არ აქვს გამოსავალი და კვლავ აგრძელებს ამაზე ხუმრობას. მათი ბუნებრივი ხედვითაც კი, ადამიანებს შეუძლიათ ადვილად ნავიგაცია ნებისმიერ სიტუაციაში, ამოიცნონ ობიექტები, აირჩიონ მარშრუტი, მართონ მანქანა და მრავალი სხვა. რატომ არ შეუძლია კომპიუტერს, რომელიც იღებს სურათებს ვიდეოკამერიდან, ყველაფერს აკეთებს? იქნებ ბუტი, მარჯვნივ ადამიანის თვალის ბუდოვაში?

სინამდვილეში, ადამიანის თვალი, ვიდეოკამერის მსგავსად, მხოლოდ ციფრული გამოსახულების მსგავს „ხილულ ველს“ ქმნის. ამ შემთხვევაში, ოპტიკური სისტემა, რომელიც შედგება ლინზებისა და ბროლისგან, ასახავს ორგანზომილებიან გამოსახულებებს თვალის ბადურაზე, სადაც ფოტომგრძნობიარე უჯრედები („ღეროები“ და „კონუსები“) სურათებს ნერვულ იმპულსებად გარდაქმნის. შემდეგ კი ამოღებული ინფორმაციის დამუშავების რთული მექანიზმი, რომელიც ფუნქციონირებს ჩვენი ტვინის შესაბამის ნაწილში, ამ იმპულსებს განმარტავს, როგორც ჩვენთვის წარმოდგენილი ხილული სცენის სურათს. ამრიგად, ადამიანებში "ბატარეის" ფუნქცია განისაზღვრება არა მხოლოდ თვალებით, არამედ "თვალები + ტვინის" სისტემით ("სენსორი + კომპიუტერი"). თავად ინფორმაციის დამუშავების ალგორითმები, რომლებიც ტვინშია ჩადებული, საშუალებას აძლევს ადამიანებს გაიგონ ის, რაც უნდა გაიგონ. ამ დანერგილი ალგორითმების როლი შეიძლება აიხსნას პრაქტიკული თვალსაზრისით.

როდესაც მე-20 საუკუნის შუა ხანებში ოფთალმოლოგიურმა ქირურგებმა დაიწყეს ოპერაციების ჩატარება თვალის კრისტალურ ნაწილზე, ბევრ ბრმას გაუჩნდა მხედველობის მოპოვების ტექნიკური უნარი. შემდეგ ასეთი ოპერაციის შემდეგ ადამიანში, რომელიც ადრე ბრმა იყო (სინათლე უბრალოდ არ გადიოდა კრისტალში), ბადის გამოსახულებებმა დაიწყეს ფორმა და გარეგანი სიგნალები ცერებრუმში ზუსტად ისევე შევიდნენ, როგორც მათ. ჯანმრთელ ადამიანებში. სამწუხაროდ, ამ შემთხვევაში „pobachit svіt“ არ ნიშნავს „ბაჩიტის დაწყებას“. როგორც ისტორიამ აჩვენა, "ტექნიკურად განათლებულმა" ზრდასრულმა პაციენტებმა ვერ მიაღწიეს უფრო ყოვლისმომცველ შედეგებს მხედველობის სფეროში, გარდა მარტივი გეომეტრიული ფიგურების ამოცნობისა - და ეს სიმართლეა, რამაც მათ შორის სერიოზული, მცოდნე აურზაური გამოიწვია. ადამიანების გარეგნობით ამოცნობა და სივრცეში ნავიგაცია მათთვის ძალიან დიდი ამოცანა გახდა. მარჯვნივ არის ის, რომ „ავტომატური“ ვიზუალური ანალიზის მექანიზმები, რომლებიც ვითარდება ადრეულ ბავშვობაში ადამიანებში, ეს პაციენტები მაშინვე არ იყვნენ დამნაშავენი და ისინი გამოჩნდნენ კომპიუტერის პოზიციაზე, რომელსაც აქვს გამოსახულების შესატანი მოწყობილობა არა, მაგრამ არსებობს არ არის საჭირო პროგრამული უზრუნველყოფა ამ ანალიზისთვის.

იმისათვის, რომ სრულად გავიგოთ ჩვენს წინაშე მყოფი გამოსახულების ანალიზის ამოცანის სირთულე, რომელიც წარმოადგენს რიცხვითი მონაცემების ორგანზომილებიან მასივს, შევეცდებით დავაყენოთ კომპიუტერული პროგრამა, რომელიც აბსტრაქტული რიცხვების გვერდით არის. ამ მიზეზით ვცვლით გამოსახულების აღქმის მოდალობას - ვიზუალური არედან ტაქტილურზე გადავდივართ. აშკარად არის ინტენსივობის მნიშვნელობების ორგანზომილებიანი მასივი, როგორც ჭადრაკი, რომლის ზომა პროპორციულია გამოსახულების ზომისა (DimXDimY), ხოლო საცობი მოთავსებულია კანის ცენტრში, სიმაღლეზე. რომელიც პროპორციულია Excel-ის ტიპის გამოსახულების მნიშვნელობისა. სხვა სიტყვებით რომ ვთქვათ, მოდით შევხედოთ ორი სამყაროს გამოსახულებას, თითქოს ის იყოს სამ სამყაროს გონებრივ ზედაპირზე. ნახ. 1.1.2 მარცხნივ არის ქალის ნიღბის ფრაგმენტი, როგორც გამოსახულება, ხოლო გამოსახულების მარჯვნივ, როგორც ფსევდოტრივიალური რელიეფი.

@Mal. 1.1.2. ციფრული გამოსახულებები, როგორც ფსევდო-სამგანზომილებიანი რელიეფი

ახლა გააცნობიერე, რომ შენი პასუხისმგებლობაა, არ გაგიკვირდეთ სურათებით, დახატოთ „რელიეფი“, რომელიც შეესაბამება თქვენს გამოსახულებას და შეეცადეთ დაადგინოთ რას წარმოადგენს თავად ეს „რელიეფი“ - ყუთი, ძაღლი თუ ადამიანის თვალი? როგორც ექსპერიმენტებმა აჩვენა, საშუალო ადამიანს არ შეუძლია გაუმკლავდეს ასეთ ამოცანებს. მარტივი გეომეტრიული ფორმების ამოცნობა ასეთ „რელიეფურ“ პრეზენტაციაში მოითხოვს მნიშვნელოვან ძალისხმევას და მოითხოვს სპეციალური უნარების, სტრატეგიებისა და ალგორითმების მკაფიო განვითარებას დაფარვისთვის. ამრიგად, მიუხედავად "ციფრული გამოსახულების" ობიექტის აშკარა სიმარტივისა, კომპიუტერისა და მანქანათმცოდნეობის ამოცანის სირთულისა.