زنگ

کسانی هستند که این خبر را قبل از شما می خوانند.
برای دریافت آخرین مقالات مشترک شوید.
پست الکترونیک
نام
نام خانوادگی
چگونه می خواهید The Bell را بخوانید
بدون اسپم

وقتی به یک تصویر دو بعدی از هر صحنه سه بعدی (در یک نقاشی ، عکس ، صفحه مانیتور) نگاه می کنیم ، به نظر می رسد همه آن اشیاء به طور مستقیم در آنجا حضور دارند که می توانستیم ببینیم که آیا مستقیماً همان صحنه زندگی را مشاهده می کنیم. در ضمن ، تمام آنچه که در واقع در یک تصویر دو بعدی به ما داده شده است زمینه قابل مشاهده، که فقط بعضی عملکرد توزیع روشنایییا رنگهادر یک هواپیما دو بعدی: f(ایکس, ی) جایی که ایکسو ی- مختصات دکارتی نقشه هواپیما را توصیف می کند.

علاوه بر این ، اگر به صفحه مانیتور کامپیوتر نزدیک شوید ، می بینید که تصویر روی صفحه نمایش در واقع صاف و مداوم نیست ، اما یک "موزاییک" گسسته است که از مستطیل های رنگی جداگانه تشکیل شده در یک ماتریس مستطیل معمولی تشکیل شده است. این همان چیزی است که هست تصویر دیجیتال... از دیدگاه ریاضی تصویر دیجیتالیک ماتریس دو بعدی از اندازه (DimXDimY) است ، که در آن x عدد صحیح از 0 تا DimX– 1 است که تعداد یک عنصر در ردیف ماتریس را توصیف می کند ، y عدد صحیحی از 0 تا DimY - 1 است که شماره ردیف ماتریس را که در آن قرار دارد ، نشان می دهد. در این حالت ، خود عنصر تصویر دیجیتال (سلول یک ماتریس مستطیلی) نامیده می شود پیکسل(پیکسل ، تصویر). در ساده ترین حالت ، هر پیکسل Im دارای یک عدد صحیح مقیاس متناسب با مقدار عملکرد توزیع روشنایی است f(ایکس, ی) در یک نقطه معین در هواپیما

در شکل 1.1.1 در سمت چپ تصویری از چهره یک زن است که به عنوان تصویر ارائه می شود ، و در سمت راست یک قطعه بزرگ شده از تصویر همان صورت (چشم راست) است ، جایی که برای هر عنصر تصویر مقدار پیکسل عددی مربوطه نشان داده شده است. عناصر نوری تصویر با b مطابقت دارد در بارهمقادیر بالاتر ماتریس ، مقادیر تاریک - پایین. تصویر دیجیتالی حاوی اطلاعات دیگری نیست.

@شکل. 1.1.1 تصویر دیجیتال به عنوان ماتریس شدت دو بعدی

هنگام شروع به مطالعه دید دستگاه ، باید به روشنی درک کرد که تنها و منحصراً یک آرایه دو بعدی از اعداد یک قالب یا شکل دیگر در یک کامپیوتر به عنوان تصویر دیجیتال ذخیره می شود. هر داده دیگری که ما می خواهیم از تصویر استخراج کنیم (شکل ، خط ، اشیاء ، ابعاد ، محتوای متن نمایش داده شده و غیره و غیره) - فقط در نتیجه اعمال تعدادی از روشهای پردازش و تجزیه و تحلیل تصویر حاصل می شود که یا باید خودمان برنامه نویسی کنیم یا از روشهای آماده موجود در بسته های نرم افزاری شناخته شده تجزیه و تحلیل تصویر استفاده کنیم. در عین حال ، برای حل مشکلات ساده بینایی کامپیوتر ، ابزارهای آماده احتمالاً در کتابخانه های استاندارد مراحل پردازش تصویر پیدا می شوند ، برای حل مشکلات پیچیده تر ، ترکیب برخی رویه های آماده لازم خواهد بود و برای بسیاری از کارهای کاملاً "معمولی" که بینایی انسان را "بیولوژیکی" می کنند ، به نظر می رسد. ، به راحتی و بازیگوشانه حل می کند ، دید رایانه هنوز هیچ راه حلی ندارد و همچنان به جستجوی آنها ادامه می دهد. از این گذشته ، شخص با استفاده از دید طبیعی خود می تواند به راحتی در هر محیطی حرکت کند ، اشیاء را بشناسد ، مسیری را انتخاب کند ، ماشین رانندگی کند و خیلی موارد دیگر. چرا رایانه ای که از یک دوربین فیلمبرداری تصویری دریافت می کند قادر به انجام همه این موارد نیست؟ شاید این ساختار چشم انسان باشد؟

در واقع ، چشم انسان ، مانند دوربین فیلمبرداری ، فقط "یک میدان قابل مشاهده" را شبیه به یک تصویر دیجیتالی تشکیل می دهد. در این حالت ، سیستم نوری متشکل از یک شاگرد و یک لنز ، یک تصویر دو بعدی را روی شبکیه قرار می دهد ، جایی که سلول های حساس ("میله" و "مخروط") تصویر حاصل را به تکانه های عصبی تبدیل می کنند. و تنها پس از آن ، مکانیسم پیچیده ای برای پردازش اطلاعات دریافت شده ، که در قسمت مربوط به مغز ما کار می کند ، این تکانه ها را به عنوان تصویری از صحنه قابل رویت تفسیر می کند. بنابراین ، در انسان ، عملکرد "دیدن" نه تنها توسط چشم بلکه توسط سیستم "چشم + مغز" ("حسگر + رایانه") انجام می شود. این الگوریتم های پردازش اطلاعات است که در مغز ساخته شده است و به فرد اجازه می دهد آنچه را که می بیند درک کند. نقش این الگوریتم های داخلی را می توان با مثال زیر نشان داد.

هنگامی که در اواسط قرن بیستم ، جراحان چشم پزشکی یاد گرفتند که عمل را روی عدسی چشم انجام دهند ، بسیاری از افراد که از بدو تولد نابینا بودند ، فرصت فنی برای دیدن نور خود را داشتند. یعنی بعد از چنین عملی در شخصی که تاکنون نابینا بوده است (نور به راحتی از لنز عبور نمی کند) ، تصویر روی شبکیه شروع به شکل گیری کرد و سیگنال های مربوطه دقیقاً به همان روشی که در افراد سالم وارد مغز می شوند وارد می شوند. متأسفانه ، در این حالت ، "دیدن نور" به معنای "آغاز دیدن" نبود. همانطور که تاریخ بیشتر نشان داده است ، اکثر بیماران بالغ "روشنفکر فنی" هرگز نتوانسته اند به رسمیت شناختن اشکال هندسی ساده ، نتایج قابل توجهی در زمینه بینایی کسب کنند - و حتی این امر به تلاش جدی آگاهانه از سوی آنها نیاز داشت. شناخت افراد توسط چهره و جهت گیری در فضا برای آنها وظایف قاطع باقی مانده است. واقعیت این است که آن مکانیسم های داخلی بطور خودکار تجزیه و تحلیل بصری "خودکار" که در اوایل کودکی در افراد ایجاد می شوند ، به موقع در این بیماران ایجاد نشده اند و خود را در موقعیت یک کامپیوتر با وسیله ای برای ورود تصویر پیدا کردند ، اما فاقد نرم افزار لازم برای تحلیل او

برای اینکه در نهایت به پیچیدگی کار قبل از ما از تجزیه و تحلیل تصویری که یک آرایه دو بعدی از داده های عددی است متقاعد شویم ، اجازه دهید سعی کنیم خود را در جای جای یک برنامه رایانه ای قرار دهیم که با اعداد انتزاعی کار کند. برای انجام این کار ، ما از لحاظ ذهنی شیوه ادراک تصویر را تغییر خواهیم داد - آن را از حوزه تصویری به حالت لمسی منتقل می کنیم. بیایید یک آرایه دو بعدی از مقادیر شدت را به عنوان یک صفحه شطرنج تصور کنید ، اندازه آن برابر با اندازه تصویر (DimXDimY) است و یک ستون در مرکز هر سلول گیر کرده است ، ارتفاع آن متناسب با مقدار پیکسل مربوطه در تصویر است. به عبارت دیگر ، بیایید یک تصویر دو بعدی را به عنوان نوعی سطح معمولی سه بعدی در نظر بگیریم. در شکل 1.1.2 در سمت چپ ، قطعه ای از چهره یک زن به عنوان تصویر نشان داده شده است ، و در سمت راست به عنوان یک تسکین شبه سه بعدی به تصویر کشیده شده است.

@شکل. 1.1.2. تصویر دیجیتال به عنوان تسکین شبه سه بعدی

حال تصور کنید که بدون اینکه به تصویر نگاه کنید ، باید "تسکین" مربوط را حس کنید و سعی کنید تعیین کنید که دقیقاً این "تسکین" چه چیزی را نشان می دهد - یک خانه ، یک سگ یا یک چشم انسان؟ آزمایشات نشان می دهد که یک فرد متوسط \u200b\u200bقادر به کنار آمدن با چنین کارهایی نیست. حتی شناخت ساده ترین اشکال هندسی در چنین نمایشی "تسکین" با تلاش قابل توجهی همراه خواهد بود و به پیشرفت آگاهانه یک مهارت ، استراتژی و الگوریتم های احساس نیاز دارد. این ، با وجود سادگی به ظاهر شیء "تصویر دیجیتال" ، پیچیدگی واقعی وظایف دید کامپیوتر و ماشین است.

UDC 004932: 621.396

T.M. VLASOV ، V.G. کالمیکوف

الگوریتم و برنامه برای شناختن خارج از تصاویر به عنوان یک توالی از اهداف خط DIGITAL

چکیده: در کار داده شده الگوریتم تشخیص بخش مستقیم خط دیجیتال در کانتورهای تصاویر باینری و اجرای نرم افزار الگوریتم در نظر گرفته شده است. استفاده از این الگوریتم برای پردازش تصاویر در مقایسه با روشهای شناخته شده توصیف تصاویر منجر به توصیف طبیعی تر و اقتصادی تر خواهد شد. الگوریتم در نظر گرفته شده و اجرای نرم افزار نیز می تواند برای توصیف کانتورها هنگام پردازش تصاویر نیمه تون و رنگی استفاده شود.

کلید واژه ها: تصویر ، کانتور ، بخش های مستقیم دیجیتال ، الگوریتم ، برنامه.

چکیده: به داده های این ربات ، الگوریتمی برای ایجاد تصاویر در خطوط مستقیم دیجیتالی در محورهای تصاویر باینری القا می شود ، همچنین برنامه ای برای اجرای الگوریتم ارائه می شود. الگوریتم پردازش تصویر محصول قبل از توصیف تصویر ، بسته به نحوه پردازش تصویر ، طبیعی تر و اقتصادی تر خواهد بود. الگوریتم اختصاصی و اجرای نرم افزار می تواند برای رمزگذاری کانتورها در هنگام تصفیه تصاویر و رنگی مورد استفاده قرار گیرد. کلید واژه ها: تصویر ، کانتور ، درایوهای مستقیم دیجیتال ، الگوریتم ، برنامه.

چکیده: در این مقاله الگوریتمی برای شناخت بخش های خطوط دیجیتال در محورهای تصاویر باینری و اجرای نرم افزار الگوریتم در نظر گرفته شده است. استفاده از این الگوریتم در پردازش تصویر منجر به توصیف طبیعی تر و اقتصادی تر تصاویر در مقایسه با روشهای شناخته شده خواهد شد. الگوریتم در نظر گرفته شده و اجرای نرم افزار همچنین می تواند برای توصیف کانتورها هنگام پردازش تصاویر خاکستری و رنگی استفاده شود. کلید واژه ها: تصویر ، کانتور ، بخشهای از خطوط دیجیتال ، الگوریتم ، برنامه.

1. معرفی

تجزیه و تحلیل ساختاری خطوط تصویر به عنوان توالی قسمتهای خط و قوسهای منحنی یکی از اصلی ترین کارها در پردازش تصویر با هدف تفسیر آنها در سیستم های هوش مصنوعی است.

در بیشتر موارد ، یک تصویر را می توان به عنوان بخشی از هواپیما مشاهده کرد که به مناطقی با پارامترهای ثابت یا متغیر تقسیم می شود ، به عنوان مثال ، چگالی نوری ، رنگ ، بافت ، تعیین پیش زمینه و اشیاء تصویر. یک ویژگی جدایی ناپذیر از هر یک از این مناطق مرز آن است ، یعنی کانتور یک دنباله به سادگی متصل است که از بخش های خط و قوس های منحنی تشکیل شده است. هنگام پردازش نقشه بیت رئوس اشیاء معمولاً برجسته می شوند. با این حال ، خطوط اشیاء ، که به عنوان مجموعه ای از پیکسل های مرزی فردی ارائه شده اند ، برای پردازش بیشتر چندان مناسب نیستند ، زیرا آنها جوهر هندسی آن را به اندازه کافی بیان نمی کنند.

شناخت خطوط تصویر به صورت دنباله ای از بخش های خط مستقیم می تواند یکی از اصلی ترین کارها در فرآیند پردازش تصویر شطرنجی محسوب شود. حل مسئله نمایندگی کانتور در قالب دنباله ای از قطعه های خط مستقیم این امکان را می دهد که توضیحات تصویر را به صورت فشرده دریافت کنید ، طبیعی برای درک انسان ، تغییر ناپذیر با توجه به تحولات عاطفی ، مناسب ، به ویژه ، مناسب برای پردازش توسط شبکه های عصبی. بخش های خط عناصر اصلی کانتور هستند. قوس منحنی نیز غالباً با خط شکسته کتیبه شده در آن ، چه در اصول تحلیل ریاضی و چه در تعداد زیادی از کاربردهای عملی ، جایگزین می شود.

روش ها و الگوریتم های شناخته شده ، به ویژه ، روش های ارائه شده در کار ، به فرد اجازه می دهد تا یک راه حل تقریبی را بدست آورد ، که برای همه برنامه های کاربردی قابل قبول نیست.

در این مقاله ، تشخیص کانتور یک تصویر باینری را دنباله ای از بخش های خطوط دیجیتالی بدون از بین رفتن اطلاعات در نظر می گیریم.

2. کانتور به عنوان دنباله ای از بخش های خطوط مستقیم دیجیتال

که در این بخش تجزیه و تحلیل ساختاری خطوط تصویر به عنوان دنباله ای از بخش های از خطوط مستقیم دیجیتال ، که داده های اولیه برای تقسیم کانتور به قوس منحنی های دیجیتال و بخش های از خطوط مستقیم دیجیتال در نظر گرفته شده است.

بگذارید خودمان را در نظر بگیریم تا تصاویر باینری را محدود کنیم ، که اشیاء آن ها به وسیله کانتورهای محدود آنها مشخص می شود. قوسهای منحنی های دیجیتال و همچنین بخش هایی از خطوط دیجیتال در هنگام تفکیک تصاویر حاوی کانتورها تشکیل شده توسط قطعه های خط و قوس های منحنی شکل می گیرند.

ویژگی های بارز بخش های خط و قوس های منحنی ها در هنگام تحول از بین می رود. با در نظر گرفتن تصویر نمونه برداری در بزرگنمایی کافی ، تشخیص بخش های خط و قوس منحنی های جداگانه در یک دنباله اغلب دشوار است

بخش خط عمودی و افقی. مشکلات اضافی در هنگام پردازش بوجود می آید به این دلیل که خطوط کانتور - خطوط ریاضی بدون ضخامت - توسط صفحه های پیوندی متصل به پیکسل ها روی صفحه مانیتور نمایش داده می شوند ، یعنی خطوط بصری دارای ضخامت هستند.

برای از بین بردن مشکلات ناشی از این ، تصویر بدست آمده از اصلی را در نتیجه نمونه برداری به عنوان یک مجموعه سلول دو بعدی در نظر خواهیم گرفت. در این مورد

پیکسل ها عناصر دو بعدی این مجموعه سلولی هستند. علاوه بر پیکسل ها ، ترک ها و نقاط وجود دارد. کرک است

طرفین پیکسل که عناصر یک بعدی هستند. امتیازات نقاط پایانی ترک ها و نقاط گوشه ای از پیکسل ها هستند. امتیازها عناصر صفر بعدی هستند. بنابراین

بنابراین ، در مورد مورد نظر ، کانتور شیء دنباله بسته ای متصل به ترک های کانتور است که بین پیکسل های شی و پس زمینه هم مرز است. کانتور را می توان دنباله ای از مختصات نقطه عدد صحیح توصیف کرد ،

ترک های کانتور همانطور که در تصویر نشان داده شده است ، صفحه هواپیما را به عنوان نشان می دهد

مجموعه سلول مزایای زیادی را ارائه می دهد. به طور خاص ، مرز منطقه به یک منحنی نازک با مساحت صفر تبدیل می شود.

در شکل 1 نمونه ای از کانتور اصلی یک جسم را تشکیل می دهد که توسط یک قوس از یک منحنی و یک قطعه خط مستقیم و همچنین معادل دیجیتالی آن به عنوان یک دنباله ترک تشکیل شده است. امتیازها شماره گذاری می شوند که از جهات مختلف به ترک تعلق دارند. همانطور که در آثار ، با یک b -element به معنای دنباله متصل به ترک های همان جهت هستیم ، که از یک نقطه مشخص بیرون می آیند و با ترک همان جهت یا عمود به پایان می رسند. در شکل 1 یکی از پارتیشن های احتمالی کانتور را در L -elements نشان می دهد که با ایجاد شکاف بین نقاط: (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). هر L -element با پارامترهای زیر مشخص می شود: جهت نسبت به نقطه اولیه آن g (گرفته شده از g \u003d 0 - برای جهت صعودی ، 1 - به سمت راست ، 2 - پایین ، 3 - به سمت چپ). l - تعداد ترک در جهت g (! \u003d 1،2 ، ...)؛ جهت آخرین ترک q نسبت به جهت g ترک های قبلی (q \u003d -1 - آخرین ترک به سمت چپ نسبت به جهت g ، +1 - به سمت راست ، 0 - با جهت g نشان می دهد). تعداد ترک های l به طور شرطی "طول" b -element خوانده می شود .برای b -element (0-2) g \u003d 0 ،! \u003d 3 ، q \u003d + 1. برای b -element (27-0) g \u003d 3 ، \u003d 1 ، q \u003d 0.

روش انتخاب بخش های خطوط دیجیتالی در یک کانتور از ویژگی زیر توالی L -elements که یک قطعه را تشکیل می دهد استفاده می کند. چنین توالی شامل المان های L با همان مقادیر g ، q است. طول آنها مقادیر را دریافت می کند! 1+ علاوه بر این

متناوب b -element های طول! + 1 با کسری ادامه یافته به دست آمده با تقسیم اعداد صحیح n \u003d Ax \u003d | x1 - x2 | و m \u003d Ay \u003d | y1 - y2 \\ ، که در آن (x13y1) ، (x2 ، y2) مختصات اولیه هستند

و نقاط پایانی بخش خط: یا

بگذارید برای قطعیت تصور کنیم که n\u003e m همانطور که از فرمول (1) در زیر آمده است ، l - قسمت عدد تقسیم n به m - در یک بخش خط مستقیم دیجیتالی با تعداد l های متوالی یک جهت مطابقت دارد. آنها به همراه ترک عمود بر مجاورت ، عنصر L را از طول تشکیل می دهند !. k1- b- اجزای پی در پی از طول l و یک b طول موج! 1+ یا k1 b -element های متوالی از طول 1 و یک b -element از طول!) یک K1- از "طول" k1 را تشکیل می دهد (به قیاس با "طول "ب- سیمان). یک b-melement که طول آن با طول 1 از b -element های متوالی متفاوت است ، به عنوان b-melement اصلاح شده از این K1- نامیده می شود. به طور مشابه ، K2- عناصر K1 متوالی از "طول" k1 و یک عنصر K1 از "طول" k1 +1 (یا K2- K1 های متوالی K1 از "طول" k1 +1 و یک K1- از "طول" k1) شکل K2- عنصر "طول" k1. بنابراین

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

علاوه بر این تا زمانی که اعضای فراکسیون ادامه یابد خسته نشوند. K1- (سیمان K1) (که عموماً K-1 -element) است و طول آن با طول 1 با اجزای پی در پی K1 (Kg-1 -element) متفاوت است ، ما K1 -ementement اصلاح شده (Kg-1 -element) این K2- سیمان (Kg -سلامت) بنابراین ، همه

یک بخش خط مستقیم دیجیتال با کسری ادامه دارد که عناصر تشکیل دهنده ساختار این بخش را تعیین می کنند.

در محوطه در شکل 1 بخش های زیر از خطوط مستقیم دیجیتال را می توان انتخاب کرد: 0-3 ، 3-9 ، 910 ، 10-17 ، 17-0.

3. انتخاب بخش های یک خط دیجیتال در یک کانتور

هنگام پردازش خطوط تصاویر ، به ویژه تصاویر باینری ، در دنباله ترکهای تشکیل دهنده کانتور ، لازم است قسمت های دنباله ای که قسمت های خط را تشکیل می دهند را انتخاب کنید. این مشکل را می توان به عنوان مشکل تعیین عناصر کسر ادامه یافته با دنباله عناصر L از کانتور در نظر گرفت. این وظیفه معکوس با توجه به مشکل تعیین ساختار یک بخش خط مستقیم از توالی شرایط کسر ادامه یافته ، به عنوان نسبت اختلاف بین مختصات آغاز و انتهای قطعه بدست می آید.

روش انتخاب بخش های یک خط مستقیم دیجیتال شامل انجام اقدامات زیر است.

1. جداسازی توالی L -elements در یک توالی ترک. این عمل با تعریف یک بخش کامل مطابقت دارد! کسر ادامه (1).

2- جداسازی دنباله ای از Kr -elements با r \u003d 1 در دنباله ای از L -elements ، و یکی از L -elements های هر K1 -ement باید حاوی 1 ترک بیشتر یا کمتر از سایر موارد باشد. این عمل مطابق با تعریف عنصر k1- بخش کسر ادامه (1) است. پس از اجرای آن ، مقدار r باید با 1 افزایش یابد.

3. جداسازی دنباله ای از Kg- عناصر در دنباله ای از عناصر Kg-1 ،

علاوه بر این ، یکی از اجزای Kg-1 هر کیلوگرم سیم باید حاوی یک K-2- سیمان بیشتر یا کمتر از سایر موارد باشد. این عمل با تعریف k (عنصر هفتم کسر ادامه (1) مطابقت دارد .بعد از اجرای آن ، مقدار r باید با 1 افزایش یابد.

4- پاراگراف 3 تا زمانی که هنوز هم ممکن است از پی در پی Kg -elements امکان پذیر باشد تکرار می شود

km -element را تشکیل دهید.

5- نقاط مرزی را بین دو لایه مجاور L که در همان Kr -element وجود ندارد ، تعیین کنید. این نقاط نقاط پایانی بخش های خط دیجیتال هستند که کانتور را تشکیل می دهند.

یک الگوریتم برای جداسازی بخش های خط را در یک دنباله از L -elements در نظر بگیرید

بگذارید [b5 (fs، gs، qs))؛ 5 \u003d 0.1 ، ... ، t دنباله ای از عناصر L است که یک کانتور تشکیل می دهند. x5 ، y5- مختصات شروع e-th b-element؛ [xy ، yy)؛ y \u003d؛ r \u003d 0،1 ، ... ،!؛ !< £ - множество

نقاط شکاف کانتور. نقاط شکست نقاط پایانی بخش های خط را تشکیل می دهند که کانتور را تشکیل می دهند. یافتن نقاط شکست به معنای تعریف بخش های خط است که یک کانتور را تشکیل می دهند.

هر بخش مورد نظر با یک Kr -element و همچنین یک زنجیره مشخص می شود

کسر. در لحظه اولیه تشخیص یک بخش خط مستقیم ، عناصر کسر ادامه دار مربوطه برابر است با 0. اگر پارامترهای Kr -element به رسمیت شناخته شوند ، از جمله ترتیب آن r و مقادیر عناصر کسر ادامه یافته مربوطه می توان بخش را به رسمیت شناخت.

1. شرایط اولیه.

توالی [b5 (f5 ، gs ، qs)) و (x5 ، y5) داده شده است.

لازم است مختصات نقاط شکست | x؛. ، Y ،) را بیابید.

k0p: \u003d 0، k1p: \u003d 0، k2p: \u003d 0، ...، kr: \u003d 0 مقادیر کاری عناصر کسری مداوم هستند.

بیایید نقطه 5 \u003d 0 را به عنوان نقطه شروع اولین قسمت انتخاب کنیم. من \u003d 0؛ من \u003d 0

2. اولین b -element را در ترتیب به عنوان آغاز بخش خط اول بکشید. نقطه اولیه آن x5 ، y است. طول / \u003d / 0 همچنین مقدار عنصر اول کسر ادامه دارد.

5: \u003d 5 + 1؛ k1p: \u003d k1p + 1.

3. L -element بعدی ، که آیا آنها تشکیل می شوند ، همراه با عنصر K0 قبلی بررسی کنید.

3.1 اگر ((q3 \u003d\u003d q3-1) && (q3 \u003d\u003d 73-1) && (4 \u003d\u003d / 3-1)) ، آنگاه ادامه عنصر Kg k0p: \u003d k0p +1؛ 5: \u003d 5 + 1؛ و ادامه یک بخش خط. به مرحله 3 بروید.

3.2 اگر ((q3 qd3-1) || (q3 qp 73-1) 11 (| / e - / є-1!\u003e 1)) ، پس پایان بخش خط است. به مرحله 5 بروید.

3.3 اگر ((& \u003d\u003d 9s + 1) && (٪ \u003d\u003d 7s + 1) && ((/ 3 + 1 \u003d\u003d / 3 + 1) 1! (/ 3 - 1 \u003d\u003d / 3 + 1))) ، سپس اتمام K0 -ement؛ \u003d Ї + 1.

4- بررسی ادامه / تکمیل K (-element).

4.1 اگر (k \u003d\u003d 0) ، سپس k ^ \u003d k ^؛ cr: \u003d 0؛ k ^ 1p: \u003d k1 + 1p + 1؛ 5: \u003d 5 +1؛ آغاز عنصر Km.

به مرحله 3 بروید.

4.2. اگر ((k іΦ 0) && (k \u003d\u003d k ^)) ، سپس k ^ 1p: \u003d k ^ 1p + 1؛ 5: \u003d 5 + 1؛ ادامه Ki + 1 -ement. به مرحله 3 بروید.

4.3 اگر ((k (Ф 0) && ((k + 1 \u003d\u003d k1p) 11 (k1-1 \u003d\u003d k ^))) ، سپس Ї: \u003d +1؛ انتهای Km -element.

به مرحله 4 بروید.

4.4 اگر ((^ φ0) && (| k - k1p |\u003e 1)) ، پس از آن بخش انتهایی یک خط مستقیم به مرحله 5 است.

5- انتهای بخش.

X] \u003d Xs؛ y \u003d Uz؛ k1p: \u003d 0، k2p: \u003d 0،.، kir: \u003d 0؛ k: \u003d 0، k2: \u003d 0،.، k: \u003d 0.

اگر< S), то s:= s +1; переход к п. 2.

در غیر این صورت ، پایان دنباله L -elements. پایان الگوریتم.

در حقیقت ، الگوریتم پیشنهادی عناصر کسر ادامه یافته و برای هر Kt -ementement به دست آمده را بررسی می کند و بررسی می کند که آیا کسری ادامه یافته از Kt -element تازه ساخته شده برای بخش در حال حاضر ساخته شده مناسب است.

4- برنامه انتخاب بخش های یک خط دیجیتال

همانطور که از توضیحات الگوریتم می بینید ، حاوی تعداد قابل توجهی جهش های مشروط است ، استفاده از آن با توصیه ها مغایرت دارد برنامه نویسی ساخت یافته به دلیل مشکلات موجود در برنامه های اشکال زدایی. علاوه بر این ، تعداد پارامترهای Kt از قبل

تعیین آن غیرممکن است ، زیرا متغیر t از قبل محدود نیست. مقدار t را محدود کنید

این به معنای محدود کردن اندازه تصویر از قبل است. اجرای نرم افزار ، به ویژه اشکال زدایی از الگوریتم پیشنهادی با ابزارهای بی اهمیت ، به دلایل ذکر شده ، به طور قابل توجهی دشوار است. در صورت استفاده از ابزارهای نوین برنامه نویسی شی گرا ، می توانید از دشواری های ایجاد و اشکال زدایی در اجرای نرم افزار بکاهید.

الگوریتم پیشنهادی در قالب برنامه LINESEGM که بخشی از آزمایشگاه است اجرا می شود بسته نرم افزاری در پردازش تصویر در محیط Visual C ++.

به عنوان اطلاعات اولیه ، برنامه LINESEGM از توالی L -elements ساخته شده برای هر یک از کانتورهای تصویر پردازش شده استفاده می کند.

نتیجه برنامه یک دنباله متصل از قطعه های خط مستقیم دیجیتال است که برای هر کانتور ساخته شده است ، که توسط مختصات نقاط انتهایی بخش ها نشان داده شده است.

همانطور که از الگوریتم مشاهده می شود ، عملیات ساخت Kt -elements از Kt-l -elements

برای تمام مقادیر t یکسان هستند. توجه داشته باشید که مقدار اولیه t \u003d 0 و در حین کار الگوریتم آن هر بار با 1 افزایش می یابد. کلاس مخصوص CKForLn شامل روش های مربوط به عملکرد الگوریتم است. در فرآیند اجرای برنامه ای که الگوریتم را برای هر افزایش t به 1 اعمال می کند ، یک شی جدید ایجاد می شود که شامل توابع است که عملیات الگوریتم را برای هر مقدار از t انجام می دهد.

با توجه به اینكه در سطح صفر K-المان ها نه از K -elements ، بلكه از L -

عناصر ، برای اجرای الگوریتم در سطح صفر ، اصلاح ویژه ای از کلاس CKForLn ایجاد شد - کلاس Cmini.

اصل عملکرد برنامه این است که برای هر مقدار از t در برنامه یک شیء از کلاس CKForLn از سطح t اجرا می شود ، شامل توابع است که پارامترهای Kt -element را تعیین می کند. پارامترهای اولیه عنصر Kt قبلاً پارامترهایی هستند

kt-l- کامل شده ، پارامترهای که توسط موضوع کلاس CKForLn t-1 تعیین می شوند

وای سطح

اشیاء کلاس CKForLn به محض ایجاد شرایط اجرا می شوند ، یعنی: نیاز به ساخت K-سطح سطح بعدی ، - و جمع آوری در یک آرایه پویا ویژه. یک شیء صفر بلافاصله در ابتدای برنامه ایجاد می شود.

اجرای اشیاء در یک آرایه پویا با افزایش زمان به شما امکان می دهد محدودیت هایی در اندازه تصویر اعمال نکنید. محدودیت اندازه تصویر فقط با منابع رایانه مورد استفاده تعیین می شود.

هنگام توصیف عملکرد برنامه ، از مفهوم Kt کامل استفاده می شود -

عنصر هر عنصر Kt تکمیل شده حاوی عناصر Kt-Kt-l و یک عنصر Kt-l اصلاح شده است که حاوی عناصر Kt-l-1 Kt-2 است ، برخلاف یک عنصر Kt ناقص ، که حاوی یک عنصر ناقص Kt نیست.

کلاس CKForLn روشهای زیر را شامل می شود.

1. روش DK () ، (تعریف K-element) - K -element را تعریف کنید.

تعیین یک Kt -element به معنای تعیین تعداد اجزای Kt-1 است که یک Kt -ementement خاص را تشکیل می دهند.

2- روش VK§ ، (تأیید K-element) - برای بررسی هویت K -element در نظر گرفته شده با K-element در همان سطح ، که قبلاً با عملکرد روش DK () تعیین شده است.

3. روش DEO ، (انتهای K-element را تعریف کنید) - انتهای K -element را تعیین کنید ، یعنی هنگام تعیین Kt -element ، تغییر Kt-1-alement خود را پیدا کنید. عملکرد روش DE () سطح t-1 با عملکرد روش DK () سطح t گفته می شود.

4- روش VE () ، (تأیید پایان K -element) - هویت انتهای K -element را که توسط K -element تغییر یافته ، که قبلاً با عملکرد روش DE () تعیین شده بود ، بررسی کنید.

کلاس Cmini شامل همین روشها است که با روشهای کلاس CKForLn تفاوت دارد زیرا روشهای کلاس Cmini با L -elements کار می کنند و Kell -elements را تعیین یا بررسی می کنند.

روش های کلاس Cmini

روشهای استفاده از کلاس Cmini به عنوان داده های اولیه توالی های L- ساخته شده برای هر یک از کانتورهای تصویر پردازش شده ، با شروع از تعداد فعلی L -element در لحظه فراخوانی تابع روش.

عملکرد روش DK () کلاس Cmini پارامترهای هر L -element بعدی را با پارامترهای L -element اولیه تا زمانی که مطابقت داشته باشد مقایسه می کند. اگر پارامترها مطابقت نداشته باشند ، عملکرد DK () بررسی می کند که آیا K0 -ement کاملاً تکمیل شده یا خاتمه یافته است

کار یک K0 -ement کاملاً در نظر گرفته شده است و با یک L اصلاح شده ، پایان می یابد و طول آن با سایر L- اجزای یک K0- با سیمان با 1 متفاوت است (عملکرد 3.1 برای شروع بخش - t \u003d 0).

عملکرد روش VK () بررسی می کند که آیا پارامترهای بعدی k0 L-همگام با پارامترهای L -elements از K0 -element از پیش تعیین شده با عملکرد روش DK () مطابقت دارد.

در همان سطح اگر پارامترهای جریان K0-هم زمان با مقدمات همزمان باشد

تابع تعریف شده VK () نشانه ای از ادامه بخش را تشکیل می دهد و کار را خاتمه می دهد (عملیات 3.1 برای ادامه بخش - t\u003e 0).

در غیر این صورت ، عملکرد VK () علامتی از انتهای بخش ایجاد می کند و به پایان می رسد

تابع روش DE () پارامترهای عنصر Kci فعلی را با پارامترهای عنصر K0 که قبلاً توسط عملکرد DK () تعریف شده بود مقایسه می کند تا مشخص شود آیا عنصر K0 فعلی تغییر یافته است یا خیر. اگر پارامترهای دیگر برابر باشند ، تعداد L -elements k0 است

k0- سیمان اصلاح شده در مقایسه با K0 -ementement که قبلاً مشخص شده بود اصلاح شده است

تابع DK () ، برای تعیین تکمیل باید با 1 (عملیات 3.2 ، 3.3) متفاوت باشد

مقدار اولیه00 بخش - t \u003d 0). نتیجه - پارامترهای تغییر یافته K0 اصلاح شده

در روش VE () کلاس Cmini استفاده می شود.

تابع روش VE () پارامترهای جریان فعلی K0 را با پارامترهای عملکرد اصلاح شده K0 که قبلاً توسط عملکرد DE () تعریف شده بود مقایسه می کند تا

آیا اینها همزمان هستند (عملیات 3.2 ، 3.3 برای ادامه بخش - t\u003e 0). نتیجه - نشانه ای از تصادف یا عدم همزمانی - در روش VK () از کلاس CKForLn استفاده می شود.

روشهای کلاس CKForLn

روش ها از پارامترهای عناصر K ساخته شده برای پایین ترین سطح به عنوان داده ورودی استفاده می کنند. یعنی برای تعیین پارامترهای Kt -element ، پارامترها

در حال حاضر Kt-l- ساخته شده ساخته شده است.

عملکرد روش DK () سطح t از کلاس CKForLn ، در هنگام تعریف پارامترهای یک ^ ^ ، تابع VK () سطح t-1 از کلاس CKForLn را فراخوانی می کند ، که بررسی می کند که آیا Kt-l- تعریف شده از قبل تعریف شده پیروی از Kt-l را با همان پارامترها انجام می دهد. در این صورت ، تماس به عملکرد VK () تکرار می شود. در این حالت تعداد تکرارها شمارش می شود ، یعنی پارامتر kt مشخص می شود.

در غیر این صورت ، تابع DK () سطح t ، تابع DE () سطح t-1 را برای تعیین تغییر Kt-l- برجسته و خارج می کند. در پایان کار ، عملکرد DK () سطح t کلاس CKForLn پارامترها را تعیین می کند و علائم یک Kt -element کامل یا ناقص را تشکیل می دهد (عملیات 4.1 ، 4.2 در حداکثر مقدار فعلی t).

عملکرد روش VK () سطح t از کلاس CKForLn بررسی می کند که آیا پارامترهای Kt-Kt انتخاب های بعدی با پارامترهای Kt -element که قبلاً تعریف شده اند مطابقت دارد یا خیر.

عملکرد روش DK () در همان سطح. اگر پارامترهای Kt -element فعلی با هم همزمان باشند

با یک تابع از پیش تعیین شده DK () Kt -element در همان سطح ، عملکرد VK ()

نشانه ای از ادامه بخش و خارج می شود.

در غیر این صورت ، عملکرد VK () نشانه ای از انتهای قطعه ایجاد می کند و کار را خاتمه می دهد (عملیات 4.1 ، 4.2 با مقدار فعلی t کمتر از حداکثر).

Kt -element عملکرد روش DE0 از سطح t کلاس CKForLn ، در هنگام تعیین پارامترهای Kt -element ، پارامترهای Kt -element فعلی را با پارامترهای Kt -element که قبلاً توسط تابع DK () تعیین شده است ، تعیین می کند که آیا Kt-theement اصلاح شده است. اگر پارامترهای دیگر برابر باشند ، مقادیر kt-1 آنها باید با 1 متفاوت باشد. اگر این شرط برآورده شود ، عملکرد DE () علامت تغییر Kt -element را تشکیل می دهد و

خروجی (عملیات 4.3 ، 4.4 در حداکثر مقدار فعلی t).

عملکرد روش VE () سطح t کلاس CKForLn پارامترهای Kt -element فعلی را با پارامترهای اصلاح شده Kt -element که قبلاً توسط عملکرد DE () تخصیص داده شده است ، مقایسه می کند که آیا مقادیر پارامترهای آنها یکسان است.

اگر مقادیر پارامترهای جریان Kt -element با مقدمات همزمان باشد

تعریف شده توسط تابع DK () در همان سطح ، تابع VK () علامتی از همزمانی مقادیر پارامتر را تشکیل می دهد و کار را خاتمه می دهد (عملیات 4.3.4.4 در مقدار فعلی t کمتر از حداکثر).

نمودار زمان بندی (شکل 2) کار برنامه LINESEGM را به عنوان مثال برای تشخیص بخش خط نشان می دهد. قسمت پایین شکل بخشی را نشان می دهد خط دیجیتالمتشکل از عناصر L از همان جهت اصلی و کمکی و طول های مختلف.

در مرحله 0 ، یک شیء از کلاس Stypi ایجاد می شود که پارامترهای K0 -element را تعریف می کند.

در مرحله 10 ، تعیین پارامترهای عنصر K0 به اتمام رسیده و یک شی 1 از کلاس CKPrbn ایجاد می شود که از توابع شیء قبلاً ایجاد شده برای تعیین پارامترهای عنصر K1 استفاده می کند. در مرحله 19 ، تعیین پارامترهای K1 -element کامل شده و یک شی 2 از کلاس CKPorbn ایجاد می شود که از توابع اشیاء قبلاً ایجاد شده برای تعیین پارامترهای K2 -element استفاده می کند. در مرحله 49 ، تعیین پارامترهای K2 -element کامل شده و یک جسم 3 از کلاس Cporbn ایجاد می شود که از توابع اشیاء قبلاً ایجاد شده برای تعیین پارامترهای عنصر K3 استفاده می کند. مرحله 79 اجرا می شود

شرط خاتمه بخش. عملکرد برنامه با جزئیات در پیوست آورده شده است.

در بخش 0-6 ، دو عنصر L یک ناقص K0 را تشکیل می دهند. واضح است که b -

عنصر 3-6 از طول 3 یک بخش خط را تکمیل می کند ، زیرا b -element 6-7 طول 1 نمی تواند ادامه آن باشد. بنابراین ، b-element 6-7 آغاز بخش خط دیجیتال است.

در شکل 3 نمونه ای از برنامه را نشان می دهد. کانتور تصویر باینری پیکان فرفری توسط مربع ها به بخش های خط تقسیم می شود. نتیجه برنامه - دنباله ای از بخش های خط - برای انتخاب قوس های منحنی های دیجیتال استفاده شد. مربع های بزرگ مرز قوس های منحنی های دیجیتال را نشان می دهد.

کار این برنامه بر روی تعداد قابل توجهی (بیش از 2000) نمونه آزمایش شده است و برای مطالعه تجزیه و تحلیل ساختاری تصاویر halftone استفاده می شود.

5- بهره برداری از برنامه برای شناخت بخش های خط

بگذارید عملکرد برنامه UEEBSM را با استفاده از مثال شکل در نظر بگیریم. 4- قسمت پایین شکل بخشی از یک خط دیجیتال را نشان می دهد که از عناصر L با همان جهت های اصلی و کمکی و طول های مختلف تشکیل شده است. در بخش 0-6 ، دو عنصر L یک K0 ناقص را تشکیل می دهند.

شکل. 3. نمونه ای از برنامه برای تجزیه و تحلیل ساختاری کانتور - تقسیم بندی کانتور توسط بخش های از خطوط مستقیم دیجیتال

عنصر بدیهی است ، b -element 3-6 از طول 3 یک بخش خط را تکمیل می کند ، زیرا b -element 6-7 طول 1 نمی تواند ادامه آن باشد. بنابراین ، b -element 6-7 آغاز بخش خط دیجیتال است.

کار برنامه برای تعیین بخش بعدی خط مستقیم با عملکرد OK () سطح صفر شروع می شود ، که K0 -element کامل 6-10 را تشکیل می دهد ، متشکل از L-elements

طول 1،1،2؛ k0 \u003d 2. این عنصر K0 اولیه برای عنصر K1 است. این برنامه یک سطح از سطح اول ایجاد می کند و کنترل را به عملکرد (OK) این شی انتقال می دهد. تابع OK () سطح 1 تابع VKQ سطح 0 را فراخوانی می کند تابع VKQ پارامترهای L-element های K0-element 6-10 را با عناصر بعدی L مقایسه می کند و حضور K0 -ementement 10-14 را تأیید می کند ،

یکسان با K0 -element 6-10. با ادامه کار ، عملکرد VKQ تشخیص می دهد که L -elements های بعدی همان K0 -ement را تشکیل نمی دهند ، کار خود را خاتمه می دهند و کنترل را به عملکرد OK () سطح 1. انتقال می دهند. عملکرد OK () از سطح 1 تابع OE () سطح 0. را فراخوانی می کند. با b -element 6-7 ، حضور اصلاح شده K0- 14ement 14-19 ، متشکل از b- اجزای به طول 1،1،1،2 را تعیین می کند. k0 \u003d 3 ، خاتمه می یابد و کنترل را به عملکرد OK () سطح 1 منتقل می کند .این تابع وجود یک عنصر K1 کامل 6-19 را تشکیل می دهد ، متشکل از دو K0 -

عناصر 1،1،2 ، (k1 \u003d 2) و یک اصلاح شده 1،1،1،2 (k0 \u003d 3). این برنامه یک سطح از سطح دوم ایجاد می کند و کنترل را به عملکرد OK () این شی منتقل می کند. تابع OK () سطح 2 تابع VKQ سطح 1 را فراخوانی می کند ، که به نوبه خود ، تابع سطح VKQ 0 را فراخوانی می کند.

عناصر را تأیید می کند و وجود عناصر 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-element 6-19. علاوه بر این ، عملکرد VKQ سطح 1 عنصر K1 بعدی را با K1-element 6-19 مشخص نمی کند ، به این دلیل که عملکرد VE0 سطح 0 عنصر تغییر یافته K1 را با عنصر K1-6-19 تعیین نمی کند ، با شروع از b-element 40-41 ، و کنترل را به سطح (2) OK برمی گرداند. عملکرد OK () سطح 2 تابع OE () سطح 1 را فراخوانی می کند ، که حضور یک K1 عنصر 32-49 اصلاح شده ، متشکل از K0 -elements 32-36 ، 36- را تعیین می کند. 40 ،

40-44 ، 44-49. در مرحله بعد ، K2-element 6-49 مشخص می شود ، یک شیء از سطح 3 تشکیل می شود ، و K2-element 49-79 اصلاح شده تعیین می شود. این دو عنصر K2 عنصر K3 6-79 را تشکیل می دهند. این کار ساخت قطعه را تکمیل می کند ، زیرا L- های بعدی 79-81 و 81-83 قطعه K0 تشکیل نمی دهند ،

یکسان است با K0 -ementement 6-10 ، و عملکرد VKQ سطح 0 نشانه ای از ادامه نیست

بخش. در دنباله L -elements ، بخش خط مستقیم دیجیتال 6-79 اختصاص داده شده است. برنامه شروع به تعریف بخش بعدی می کند و از L-element 80-82 شروع می شود.

ب نتیجه گیری

1. پیشنهادی الگوریتم جدید انتخاب بخش های خط در خطوط تصویر و اجرای الگوریتم غیر نرم افزاری نرم افزار ، که امکان دستیابی به یک راه حل دقیق برای مسئله تشخیص کانتورهای تصویر را به عنوان توالی بخش های خط فراهم می آورد.

2- اجرای نرم افزار الگوریتم برای انتخاب بخش های خط در محورهای تصاویر با استفاده از وسایل مدرن برنامه نویسی شی گرا انجام می شود که باعث می شود با استفاده حداکثری از منابع رایانه مورد استفاده ، محدودیت های صریح در اندازه تصویر پردازش نشده اعمال نشود.

3. بر اساس الگوریتم پیشنهادی و اجرای نرم افزار آن ، یک راه حل نظری بدست آمد و آزمایشاتی برای شناخت قوس های منحنی های دیجیتال و تقسیم بندی کانتور تصاویر باینری در یک بخش از خطوط مستقیم دیجیتال و قوس منحنی های دیجیتال انجام شد.

فهرست مراجع

1. کووالفسکی V.A. برنامه های بخش مستقیم دیجیتالی برای رمزگذاری تصویر اقتصادی ، در مجموعه مقالات هفتمین کارگاه بین المللی ، DGCI "97 ، مونت پلیه. - فرانسه ، 1997. - 3-5 دسامبر. - ص 51-62.

2. کالمیکوف V.G. روش ساختاری برای توصیف و شناخت بخشهای از خطوط مستقیم دیجیتال در محورهای تصاویر باینری // قطعه elntelekt. - 2002. - شماره 4. - ج 450-457.

3. Kalmykov V.G.، Vishnevsky V.V. تجزیه و تحلیل خطوط اشیاء در تصاویر باینری // ماشین ها و سیستم های ریاضی. - 1997. - شماره 2. - ص 68 - 71.

4. کالمیکوف V.G. قوس منحنی دیجیتال مقدار و رکود // پردازش سیگنال ها و تصویر و تولید تصاویر است. کنفرانس بین المللی همه اوکراینی Pratsi somoi. - کیف - 2004. - 11 - 15 zhovten.

من مدتهاست که می خواهم یک مقاله کلی بنویسم که شامل اصول اولیه تشخیص تصویر ، راهنمای راهنمایی در مورد روشهای اساسی است ، گفتن چه زمانی از آنها استفاده کنید ، چه کارهایی را حل می کنید ، چه کاری می توانید عصرها روی زانوهایم انجام دهم ، و چه بهتر است بدون تیمی در مورد آن فکر نکنید. در 20

من مدتهاست که در مورد شناخت نوری مقالاتی را می نویسم ، بنابراین آنها در ماه چند بار برای من می نویسند مردم مختلف با سؤالاتی در مورد این موضوع بعضی اوقات این احساس را پیدا می کنید که در دنیاهای مختلف با آنها زندگی می کنید. از یک طرف ، شما می فهمید که یک فرد به احتمال زیاد در یک موضوع مرتبط حرفه ای است ، اما روشهای تشخیص نوری بسیار کمی می داند. و توهین آمیز ترین چیز این است که او سعی دارد از یک منطقه دانش نزدیک استفاده کند ، که منطقی است اما در تشخیص تصویر کاملاً کار نمی کند ، اما این را نمی فهمد و اگر شروع به گفتن چیزی از همان مبانی کند ، بسیار توهین می شود. و با توجه به اینکه گفتن از اصول اولیه زمان زیادی است ، که غالباً اینگونه نیست ، حتی غمناک تر می شود.

این مقاله به گونه\u200cای طراحی شده است که شخصی که هرگز به روشهای تشخیص تصویر نپرداخته است ، می تواند در عرض 10-15 دقیقه ، در سر خود نوعی تصویر اساسی از جهان متناسب با موضوع ایجاد کند ، و بفهمد که باید از چه جهتی حفر کند. بسیاری از تکنیک های توصیف شده در اینجا برای رادار و پردازش صوتی کاربرد دارد.
من با چند اصل شروع می کنم که همیشه به مشتری بالقوه یا شخصی که می خواهد تشخیص نوری را شروع کند ، شروع به گفتن می کنیم:

  • هنگام حل یک مشکل ، همیشه از ساده ترین ها بروید. آویزان کردن برچسب نارنجی بر روی یک شخص بسیار آسانتر از دنبال کردن یک شخص است ، و برجسته کردن او با آبشارها. گرفتن دوربین با وضوح بالاتر بسیار ساده تر از ایجاد یک الگوریتم با وضوح فوق العاده است.
  • یک فرمول دقیق مسئله در روشهای تشخیص نوری ، سفارشات از اهمیت بیشتری نسبت به مشکلات برنامه نویسی سیستم دارد: یک کلمه اضافی در مشخصات فنی می تواند 50٪ کار را اضافه کند.
  • هیچ راه حل جهانی برای مشکلات شناخت وجود ندارد. شما نمی توانید الگوریتمی بسازید که به سادگی "هر کتیبه را تشخیص دهد". یک علامت در خیابان و یک برگه متن اساساً اشیاء مختلف هستند. احتمالاً می توان یک الگوریتم کلی را تهیه کرد (در اینجا مثال خوبی از گوگل است) اما به کار یک تیم بزرگ نیاز دارد و از ده ها روال مختلف تشکیل شده است.
  • OpenCV یک کتاب مقدس است که روش های بسیاری دارد و با استفاده از آن می توانید 50٪ از حجم تقریباً هر مشکلی را حل کنید ، اما OpenCV فقط بخش کوچکی از کارهایی است که می توانید انجام دهید. در یک مطالعه نتیجه گیری نوشته شده است: "این مشکل با روش OpenCV حل نمی شود ، بنابراین غیر قابل حل است." سعی کنید از این امر جلوگیری کنید ، تنبل نباشید و هوشیارانه وظیفه فعلی را هر بار از ابتدا و بدون استفاده از الگوهای OpenCV ارزیابی کنید.
ارائه نوعی مشاوره جهانی بسیار دشوار است یا اینکه به شما بگوییم چگونه می توانید نوعی ساختار را ایجاد کنید که در اطراف آن بتوانید راه حلی برای مشکلات خودسرانه بینایی رایانه ایجاد کنید. هدف از این مقاله ساختاری است که می توانید استفاده کنید. سعی خواهم کرد روشهای موجود را به سه گروه تقسیم کنم. گروه اول فیلتر اولیه و تهیه تصویر است. گروه دوم پردازش منطقی نتایج فیلتر است. گروه سوم الگوریتم های تصمیم گیری مبتنی بر پردازش منطقی است. مرزهای بین گروه ها بسیار شرطی است. برای حل یک مسئله ، استفاده از روش ها از همه گروه ها خیلی دور است ؛ گاهی اوقات دو ، و گاهی حتی یک ، کافی است.

لیست روش های ارائه شده در اینجا کامل نیست. پیشنهاد می کنم روشهای انتقادی را در کامنت ها اضافه کنم که من ننوشتم و 2-3 کلمه همراه با هم را به هر یک اختصاص دادم.

قسمت 1. تصفیه

در این گروه روشهایی قرار داده ام که به شما امکان می دهد زمینه های مورد علاقه تصاویر را بدون تحلیل آنها برجسته کنید. بیشتر این روشها نوعی تغییر یکنواخت را در تمام پیکسلهای موجود در تصویر اعمال می کنند. در سطح فیلتر ، تصویر تجزیه و تحلیل نمی شود ، اما نقاطی که فیلتر می شوند می توانند مناطقی با خصوصیات ویژه در نظر گرفته شوند.
باینری شدن بر اساس آستانه ، انتخاب منطقه هیستوگرام
ساده ترین تحول ، باینری شدن آستانه تصویر است. برای یک تصویر RGB و یک تصویر خاکستری مقیاس ، آستانه مقدار رنگ است. کارهای ایده آل وجود دارد که چنین تحولی در آنها کافی است. بیایید بگوییم که شما می خواهید به طور خودکار اشیاء را بر روی یک کاغذ سفید انتخاب کنید:




انتخاب آستانه ای که در آن Binarization رخ می دهد تا حد زیادی روند باینری شدن را تعیین می کند. در این حالت ، تصویر با میانگین رنگ باینری شد. معمولاً binarization با استفاده از الگوریتمی انجام می شود که آستانه انتخابی را انتخاب می کند. این الگوریتم می تواند انتخاب انتظار یا حالت باشد. و می توانید بزرگترین قله هیستوگرام را انتخاب کنید.

Binarization هنگام کار با هیستوگرام می تواند نتایج بسیار جالبی به همراه آورد ، از جمله در شرایطی که تصویری را نه در RGB بلکه در HSV در نظر می گیریم. به عنوان مثال ، رنگ های مورد علاقه را تقسیم کنید. این اصل می تواند برای ساختن یک ردیاب برچسب و یک ردیاب پوست انسان مورد استفاده قرار گیرد.
فیلتر کلاسیک: فوریه ، LPF ، HPF
روش های کلاسیک فیلتر از رادار و پردازش سیگنال می تواند با موفقیت در انواع کارهای تشخیص الگو بکار گرفته شود. روش سنتی در رادار ، که تقریباً در تصاویر خالص مورد استفاده قرار نمی گیرد ، تبدیل فوریه (به طور خاص FFT) است. یکی از معدود استثنایی هایی که در آن از تبدیل یک بعدی فوریه استفاده شده است ، فشرده سازی تصویر است. برای تجزیه و تحلیل تصویر ، معمولاً یک تحول یک بعدی کافی نیست ؛ شما باید از یک تحول دو بعدی بسیار فشرده تر از منابع استفاده کنید.

کمتر کسی در واقع آن را محاسبه می کند ، معمولاً استفاده از حلقوی منطقه مورد نظر با یک فیلتر آماده ، تیز برای فرکانس های بالا (HPF) یا پایین (LPF) ، بسیار سریعتر و آسان تر است. چنین روشی البته امکان تجزیه و تحلیل طیف را نمی دهد ، اما در یک کار خاص برای پردازش فیلم معمولاً آنالیز مورد نیاز نیست بلکه نتیجه است.


ساده ترین نمونه فیلترهایی که زیرنویس را اجرا می کنند فرکانس های کم (فیلتر گاوسی) و پاس بلند (فیلتر گابور).
برای هر نقطه از تصویر ، یک پنجره انتخاب شده و با یک فیلتر با همان اندازه ضرب می شود. نتیجه این نتیجه گیری مقدار امتیاز جدید است. هنگام اجرای فیلتر کم گذر و یک فیلتر گذر بالا ، تصاویری از نوع زیر بدست می آید:



موجک
اما اگر از برخی ویژگیهای دلخواه برای محرکه با سیگنال استفاده کنیم ، چه می شود؟ سپس آن را "تبدیل موجک" می نامند. این تعریف از موجک ها صحیح نیست ، اما به طور سنتی توسعه یافته است که در بسیاری از دستورات آنالیز موجک جستجوی یک الگوی دلخواه در تصویر با استفاده از پیچش با مدل این الگوی است. مجموعه ای از توابع کلاسیک وجود دارد که در آنالیز موجک مورد استفاده قرار می گیرد. این موارد شامل موجک هار ، موجک مورلت ، موجک کلاه مکزیکی و غیره است. ابتکارات Haar ، که در مورد آنها چندین مقاله قبلی من (،) وجود داشت ، به چنین کارکردهایی برای فضای دو بعدی اشاره می کنند.


در زیر 4 نمونه از موجک های کلاسیک وجود دارد. موجک های 3 بعدی هار ، موجک 2 بعدی مایر ، موجک دریایی مکزیکی ، موجک Daubechies. یک مثال خوب استفاده از تفسیر گسترده از موجک ها مشکل یافتن شعله ور در چشم است که خود شعله آن موجک است:

معمولاً از موجک های کلاسیک برای فشرده سازی تصاویر یا طبقه بندی آنها استفاده می شود (در شکل زیر).
همبستگی
پس از چنین تفسیر رایگان از موجک ها از طرف من ، لازم به ذکر ارتباط واقعی است که زمینه ساز آنها است. این یک ابزار ضروری هنگام فیلتر کردن تصاویر است. برنامه کلاسیک همبستگی جریان فیلم برای یافتن شیفت یا جریانهای نوری است. ساده ترین آشکارساز تغییر ، از یک معنا ، همبستگی اختلاف است. جائیکه تصاویر با یکدیگر ارتباط ندارند ، حرکتی رخ داده است.

توابع فیلتر
یک کلاس جالب از فیلترها فیلتر عملکرد است. اینها فیلترهای کاملاً ریاضی هستند که به شما امکان می دهند یک عملکرد ریاضی ساده را در تصویر (خط ، پارابولا ، دایره) تشخیص دهید. یک تصویر جمع شده ساخته شده است ، که در آن برای هر نقطه از تصویر منبع مجموعه ای از توابع تولید کننده آن ترسیم می شوند. کلاسیک ترین تبدیل تبدیل Hough برای خطوط است. در این تحول برای هر نقطه (x؛ y) مجموعه ای از نقاط (a؛ b) از خط مستقیم y \u003d ax + b ترسیم شده است که برابری آن صادق است. تصاویر زیبایی بدست می آید:


(اولین امتیاز اول برای کسی است که اولین کسی است که در تصویر می تواند صید کند و چنین تعریفی پیدا کرده و آن را توضیح می دهد ، به علاوه دوم برای کسی که اولین کسی است که می گوید آنچه در اینجا نشان داده شده است)
تبدیل Hough به شما امکان می دهد عملکردهای قابل تنظیم را پیدا کنید. به عنوان مثال حلقه\u200cها. یک تحول اصلاح شده وجود دارد که به شما امکان می دهد هر شکل را جستجو کنید. این تحول به شدت علاقه مند به ریاضیدانان است. اما هنگام پردازش تصاویر ، متأسفانه همیشه کار نمی کند. سرعت بسیار کند ، حساسیت بسیار بالایی به کیفیت باینریزه شدن. حتی در موقعیت های ایده آل ، ترجیح می دادم با روش های دیگر کنار بیایم.
آنالوگ تبدیل Hough برای خطوط ، تبدیل رادون است. از طریق FFT محاسبه می شود ، که در شرایطی که امتیازات زیادی وجود دارد ، سود عملکرد را به دست می آورد. علاوه بر این ، می توان از آن برای تصویری غیر باینری استفاده کرد.
رئوس مطالب فیلتر
یک کلاس جداگانه از فیلترها حاشیه و فیلتر کلی است. رئوس مطالب بسیار مفید است وقتی می خواهیم از کار با یک تصویر به کار با اشیاء در آن تصویر برویم. وقتی یک شیء به اندازه کافی پیچیده است اما به خوبی تعریف شده است ، در این صورت اغلب تنها راه کار با آن انتخاب کانتورهای آن است. تعدادی الگوریتم وجود دارد که مشکل فیلتر کردن کانتور را حل می کنند:

کان اغلب استفاده می شود ، که به خوبی کار می کند و اجرای آن در OpenCV است (Sobel نیز در آنجا است ، اما او برای کانتورها بدتر به نظر می رسد).



فیلترهای دیگر
در بالا فیلترها قرار دارند که اصلاحات آنها به حل 80-90٪ از مشکلات کمک می کند. اما در کنار آنها ، فیلترهای کمیاب تری وجود دارد که در کارهای محلی استفاده می شود. ده ها فیلتر از این دست وجود دارد ، من همه آنها را فهرست نمی کنم. جالب است که فیلترهای تکراری (به عنوان مثال ، یک مدل ظاهری فعال) و همچنین دگرگونی های ریجلت و منحنی ، که آلیاژی از فیلتر و تجزیه و تحلیل موجک کلاسیک در زمینه تبدیل رادون هستند. تبدیل پرتو به زیبایی در مرز تبدیل موجک و تحلیل منطقی کار می کند و به شما امکان می دهد خطوط برجسته را برجسته کنید:

اما این تحولات بسیار خاص و مناسب برای کارهای نادر است.

قسمت 2. پردازش منطقی نتایج فیلتر

فیلتر کردن مجموعه ای از داده های مناسب برای پردازش را فراهم می کند. اما غالباً شما می توانید بدون پردازش این داده ها فقط از این داده ها استفاده کرده و از آنها استفاده کنید. در این بخش چندین روش کلاسیک برای انتقال از تصویر به خصوصیات اشیاء یا خود اشیاء وجود دارد.
مرفولوژی
به نظر من انتقال از فیلتر به منطق روش های مورفولوژی ریاضی است (،). در حقیقت ، اینها ساده ترین عملیات برای ساخت و فرسایش تصاویر باینری هستند. این روش ها به شما امکان می دهند با افزایش یا کاهش عناصر موجود ، نویز را از یک تصویر باینری حذف کنید. الگوریتم های کانتورینگ بر اساس مورفولوژی ریاضی وجود دارد ، اما آنها معمولاً از نوعی الگوریتم ترکیبی یا الگوریتم ترکیبی استفاده می کنند.
آنالیز کانتور
الگوریتم های دریافت مرز قبلاً در بخش فیلتر ذکر شده است. مرزهای حاصل کاملاً به کانتورها تبدیل می شوند. برای الگوریتم کن ، این اتفاق به طور خودکار رخ می دهد ؛ برای سایر الگوریتم ها ، بایناری شدن اضافی لازم است. برای الگوریتم باینری ، برای مثال ، یک الگوریتم سوسک می توانید یک کانتور تهیه کنید.
طرح کلی ویژگی منحصر به فرد یک شی است. این اغلب باعث می شود که شیء در امتداد طرح مشخص شود. یک دستگاه ریاضی قدرتمند وجود دارد که به شما امکان می دهد این کار را انجام دهید. دستگاه به آنالیز کانتور (،) گفته می شود.

صادقانه بگویم ، من هرگز نتوانسته ام تحلیل کانتور را در مشکلات واقعی به کار گیرم. شرایط خیلی ایده آل لازم است. یا مرزی وجود ندارد ، یا سر و صدای زیادی زیاد است. اما ، اگر شما نیاز به تشخیص چیزی در شرایط ایده آل دارید ، آنالیز کانتور یک گزینه عالی است. این نسخهها کار بسیار سریع ، ریاضیات زیبا و منطق روشن است.
نکات ویژه
نقاط مفرد ویژگی های منحصر به فرد یک شی است که به شما امکان می دهد یک شیء را با خود یا کلاسهای مشابه شی مرتبط کنید. چندین نکته برای برجسته کردن چنین نکاتی وجود دارد. برخی از روشها نکات ویژه را در قابهای همسایه برجسته می کنند ، بعضی دیگر پس از مدت زمان طولانی و هنگام تغییر نور ، برخی به شما امکان می دهند نقاط خاصی پیدا کنید که حتی در هنگام چرخش جسم نیز چنین چیزی باقی بماند. بیایید با روش هایی شروع کنیم که به ما امکان می دهند نقاطی بی نظیر پیدا کنیم که چندان پایدار نباشند ، اما به سرعت محاسبه می شوند ، و سپس به افزایش پیچیدگی خواهیم پرداخت:
کلاس اول امتیازهای مفرد که برای چند ثانیه پایدار است. چنین نقاطی برای هدایت شی بین قاب های ویدیویی مجاور یا ادغام تصاویر از دوربین های همجوار استفاده می شود. این نکات شامل حداکثر تصویر محلی ، زوایای تصویر (بهترین ردیابها ، شاید ردیاب هاریس) ، نقاطی که در آن حداکثر پراکندگی حاصل می شود ، شیب های خاصی و غیره است.
درجه دوم. نقاط خاص که با تغییر نور و حرکات کوچک شیء پایدار هستند. چنین نکاتی در درجه اول برای آموزش و طبقه بندی بعدی انواع شی ها استفاده می شود. به عنوان مثال ، طبقه بندی کننده عابر پیاده یا طبقه بندی صورت ، محصول سیستمی است که در اطراف چنین نقاط ساخته شده است. برخی از موجک های که قبلاً ذکر شد می توانند زمینه ساز چنین نکاتی شوند. به عنوان مثال ، Haar Primitives ، جستجوی درخشش ، جستجوی عملکردهای خاص دیگر. این نقاط شامل نقاطی است که با استفاده از روش هیستوگرام شیب جهت (HOG) یافت می شود.
کلاس سوم. نقاط پایدار من فقط در مورد دو روش می دانم که ثبات کاملی دارند و در مورد اصلاحات آنها. اینها SURF و SIFT هستند. آنها به شما اجازه می دهند حتی در هنگام چرخش تصویر نقاط ویژه ای پیدا کنید. محاسبه چنین امتیازاتی نسبت به سایر روشها بیشتر طول می کشد ، اما کافی است زمان محدود... متأسفانه ، این روش ها ثبت اختراع شده اند. اگرچه ، در روسیه ، الگوریتم ها ثبت اختراع نشده اند ، بنابراین آنها را برای بازار داخلی استفاده کنید.

قسمت 3. آموزش

قسمت سوم داستان به روشهایی اختصاص می یابد که به طور مستقیم با تصویر کار نمی کنند ، اما امکان تصمیم گیری را می دهند. اینها عمدتاً روشهای مختلف یادگیری ماشین و تصمیم گیری هستند. به تازگی Yandyks یک دوره در مورد این موضوع را در Habr ارسال کرده است ، انتخاب بسیار خوبی است. در اینجا آن را در نسخه متن است. برای مطالعه جدی در مورد موضوع ، من به شدت توصیه می کنم آنها را تماشا کنید. در اینجا سعی خواهم کرد چندین روش اساسی را که در تشخیص الگوی مورد استفاده قرار می گیرد بیان کنم.
در 80٪ موقعیت ها ، جوهر یادگیری در مسئله شناخت به شرح زیر است:
یک مجموعه آزمایش با چندین کلاس از اشیاء وجود دارد. بگذارید حضور / عدم حضور یک شخص در عکس باشد. برای هر تصویر مجموعه ای از ویژگی ها وجود دارد که توسط برخی ویژگی ها مشخص شده است ، خواه Haar، HOG، SURF یا نوعی موجک. الگوریتم یادگیری باید چنین مدلی را بسازد ، براساس آن قادر خواهد بود یک تصویر جدید را تجزیه و تحلیل کند و تصمیم بگیرد که کدام یک از اشیاء در تصویر قرار دارند.
چگونه تمام شده است؟ هر یک از تصاویر آزمون نقطه ای از فضای ویژگی است. مختصات آن وزن هر ویژگی در تصویر است. بگذارید علائم ما این باشد: "وجود چشم" ، "وجود بینی" ، "وجود دو دست" ، "حضور گوش" و غیره. همه این علائم را با آشکارسازهای موجود خود که در آنها آموزش دیده می شود برجسته خواهیم کرد. انسان. برای شخص در چنین فضایی ، نکته صحیح خواهد بود. برای میمون ، نکته برای اسب است. طبقه بندیگر بر روی نمونه ای از نمونه ها آموزش داده می شود. اما همه عکس ها دست را نشان نمی دهند ، دیگران چشم ندارند و در سوم ، میمون به دلیل خطا در طبقه بندی ، بینی انسان دارد. طبقه بندی شده انسانی آموزش دیده به طور خودکار فضای ویژگی را به شکلی تقسیم می کند که می گوید: اگر اولین ویژگی در دامنه 0.5 باشد. در اصل ، هدف از طبقه بندی این است که در فضای ویژگی مناطقی را که برای اشیاء طبقه بندی مشخص هستند ترسیم کند. اینگونه تقریب پیاپی به جواب یکی از طبقه بندی کنندگان (AdaBoost) در فضای دو بعدی خواهد بود:


طبقه بندی کننده های زیادی وجود دارد. هر کدام از آنها در بعضی از وظایف خود بهتر عمل می کنند. وظیفه انتخاب طبقه بندی کننده برای یک کار خاص از بسیاری جهات یک هنر است. در اینجا چند عکس زیبا در مورد موضوع آورده شده است.
مورد ساده ، جدایی یک بعدی
بگذارید مثال را ساده ترین مورد طبقه بندی قرار دهیم ، وقتی فضای ویژگی یک بعدی است و باید 2 کلاس را از هم جدا کنیم. وضعیت رایج تر از چیزی است که ممکن است تصور کنید: به عنوان مثال ، هنگامی که باید دو سیگنال را تشخیص دهید ، یا یک الگوی را با یک نمونه مقایسه کنید. بیایید بگوییم که یک نمونه آموزشی داریم. در این حالت ، تصویری به دست می آید ، که در محور X اندازه گیری شباهت وجود دارد ، و در محور Y - تعداد وقایع با چنین اندازه گیری. وقتی جسم جستجو مانند خودش ظاهر می شود ، گاوسی چپ به دست می آید. وقتی دوست ندارید - درست است. مقدار X \u003d 0.4 نمونه ها را به گونه ای تقسیم می کند که یک تصمیم اشتباه احتمال تصمیم گیری اشتباه را به حداقل می رساند. این جستجوی چنین جداکننده است که مسئله طبقه بندی است.


یک نکته کوچک معیاری که خطا را به حداقل می رساند همیشه بهینه نخواهد بود. نمودار بعدی نمودار یک سیستم تشخیص عنبیه واقعی است. برای چنین سیستمی ، ملاک به گونه ای انتخاب می شود که احتمال پذیرش کاذب شخص غیرمجاز را به شیء به حداقل برساند. این احتمال "خطای نوع اول" ، "احتمال هشدار غلط" ، "مثبت کاذب" نامیده می شود. در ادبیات انگلیسی زبان "نرخ دسترسی غلط".
) AdaBusta یکی از رایج ترین طبقه بندی ها است. به عنوان مثال آبشار هار بر روی آن ساخته شده است. معمولاً هنگام استفاده از طبقه بندی باینری از آنها استفاده می شود ، اما هیچ چیزی مانع از تدریس تعداد بیشتری کلاس نمی شود.
SVM (، ، ،) یکی از قدرتمندترین طبقه بندی کننده ها که دارای کاربردهای زیادی است. در اصل ، در مورد وظایف یادگیری که با آنها روبرو شدم ، به شکلی مشابه adabusta کار می کرد. به اندازه کافی سریع در نظر گرفته می شود ، اما آموزش آن از Adabusta دشوارتر است و انتخاب هسته صحیح لازم است.

همچنین شبکه های عصبی و رگرسیون وجود دارد. اما برای اینکه به طور خلاصه آنها را طبقه بندی کنیم و تفاوت آنها را نشان دهیم ، مقاله ای بسیار بیشتر از این مقاله مورد نیاز است.
________________________________________________
امیدوارم که بتوانم یک مرور کلی از روشهای استفاده شده بدون غواصی در ریاضی و توضیحات انجام دهم. شاید به کسی کمک کند. اگرچه ، البته مقاله ناقص است و در مورد کار با تصاویر استریو ، یا در مورد OLS با فیلتر کالمن ، یا در مورد رویکرد تطبیقی \u200b\u200bبیزی صحبت نشده است.
اگر مقاله را دوست دارید ، سعی می کنم قسمت دوم را با انتخاب نمونه هایی از چگونگی حل وظایف ImageRecognition موجود انجام دهم.

و در نهایت

چه چیزی بخوانم؟
1) یک بار کتاب «پردازش تصویر دیجیتال» اثر B. Yane را خیلی دوست داشتم ، که به سادگی و واضح نوشته شده است ، اما در عین حال تقریباً تمام ریاضیات ارائه شده است. برای آشنایی با روشهای موجود خوب است.
2) کلاسیک های ژانر R. Gonzalez، R. Woods "پردازش تصویر دیجیتال" است. به دلایلی برایم دشوارتر از حالت اول بود. ریاضی بسیار کمتری ، اما روشها و تصاویر بیشتری دارند.
3) "پردازش و تجزیه و تحلیل تصویر در کارهای بینایی ماشین" - بر اساس دوره تدریس شده در یکی از بخش های PhysTech نوشته شده است. روش ها و توضیحات مفصل آنها وجود دارد. اما به نظر من ، این کتاب دارای دو اشکال بزرگ است: کتاب به شدت روی بسته نرم افزاری که همراه آن است متمرکز شده است ، در کتاب اغلب اوقات توضیحی از یک روش ساده به جنگل ریاضی تبدیل می شود ، که از آن تهیه یک نمودار ساختاری از روش کار دشوار است. اما نویسندگان یک وب سایت مناسب تهیه کردند که تقریباً تمام مطالب ارائه شده است - wiki.technicalvision.ru
4) به دلایلی ، به نظر می رسد کتاب خوبی که تصویر جهانی را که هنگام مطالعه تشخیص تصویر و یادگیری ماشین ایجاد می شود ، ایجاد و پیوند می دهد ، "درباره هوشمندی" اثر جف هاوکینز است. هیچ روش مستقیمی در آنجا وجود ندارد ، اما افکار زیادی وجود دارد که باید درباره این که روش های مستقیم پردازش تصویر از کجا آمده اند فکر کنید. وقتی آن را با دقت بخوانید ، متوجه می شوید که قبلاً روشهای مغز انسان را مشاهده کرده اید ، اما در کارهای پردازش فیلم.

فرمول مسئله تعیین شده توسط هدف و امکانات اجرای آن.

هدف برنامه ای را برای طبقه بندی قطعات مستطیل به قطعات با کیفیت و ناقص تهیه کنید.

فرصت هایی برای اجرای کار تعیین شده توسط قابلیت های رایانه. کامپیوتر قادر به پردازش اطلاعات عددی در یک دنباله الگوریتمی است. برای تحقق قابلیت های یک کامپیوتر ، لازم است مشکل حل شده را شبیه سازی کنید.

شبیه سازی با استفاده از رایانه به معنای انتقال از یک شی واقعی (جهان) به توصیف کد شده از ویژگی های آن با استفاده از داده ها و عملیات روی آنها است. چنین انتقال ، به عنوان یک قاعده ، در چند مرحله انجام می شود:

انتزاع - مفهوم - برداشت - انتخاب اساسی ترین ویژگی های جسم از دیدگاه کار.

انجام تحقیقاتی لازم است که به شما امکان می دهد از موضوع مدل سازی به سمت موضوع مدل سازی بروید و همه موارد غیر ضروری را مطابق با هدف در کار خود دور کنید.

چگونه یک مستطیل با چهارگوش دیگر متفاوت است؟

  • برابری طرفهای مخالف.
  • موازی طرف های مخالف.
  • برابری موربها.
  • همه گوشه ها راست هستند.

حداقل علائم مورد نیاز برای برطرف کردن مشکوک مسئله چیست؟

  • برابری 2 طرف مقابل + برابری موربها.
  • موازی 2 طرف مقابل + برابری موربها.
  • سه گوشه راست است.

بنابراین ، به لطف انتزاع ، ما یک مدل اطلاعات کلامی گرفتیم. اما ، هنوز هم برای کامپیوتر غیر قابل درک است. او یک مدل ریاضی را که به عنوان الگوریتم ارائه شده و در نرم افزار پیاده سازی شده درک می کند.

روش شناسی برای اجرای کار.

نقاشی از یک قسمت با کیفیت (مستطیل) یا یک قسمت معیوب (چهار ضلعی) از بخش ها (دستور LINE) در سیستم گرافیکی اتوکد ساخته شده و به آن صادر می شود. برنامه kntrs.lsp () داده های قطعه (مختصات vertex) را از پرونده DXF می خواند و آن را به ترتیب متن برگردان vertex vertical به پرونده متنی 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 \u003d K1جایی که به - شیب یک خط مستقیم K \u003d (Y2-Y1) / (X2-X1)

چگونه مفهوم "زاویه مناسب" را رسم کنیم؟ به عنوان بخشی از کار مورد نظر ، وجود "زاویه سمت راست" با علامت عمود بودن قسمتها قابل تعیین است: K2 \u003d -1 / K1جایی که به آیا شیب خط مستقیم است. K \u003d (Y-Y0) / (X-X0).

نمایش مدل روی رایانه

هر گونه اطلاعات در نهایت با استفاده از اعداد باینری (کدها) در یک مدل درون دستگاه در رایانه نمایش داده می شود. پیش از این ، برنامه نویسی توسط برنامه نویسی انجام می شد. امروزه بیشتر برنامه ها به زبان های الگوریتمی نوشته شده اند.

زنگ

کسانی هستند که این خبر را قبل از شما می خوانند.
برای دریافت آخرین مقالات مشترک شوید.
پست الکترونیک
نام
نام خانوادگی
چگونه می خواهید The Bell را بخوانید
بدون اسپم