بایگانی برچسب برای: بهسان اندیش

پردازش سیگنال چیست؟

پردازش سیگنال تکنولوژی راهبردی است که به کمک آن نظریه های بنیادی، برنامه های کاربردی ،الگوریتم ها ، و پیاده سازی پردازش و انتقال اطلاعات در فرمت های فیزیکی ، نمادین ، یا انتزاعی را که به عنوان سیگنال شناخته می شود را شامل می شود. این علم با استفاده از نمایش های ریاضی ، احتمالی ،اکتشافی ، زبانشناسی و روش هایی برای نمایش مثل مدل کردن ، آنالیز ، سنتز ، اکتشاف ، بازیابی و … استفاده می کند.

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

تاریخچه

با توجه به الن وی. اوپنهایم و رنالد شافر ،اصول اولیه پردازش سیگنال در روش های آنالیز عددی کلاسیک در قرن 17 یافت می شود. اوپنهایم و شافر اشاره کرده اند که “دیجیتالی ساختن” یا پالایش دیجیتالی این روش ها درسیستم های کنترلی در سال های 1940 و 1950 می توان یافت.

 

زمینه های کاربرد

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

در سیستم های ارتباطی پردازش سیگنال ممکن است در زمینه های زیر رخ دهد:

  • مدل اتصال متقابل سامانه های باز، 1 در هفت لایه مدل OSI ، لایه فیزیکی (مدولاسیون،برابر سازی ، هم تافتنو غیره.);
  • OSI لایه 2 لایه پیوند داده ای ;
  • OSI 6، لایه لایه نمایش ( برنامه نویسی از جمله تبدیل آنالوگ به دیجیتالو فشرده سازی سیگنال).

 

دستگاه های معمولی

  • فیلتر – برای مثال آنالوگ (منفعل یا فعال) یا دیجیتال (FIRهای IIR, دامنه فرکانسی یا کنترل تصادفی و غیره.)
  • نمونه برداری و مبدل سیگنال های آنالوگ به دیجیتال برای فراگیری سیگنالها و بازسازی آن ها، که شامل اندازه گیری فیزیکی سیگنال ها،ذخیره سازی یا انتقال آن را به عنوان سیگنال دیجیتال و بازسازی سیگنال اصلی یا تقریبی آن در کاربرد های احتمالی بعدی.
  • فشرده سازی داده ها
  • پردازشگر سیگنال دیجیتال سیگنال دیجیتال (DSPs)

 

روش های ریاضی کاربردی

  • معادلات دیفرانسیل
  • رابطه بازگشتی
  • تئوری تبدیل
  • تجزیه و تحلیل زمان-فرکانس – برای پردازش یگنال های غیر ثابت
  • تخمین طیفی – برای تعیین محتوای طیفی (یعنی توزیع قدرت بر فرکانس) در یک سری زمانی
  • پردازش سیگنال آماری – تجزیه و تحلیل و استخراج اطلاعات از سیگنال و نویز بر اساس خواص اتفاقی
  • نظریه سیستم خطی تغییر ناپذیر با زمان و نظریه تبدیل
  • شناسایی و طبقه بندی سیستم
  • حساب دیفرانسیل و انتگرال
  • فضاهای برداری و جبر خطی
  • آنالیز تابعی
  • احتمال و فرایندهای تصادفی
  • نظریه تشخیص
  • الگوریتم های تخمینی
  • بهینه سازی
  • آنالیز عددی
  • سری های زمانی
  • داده کاوی – برای تجزیه و تحلیل آماری روابط بین مقادیر زیادی از متغیرها (در این زمینه برای نمایش بسیاری از سیگنال های فیزیکی) برای استخراج الگوهای ناشناحته

 

دسته بندی ها

پردازش سیگنال آنالوگ

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

 

پردازش سیگنال های پیوسته در زمان

پردازش سیگنال های پیوسته در زمان برای سیگنال های است که با تغییرات پیوسته دامنه تغییر می کنند(بدون در نظر گرفتن بعضی نقاط منقطع)

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

 

پردازش سیگنال های گسسته در زمان

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

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

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

 

پردازش سیگنال دیجیتال

پردازش سیگنال های دیجیتال پردازش نمونه های سیگنال در زمان های گسسته می باشد. پردازش توسط , رایانه ها یا با مدارهای دیجیتال همچون ASIC ها ، field-FPGA ها ،یا پردازنده های سیگنال دیجیتال ها انجام می گیرد . عملیات های معمول ریاضی شامل نمایش نقطه ثابت ، ممیز شناور ، مقدار حقیقی یا مختلط اعداد ، ضرب و جمع از این جمله می باشند. بعضی دیگر از عملیات های معمول توسط دایره بافر و جدول های look-up توسط سخت افزار پشتیبانی می شوند. مثال های از این الگوریتم ها تبدیل فوریه سریع (FFT) ، فیلتر های FIR ، فیلتر های IIR ، و فیلتر تطبیقیمی باشند.

 

غیر خطی پردازش سیگنال های غیرخطی

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

منبع


پردازش سیگنال چیست؟ (Signal processing)

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

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

 

مثال ها

شکل زیر سیگنال صوتی را نشان می‌دهد که هنگام فشار دادن کلید ۱ بر روی تلفن تولید می‌شود:

 

شکل 1-سیگنال پیوسته

 

شکل 2-سیگنال گسسته

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

همگام با ورود این سیگنال دیجیتالی به کارت صوتی خروجی آنالوگ (سیگنال پیوسته) در آن تولید می‌شود که این خروجی نیز وارد سیستم پخش صدا شده و موج تولید شده توسط بلندگو پس از پخش در فضا توسط گوش ما حس می‌گردد. این کل فرآیندی است که یک سیگنال صوتی دیجیتالی طی می‌کند تا توسط گوش ما شنیده شود.

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

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

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

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

 

تبدیل آنالوگ به دیجیتال

دیجیتال کردن سیگنال بر روی سیستم‌های کامپیوتری امروزی توسط کارت‌های صوتی انجام می‌پذیرد. یک سیگنال آنالوگ از لحظه ورود تا دیجیتال شدن مراحل زیر را به ترتیب طی می‌کند:

• آماده کردن سیگنال ورودی
• فیلتر کردن سیگنال ورودی
• نمونه برداری
• چندی کردن
شماتیک زیر نیز فرآیند تبدیل سیگنال آنالوگ به دیجیتال را نشان می‌دهد:

 

آماده کردن سیگنال ورودی

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

در  مراحل بعدی عمل دیجیتال کردن زمانی که از مبدل آنالوگ به دیجیتال استفاده  می‌کنیم، عملا نیاز به ولتاژهایی در بازه ( 5..0) ، ( 5-..5 ) یا … ولت نیاز  داریم. اما  همانطور که دیدیم خروجی برخی از سنسورها ( همانند سنسور نوار قلبی ) در حد  میلی ولت  است. بنابراین نیاز به روشی داریم که بتوانیم خروجی سنسورها را تقویت کرده و  آن‌ها  را برای ورود به مبدل‌های آنالوگ به دیجیتال آماده کنیم.

این  مرحله از عمل دیجیتال کردن ورودی را آماده سازی سیگنال ورودی می‌گوییم که  در آن از  تقویت کننده‌ها ( آمپلی فایر ) برای افزایش/ کاهش بهره ولتاژ استفاده می‌ کنیم. لازم  به ذکر است که امروزه سیستم تقویت کننده سیگنال به شکل توکار بر روی کارت  های صوتی  وجود دارد و در کارهای معمول خود نیاز به نصب تقویت کننده خارجی به کارت  صوتی نداریم.در سیستم عامل ویندوز ضریب بهره آمپلی فایر کارت صوتی توسط Volume Controller خود سیستم عامل تعیین می‌شود.

 

فیلتر کردن سیگنال

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

 

 طراحی فیلترها

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

 

نمونه برداری کردن

پس  از آنکه سیگنال ورودی آماده شد و فیلترکردن آن نیز انجام پذیرفت، دیجیتال  کردن سیگنال آنالوگ آغاز می‌شود. نمونه برداری بدین مفهوم است که در بازه‌های  زمانی مشخص مقدار سیگنال ورودی را خوانده و برای چندی شدن به مرحله بعد انتقال دهیم.  به عنوان مثال  زمانی که می‌خواهیم در هر ثانیه 44000 نمونه از سیگنال ورودی برداریم،  باید در بازه  های زمانی 0.00002 ثانیه مقدار سیگنال آنالوگ را خوانده و به مرحله بعد  منتقل کنیم. به عنوان مثال زمانی که در میکروفون صحبت می‌کنید، با فرض اینکه نرخ  نمونه برداری 44000 نمونه در ثانیه باشد، سیستم دیجیتال کننده هر 0.00002 ثانیه  یکبار ولتاز خروجی میکروفون را – که تقویت و فیلتر شده است – خوانده و مقدار آن  را به چندی  کننده ارسال می‌کند.

 

چندی کردن سیگنال

در  مرحله نمونه برداری دیدیم که یک نمونه از سیگنال به شکل ولتاژ نمونه برداری  شد. در  این مرحله ولتاز نمونه برداری شده باید به شکل دیجیتالی ( عدد باینری )  تبدیل شود.  برای این منظور نیز از مبدل‌های آنالوگ به دیجیتال استفاده می‌کنیم. به  عنوان مثال  یک مبدل انالوگ به دیجیتال 8 بیتی به ازای ورودی خود عددی بین 0 تا 255  تولید می‌ کند. فرض کنید ورودی مبدل در بازه 0 تا 5 ولت باشد. این بدان معناست که به  ازای ورودی 0 ولت ، خروجی مبدل عدد باینری 0 و به ازای ورودی 5 ولت خروجی مبدل  عدد باینری 255 خواهد بود. بدیهی است که افزایش تعداد بیت‌های مبدل موجب افزایش  دقت چندی  شدن خواهد شد.

 

مقدمه

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

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

بنابراین روش سخت‌افزاری جهت رسیدن به تصاویری با کیفیت و رزولوشن بالاتر، بسیار پرهزینه و عملاً تا حدی غیر ممکن می‌باشد و معمولاً نمی‌توان از حد معینی، بدلیل محدودیت‌های تکنیکی موجود در تکنولوژی ساخت مدارات مجتمع، فراتر رفت.

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

 

فراتفکیک پذیری

این تکنیک از لحاظ نامگذاری بدلیل آنکه قادر خواهیم بود از محدوده توانایی سیستم تصویر برداری فراتر رویم، فرا تفکیک پذیری نامیده می‌شود؛ در این تکنیک تلفیق چندین تصویر با رزولوشن پائین تر باعث تولید تصویر نهایی با رزولوشن بالاتر می‌گردد. نکته کلیدی در این تکنیک، استفاده از در هم آمیختگی می‌باشد زیرا که هر تصویر برداشت شده از صحنه مورد نظر تنها بخشی از اطلاعات فرکانس بالای صحنه را دریافت نموده‌است و این اطلاعات فرکانس بالا در تمام تصاویر پخش شده‌است، بنابراین می‌توان از این اطلاعات توزیع شده استفاده نمود و تصویری با رزولوشن و کیفیت بالاتر ایجاد نمود. مطالعات انجام شده نشان می‌دهد که پدیده در هم آمیختگی به دلیل محدود بودن تعداد پیکسل هایِ حسگر هایِ دوربین هایِ دیجیتالی می‌باشد.
فراتفکیک پذیری، چرا و چه وقت ممکن می‌باشد؟ [ویرایش]

سوال بنیادی این می‌باشد که چه عاملی فراتفکیک پذیری را ممکن می‌سازد. این پرسش را توسط مثالی که در ادامه بدان خواهیم پرداخت، توضیح خواهیم داد؛ چنانچه حسگر دوربینی با ابعاد ۴*۴ از صحنه خاصی تصویر برداری نماید، با افزایش تعداد سلول‌های حسگر دوربین به تعداد ۱۶*۱۶، تصویر برداشت شده دارای رزولوشن بیشتری خواهد بود. حال اگر توسط همان حسگر چهار تصویر از یک صحنه یکسان برداشت نمائیم که اختلاف آنها در حد مقداری صحیح از واحد پیکسل باشد، فراتفکیک پذیری ممکن نخواهد بود، ولی چنانچه چهار تصویر دریافتی اختلافی در حد کسری از واحد پیکسل داشته باشند، فراتفکیک پذیری ممکن می‌گردد؛ زیرا که اختلاف چهار تصویر فوق در حد کسری از واحد پیکسل، اطلاعات اضافه‌ای را از صحنه برداشت شده ایجاب می‌کند که پتانسیل افزایش رزولوشن را تقویت می‌نماید.

 

پیکربندی تکنیک فراتفکیک پذیری

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

پس از آنکه تصاویر ثبت شدند، جهت بدست آوردن تصویری با رزولوشن بالا از نمونه‌های نمونه برداری شده بصورت غیریکنواخت، یک روش بازسازی تاثیر ناپذیر از نویز (Robust)، لازم می‌باشد. بخش اصلی تر، بخش ثبت تصویر می‌باشد که در تکنیک فراتفکیک پذیری از اهمیت بالایی برخوردار می‌باشد، زیرا که در این بخش تفاوت اصلی میان درونیابی و تکنیک فراتفکیک پذیری بطور آشکار مشخص می‌شود.

[عکس: Super-resolution_example_closeup.png]ت
تصویر سمت چپ تصویر اصلی و تصویر سمت راست تصویر بعد از فراتفکیک‌پذیری است

 

چرا دوربین‌ها 29.97 فریم بر ثانیه فیلم‌برداری می‌کنند و نه 30 فریم؟

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

واحد اندازه‌گیری فریم،FPS یا همان فریم در ثانیه است. برای همین وقتی در مشخصات فیلم‌برداری دوربین عدد ۲۹٫۹۷ درج می‌شود این عدد معادل تعداد فریم هایی است که آن دوربین در عرض یک ثانیه ثبت می‌کند. حتی در دوربین‌های پیشرفته‌تر که به ادعای شرکت سازنده می‌توانند تصاویر را با فریم ریت 60 fps رکورد کنند در ۹۹ درصد مواقع در هر دو حالت DF و NDF به صورت دقیق با فریم ریت ۵۹.۹۴ فریم بر ثانیه تصاویر را ضبط می‌کند. با این تفاسیر چرا این عدد دقیقاً ۳۰ یا ۶۰ فریم در ثانیه نیست؟

مروری بر گذشته

در زمان معرفی اولین تلویزیون‌های سیاه و سفید NTSC فریم ریت دقیقاً معادل ۳۰ فریم در ثانیه بود؛ اما رد پای عدد عجیب ۲۹٫۹۷ و (بعدها ۵۹.۹۴) فریم در ثانیه برای اولین بار با معرفی تلویزیون‌های رنگی پیدا شد. در زمان تولید این تلویزیون‌ها، مهندسان سازنده باید اطلاعات رنگ را نیز به سیگنال‌های تلویزیونی اضافه می‌کردند؛ اما به خاطر محدودیت پهنای باند تصمیم گرفتند که تا حد ناچیزی از فریم ریت تلویزیون بکاهند تا اطلاعات رنگ نیز بدون اینکه سیگنال‌های تلویزیونی دچار معایبی شوند در آن گنجانده شود.

 

 

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

 

 

از طرفی دیگر استاندارد تلویزیونی PAL کاملاً برای سازگاری با تلویزیون‌های رنگی در نظر گرفته شده است. در نتیجه بدون لطمه خوردن به تفکیک‌پذیری، از فریم ریتی مناسبی برخوردار است؛ بنابراین بستگی دارد که دوربین با چه استانداردی (PAL و NTSC) تصاویر را رکورد می‌کند.

 

 

Interpolation يا درون یابی

Interpolation يا درون یابی (كه گاهي resampling نيز ناميده ‌مي‌شود) يك روش گرافيكي براي افزايش يا كاهش تعداد پيكسل‌هاي يك تصوير ديجيتالي است. دوربين‌هاي ديجيتالي از اين روش براي زوم ديجيتال و يا افزايش مصنوعي ابعاد تصوير، نسبت به تصوير اصلي ثبت شده توسط حسگر خود استفاده مي‌كنند. كيفيت تصوير نهايي حاصل از درون‌يابي به پيچيدگي الگوريتم ساخت تصوير بستگي دارد. حالت‌هاي متفاوت درون‌يابي عبارتند است از:

Nearest Neighbor Interpolation

اين روش ساده‌ترين عمليات درون‌يابي محسوب مي‌شود كه اساساً پيكسل‌هاي بزرگ‌تري را ايجاد مي‌كند و رنگ هر پيكسل در تصوير جديد، با رنگ نزديك‌ترين پيكسل در تصوير اصلي مطابقت دارد. به عنوان مثال اگر شما يك تصوير را 200 درصد بزرگ كنيد، يك پيكسل تصوير به يك فضاي چهار پيكسلي (دو پيكسل در دو پيكسل) با رنگ پيكسل اوليه تبديل مي‌شود. بسياري از دوربين‌هاي ديجيتالي براي زوم‌كردن روي يك سوژه از اين روش استفاده مي‌كنند. زيرا اين روش هيچ تأثيري بر اطلاعات رنگي تصوير نمي‌گذارد. اصولاً بهتر است از اين روش براي افزايش ابعاد تصوير استفاده نشود. چرا كه موجب ايجاد حالت شطرنجي در تصوير مي‌گردد.

Bilinear Interpolation

اين روش ارزش يك پيكسل رنگي را براساس چهار پيكسل در جهت‌هاي عمودي و افقي پيكسل در تصوير اصلي معين‌مي‌كند. تصوير جديد داراي خاصيت Anti-aliasing است و تقريباً هيچ اثري از پيكسل‌هاي شطرنجي در آن ديده نمي‌شود.

Bicubic Interpolation

اين روش داراي پيچيده‌ترين الگوريتم درون‌يابي است و تصويري كه با اين روش به دست مي‌آيد، لبه‌هاي بسيارنرم‌تري پيدا مي‌كند. در اين حالت پيكسل جديد براساس ارزش تخميني 16 پيكسل (چهار پيكسل در چهار پيكسل) برآورد‌مي‌شود.

شايان ذكر است كه اغلب دوربين‌ها، چاپگرها و نرم‌افزارهاي گرافيكي براي تغيير تعداد پيكسل‌هاي يك تصوير از اين روش استفاده مي‌كنند.
نرم‌افزار Photoshop CS دو نوع Sharper و Smoother اين درون‌يابي را نيز ارائه مي‌دهد.

Fractal Interpolation

اين روش براي بزرگ كردن تصوير در ابعاد خيلي بزرگ (به‌عنوان مثال چاپ روي بدنه يك اتوبوس) روش بسيار مناسبي به‌شمار مي‌رود. زيرا با دقت خوبي مي‌تواند شكل اجزاي تصوير را حفظ كند. لبه‌هاي بسيار تميزتر و صاف‌تري را نيز برجا مي‌گذارد. در اين حالت مناطق محوي كه در لبه‌هاي تصوير در روش‌هاي قبل وجود داشتند، به ندرت ديده مي‌شوند. البته روش‌هاي ديگري هم وجود دارند كه جز در برنامه‌هاي گرافيكي پيشرفته، به‌ندرت از آن‌ها استفاده مي‌شود.

جزوه پردازش تصویر با متلب (Matlab)_ دانشگاه پیام نور

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

پردازش تصاویر دارای دو شاخه عمدهٔ بهبود تصاویر و بینایی ماشین است. بهبود تصاویر دربرگیرندهٔ روشهایی چون استفاده از فیلتر محوکننده و افزایش تضاد برای بهتر کردن کیفیت دیداری تصاویر و اطمینان از نمایش درست آنها در محیط مقصد (مانند چاپگر یا نمایشگر رایانه)است. در حالی که بینایی ماشین به روشهایی می‌پردازد که به کمک آنها می‌توان معنی و محتوای تصاویر را درک کرد تا از آنها در کارهایی چون رباتیک و محور تصاویر استفاده شود.

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

لینک دانلود: جزوه پردازش تصویر با متلب_ دانشگاه پیام نور

پسورد فایل: behsanandish.com

تعداد صفحات : 51

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

امیدوارم که مفید باشد

 

لگچرهای کتاب آقای گنزالس

تعداد فایل : 17 عدد

فرمت: pdf

زبان : انگلیسی

نویسنده: گنزالس

پسورد فایل: behsanandish.com

دانلود

 

______________________________________

 

مفاهیم پایه پردازش تصویر دانشگاه شهید بهشتی

تعداد صفحه: 109 صفحه

فرمت: pdf

زبان : فارسی

نویسنده: ‫احمد محمودی ازناوه‬

پسورد فایل: behsanandish.com

دانلود

فهرست مطالب:
‫• مقدمه اي بر پردازش تصوير‬
‫– كاربردهاي پردازش تصوير‬
‫• ساختار تصوير ديجيتال‬
‫• تصاوير رنگي‬
‫• حساسيت چشم‬
‫– تباين‬
‫• حسگرهاي تصوير‬
‫• آشنايي با ‪Matlab‬‬
‫• آشنايي با فضارنگها‬

 

______________________________________

 

 

واژه نامه پردازش سیگنال و پردازش تصویر

واژه نامه پردازش سیگنال و پردازش تصویر حاوی لغات و اصطلاحات تخصصی استفاده شده در زمینه پردازش تصویر و پردازش سیگنال است.

نویسنده: خانم شهره کسائی

دانشگاه صنعتی شریف

تعداد صفحات: 20

 

پسورد فایل: behsanandish.com

دانلود

بررسی سامانه های تشخیص خودکار پلاک خودرو

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

 

نویسنده: آقایان علی اوحدی و محسن امیدوار

تعداد صفحات : 42

کلیمه عبور فایل : behsanandish.com

دانلود : بررسی سامانه های تشخیص خودکار پلاک

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

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

سوال : به نظر میرسه باید توی مثال هامون به کامپیوتر بگیم مثلا این A هست و این B هست!
جواب : اون هم نوعی یادگیری هست که بهش اصطلاحا Supervised می گن. اما توی این مثال حالت جالب تر یعنی Unsupervised رو می خوایم بررسی کنیم. به این صورت که فقط به کامپیوتر می گیم ۳ دسته وجود داره و براش چندین مثال می زنیم و خودش مثال ها رو توی ۳ دسته قرار می ده! در نهایت ما مثلا می تونیم بگیم همه ی مثال هایی که در دسته ی دوم قرار گرفتن A هستند.
شاید جالب باشه بدونید گوگل هم برای دسته بندی اطلاعات از همچین روشی استفاده می کنه! البته کمی پیشرفته تر. مثلا ۱۰۰ متن اقتصادی و ۱۰۰ متن ورزشی به کامپیوتر میده و از کامپیوتر می خواد اونها رو به ۲ بخش تقسیم بندی بکنه! ورودی لغت های اون متن ها هستند. “

ابزار مورد نیاز
برای این که شروع کنیم به چند مورد نیاز داریم:

  1. در مورد هوش مصنوعی و شبکه های عصبی یکم اطلاعات داشته باشید.
  2. برنامه ای برای تولید الگو که ورودی شبکه ی عصبی ما خواهد بود. این برنامه رو میتونید از اینجا تهیه کنید.
  3. نرم افزار JOONE Editor. عبارت JOONE مخفف Java Object Oriented Neural Engine هست. که یک ابزار قدرت مند برای بوجود آوردن و آموزش انواع شبکه های عصبی در Java هست. توی این آموزش ما از ویرایشگر این ابزار استفاده می کنیم که محیطی گرافیکی برای تولید شبکه های عصبی داره و کار با اون بسیار ساده هست. این ابزار از اینجا قابل دریافت هست. بدیهیه که برای نصب این ابزار ابتدا باید جاوا روی کامپیوتر شما نصب باشه.
  4. کمی پشتکار و حوصله.

لینک جایگزین برای دانلود JOONE Editor:
https://sourceforge.net/projects/joone/files/

حالا می خوایم یک سری الگو تولید کنیم. الگو همون مثال هایی هست که گفتیم برای کامپیوتر می زنیم تا بتونه یاد بگیره.
برای این کار از برنامه ای که در شماره ی ۲ ابزارها معرفی کردم استفاده می کنیم. این برنامه خیلی ساده کار می کنه و فقط الگو ها رو از حالت تصویری به ۰ و ۱ تبدیل می کنه.
روش کار به این صورت هست که اول تصویر رو به یک ماتریس ۸ در ۸ تقسیم می کنه. یعنی ۶۴ قسمت. وقتی دکمه ی سمت چپ ماوس پایینه در صورتی که ماوس از هر کدوم از اون ۶۴ بخش رد بشه اون بخش رو داخل ماتریس علامت گذاری می کنه (مقدار اون قسمت رو True می کنه). وقتی دکمه ی Learn زده می شه برنامه مقدار تمام قسمت ها رو از بالا به پایین داخل یک فایل ذخیره می کنه. مقدار هر قسمت می تونه ۰ یا False و ۱ یا True باشه. ”
در صورتی که سورس این برنامرو خواستید کافیه توی بخش نظرات بگید تا براتون میل کنم.
کار با این برنامه خیلی آسون هست همونطور که توی شکل مشخصه.

کافیه الگویی که دوست دارید رو داخل فضای سفید بکشید و دکمه ی Learn رو بزنید. Textbox پایینی برای تغییر دادن آدرس فایلی هست که اطلاعات توی اون ذخیره میشه. و Textbox بالایی برای اینه که بگید این الگو چه حرفی هست که توی این مطلب نیازی به پر کردن اون نیست چون ما بحثمون یادگیری Unsupervised هست. توی مطالب بعدی برای یادگیری Supervised به این فیلد نیاز خواهیم داشت.
خوب من برای اینکه مثال پیچیده نشه ۳ حرف رو می خوام به کامپیوتر یاد بدم. A و C و Z!
برای این کار برای هر کدوم از حروف چهار مثال وارد می کنم و دکمه ی Learn رو می زنم. توی شکل زیر می تونید هر ۱۲ الگو رو ببینید.

فایل خروجی مربوط به این الگوهای مثال از اینجا قابل دریافت هست.همونطور که می بینید هر ردیف به نظر من و شما عین هم هستند. اما اگر کمی بیشتر دقت کنیم می بینیم جای مربع های مشکی با هم فرق دارن. به نظر شما کامپیوتر هم خواهد فهمید هر ردیف نشاندهنده ی یک حرف مجزا هست؟
تشکیل شبکه ی عصبیخوب! حالا می خواهیم ساختار شبکه ی عصبی رو طراحی کنیم. برای این کار از JOONE Editor کمک می گیریم.
صفحه ی اول این نرم افزار به این شکل هست:

توی این مثال ما از یک لایه ی ورودی خطی ۶۴ نورونی استفاده می کنیم که هر نورون یک قسمت از ماتریسی که در بخش قبل گفتیم رو به عنوان ورودی می گیره. به عنوان خروجی هم از یک لایه ی ۳ نورونی WinnerTakeAll استفاده می کنیم. در این نوع خروجی یکی از نورون ها ۱ و بقیه ۰ خواهند بود که برای تقسیم بندی بسیار مناسب هست.

برای شروع ابتدا یک لایه ی FileInput ایجاد می کنیم. توسط این ابزار می تونیم یک فایل رو به عنوان ورودی به شبکه بدیم.
روی FileInput کلیک راست کرده و در Properties اون فایل درست شده در مرحله ی قبلی رو به عنوان fileName انتخاب می کنیم و به عنوان Advanced Column Selector مقدار 1-64 رو وارد می کنیم تا برنامه متوجه بشه باید از ستون های ۱ تا ۶۴ به عنوان ورودی استفاده کنه.

ایجاد یک لایه ی خطی:

مرحله ی بعدی ایجاد یک Linear Layer یا لایه ی خطی هست. بعد از ایجاد این لایه Properties اون باید به شکل زیر باشه:

همونطور که می بینید تعداد ردیف ها ۶۴ مقداردهی شده که دلیلش این هست که ۶۴ ورودی داریم.
حالا با انتخاب FileInput و کشیدن نقطه ی آبی رنگ سمت راست اون روی Linear Layer خروجی FileInput یعنی اطلاعات فایل رو به عنوان ورودی Linear Layer انتخاب می کنیم.
تا این لحظه ما یک لایه ی ۶۴ نورونه داریم که ورودی اون مقادیر مثال های تولید شده در مرحله ی قبل هست.

ایجاد لایه ی WinnerTakeAll :

خوب توی این مرحله لایه ی خروجی که یک لایه ی WinnerTakeAll هست رو تولید می کنیم. Properties این لایه باید به شکل زیر تغییر پیدا کنه تا اطمینان پیدا کنیم الگوها به سه دسته تقسیم میشن:

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

تا این لحظه شبکه باید به این شکل باشه. حالا می تونیم آموزش شبکرو شروع کنیم. برای این کار در منوی Tools بخش Control Panel رو انتخاب می کنیم. و در صفحه ی جدید learningRating و epochs و training pattern و learning رو به شکل زیر تغییر می دیم.

epochs تعداد دفعاتی که مرحله ی آموزش تکرار میشرو تعیین می کنه.
learningRate ضریبی هست که در یادگیری از اون استفاده می شه. بزرگ بودن اون باعث میشه میزان تغییر وزن نورون ها در هر مرحله بیشتر بشه و سرعت رسیدن به حالت مطلوب رو زیاد می کنه اما اگر مقدار اون خیلی زیاد شه شبکه واگرا خواهد شد.
training patterns هم تعداد الگو هایی که برای آموزش استفاده می شن رو نشون می ده که در این مثال ۱۲ عدد بود.
بعد از اینکه تمام تغییرات رو ایجاد کردیم دکمه ی Run رو می زنیم و منتظر می شیم تا ۱۰۰۰۰ بار عملیات یادگیری انجام بشه.

تبریک می گم! شما الان به کامپیوتر سه حرف A و C و Z رو یاد دادید!
اما خوب حالا باید ببینید کامپیوتر واقعا یاد گرفته یا نه.
برای این کار از یک لایه ی FileOutput استفاده می کنیم تا خروجی شبکرو داخل یک فایل ذخیره کنیم.
Properties لایه ی FileOutput باید بصورت زیر باشه:

همونطور که می بینید به عنوان fileName مقدار c:\output.txt رو دادیم. یعنی خروجی شبکه در این فایل ذخیره میشه.
حالا کافیه لایه ی WinnerTakeAll رو به لایه ی FileOutput متصل کنیم.
بعد از متصل کردن این دو لایه شکل کلی باید بصورت زیر باشه:

برای اینکه فایل خروجی ساخته بشه باید یک بار این شبکرو اجرا کنیم. برای این کار مجددا در منوی Tools بخش Control Panel رو انتخاب می کنیم و در اون learning رو False و epochs رو ۱ می کنیم تا شبکه فقط یک بار اجرا شه. پس از تغییرات این صفحه باید به شکل زیر باشه:

حالا با توجه به اینکه من اول چهار مثال A رو وارد کردم و بعد به ترتیب چهار مثال C و چهار مثال Z رو ببینیم خروجی این شبکه به چه شکل شده.
باور کردنی نیست! خروجی به این شکل در اومده:

1.0;0.0;0.0
1.0;0.0;0.0
1.0;0.0;0.0
1.0;0.0;0.0
0.0;1.0;0.0
0.0;1.0;0.0
0.0;1.0;0.0
0.0;1.0;0.0
0.0;0.0;1.0
0.0;0.0;1.0
0.0;0.0;1.0
0.0;0.0;1.0

همونطور که می بینید ۴ خط اول که مربوط به A هستن ستون اولشون ۱ هست و در چهار خط دوم ستون دوم و در چهار خط سوم ستون سوم!
این یعنی کامپیوتر بدون اینکه کسی به اون بگه کدوم مثال ها کدوم حرف هست خودش فهمیده و اون ها رو دسته بندی کرده.
سوال :  ممکنه چون پشت هم دادید مثال هر حرف رو اینطوری نشده؟
جواب : نه! کامپیوتر که نمی دونسته من می خوام مثال های هر حرف رو پشت سر هم بدم! من برای راحتی خودم این کار رو کردم. شما می تونی ورودی هاتو غیر مرتب بدی!
سوال : دلیل خاصی داره که در A ستون اول ۱ هست و …
جواب : نه! ممکن بود برای A ستون دوم ۱ بشه و یا هر حالت دیگه. شما اگر امتحان کنید ممکنه تفاوت پیدا کنه. اما مهم اینه در تمام A ها یک ستون خاص مقدارش ۱ و بقیه ی ستون ها مقدارشون صفر می شه. پس یعنی کامپیوتر تونسته به خوبی تقسیم بندی کنه.

حالا می خوایم شبکرو با سه مثال جدید تست کنیم که در مثال های آموزشی نبوده! برای این کار من با استفاده از برنامه ی تولید الگو ۳ مثال جدید درست می کنم و به عنوان فایل ورودی در شبکه فایل جدید رو انتخاب می کنم.
توی شکل زیر سه مثال جدید رو می تونید ببینید:

برای جذابیت علاوه بر این سه مثال ۲ مثال دیگه هم که حروف خاصی نیستند گذاشتم!

فایل خروجی این مثال ها از اینجا قابل دریافت هست.

خوب حالا بگذارید ببینیم کامپیوتر چه جوابی می ده. با توجه به اینکه اول مثال C بعد مثال Z و بعد مثال A رو وارد کردم. دو مثال بعدی هم به ترتیب مثال بد خط سمت چپ و مثال بد خط سمت راست هستند. و اما جواب:

0.0;1.0;0.0
0.0;0.0;1.0
1.0;0.0;0.0
0.0;0.0;1.0
0.0;1.0;0.0

کامپیوتر سه مورد اول رو به خوبی C و Z و A تشخیص داده. و دو مورد بد خط هم به ترتیب از چپ به راست Z و C تشخیص داده!
حتی برای انسان هم سخته فهمیدن اینکه مورد های چهارم و پنجم چی هستند اما اگر خوب دقت کنید می بینید به مواردی که کامپیوتر خروجی داده نزدیک تر هستند.
کامپیوتر شعور نداره! اما ما سعی کردیم طریقه ی عملکرد مغز رو به صورت خیلی ابتدایی و به ساده ترین نحو توش شبیه سازی کنیم! ”
تو  این مطلب دیدیم که کامپیوتر تونست بدون اینکه ما براش مثال هایی بزنیم و بگیم هر کدوم چه حرفی هستند و فقط با دادن تعداد دسته ها، مثال ها رو به سه دسته همونطوری که انسان ها تقسیم می کنند تقسیم کنه. همونطور که گفتیم به این نوع دسته بندی، دسته بندی Unsupervised میگن.
منبع

الگوریتم بهینه‌سازی دومرحله‌ای ازدحام ذرات

ر این مقاله روشی جدید مبتنی بر هوش جمعی برای حل مسائل بهینه سازی با روش الگوریتم بهینه‌سازی دومرحله‌ای ازدحام ذرات (particle swarm optimization algorithm) ارائه می‌شود. روش پیشنهادی, با استفاده از دو مرحله تحرک و همگرایی جمعیت, به نتایج جالبی در انواع توابع می‌رسد. در این روش جمعیت اولیه ذرات مقداردهی شده و سپس این ذرات در هر مرحله ابتدا خود را از نواحی نامناسب دور کرده و پس از آن به نواحی مناسب مهاجرت می‌کنند و در نهایت در این نواحی سعی در نزدیک شدن به نقاط بهینه را دارند. ویژگی الگوریتم، نتیجه گرفتن در توابع با ابعاد بالا و همچنین توابع دارای اکسترمم‌های محلی زیاد است. حرکت در جهت دور شدن از نواحی نامناسب، باعث می‌شود تا الگوریتم در مواجه با مسائل با ابعاد بسیار بزرگ و نیز مسائلی که در آن‌ها جمعیت دارای توزیع اولیه نامناسبی است نیز به خوبی عمل کرده و نتایج مناسبی از خود نشان دهد. پراکندگی نامناسب جمعیت اولیه, در الگوریتم بهینه‌سازی گروه ذرات تأثیر منفی دارد. این الگوریتم با مهاجرت کلی ذرات به سمت فضای مناسب، به نقاط بهینه همگرا می‌شود. در انتها ضمن آزمودن روش پیشنهادی بر روی چند تابع محک شناخته شده و مقایسه با الگوریتم بهینه‌سازی گروه ذرات مشاهده می‌شود که روش پیشنهادی به نتایج بهتری می‌رسد.

psoیک الگوریتم رایانه‌ای مبتنی بر جمعیت و کتره‌ای برای حل مسئله‌است. PSOیک نوع هوش جمعی مبتنی بر اصول روانشناسی اجتماعی و فراهم آوردن بینشی در رفتار اجتماعی و کمک کردن به کاربردهای مهندسی است.

الگوریتمPSO برای اولین بار در ۱۹۷۵ توسط Kennedyو C.Eberhart توصیف شد. این تکنیک‌ها بسیار رشد کرده‌اند و نسخه اصلی این الگوریتم به‌طور واضحی در نسخه‌های امروزی قابل شناخت است. تاثیرگذاری اجتماعی و یادگیری اجتماعی یک شخص را قادر می‌سازد تا ثبات دانستنی‌هایش را برقرار سازد. انسان‌ها مسائلشان را به کمک صحبت با دیگران و نیز به کمک برهم کنش با باورهایشان، گرایش هایشان و تغییر رفتارشان حل می‌کنند؛ این تغییرات را می‌توان به‌طور نمونه به شکل حرکت افراد به سوی یکدیگر در فضای آگاهی اجتماعی مجسم کرد.

ذرات جمعی شبیه سازی شده، این نوع از بهینه‌سازی اجتماعی می‌باشند. مسئله داه شده و چند راه برای ارزیابی مسئله پیشنهادی به ….. در شکل کلی “تابع شایستگی”حضور دارند. ساختار ارتباطی یا شبکه اجتماعی برای واگذار کردن هر همسایگی به یک فرد تعریف شده تا آن فرد با آن همسایگی بر هم کنش داشته باشد. سپس گروه کارگزاران به عنوان مهمان‌های سرزده برای راه حل‌های مسئله تعریف می‌شوند که آن‌ها را به نام “ذرات” نیز می‌شناسیم؛ از این رو آن‌ها را “ذرات دسته جمعی” نام نهاده‌ایم.

یک فرایند تکراری برای بهبود کاندیداها در طی حرکت ذرات در نظر گرفته شده‌است. ذرات مکرراً شایستگی راه حل‌های کاندیدا را ارزیابی می‌کنند و موقعیتی را که در آن بهترین موفقیت را داشته‌اند، به خاطر می سپارند. بهره راه حل کارگزاران “بهترین ذره” یا “بهترین محل” نامیده می‌شود. هر ذره این اطلاعات را برای دیگر ذرات موجود در همسایگی قابل دسترسی می‌کند.

همچنین آن‌ها نیز می‌توانند ببینند که دیگر ذرات موجود در همسایگی در کجا بهترین موفقیت را داشته‌اند.

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

گروه به صورت نمونه بوسیله ذرات در فضای چند بعدی که مکان و سرعت دارد، مدل سازی می‌شود.

این ذرات در میان این ابر فضا(فضای دارای بیش از سه بعد) پرواز می‌کنند و دو توانایی ضرورری دارند:

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

هر ذره برای اعمال تغییری مناسب در مکان و سرعت خود اطلاعات زیر را دارا می‌باشد:

۱-“بهترین عمومی” که برای همه شناخته شده‌است و هنگامی که هر ذره بهترین مکان جدیدی را شناسایی کند، فوراً برای بقیه ذرات اطلاعات مربوطه را به روزرسانی می‌کند.

۲-“بهترین همسایگی”که ذره از طریق ارتباط با زیر مجموعه‌های گروه، آن را بدست می‌آورد.

۳-“بهترین محلی”که بهترین راه حلی است که ذره تاکنون تجربه کرده‌است.

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

منبع


الگوریتم بهینه سازی ازدحام ذرات(PSO)

الگوریتم pso

مقدمه

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

 الگوریتم pso

تعاریف اولیه الگوریتم PSO

فرض کنید یک فضای جستجوی d بعدی داریم. i اُمین ذره در این فضای d بعدی باب بردار موقعیت Xi به شکل زیر توصیف می گردد:

1

بردار سرعت i اُمین ذره نیز با بردار Vi به شکل زیر تعریف می گردد:

2

بهترین موقعیتی که ذره i اُم پیدا کرده است را با Pi .best تعریف می کنیم:

3

بهترین موقعیتی که بهترین ذره در بین کل ذرات پیدا کرده است را با Pg .best به صورت زیر تعریف می کنیم:

4

برای به روز رسانی محل هر کدام از ذرات از رابطه زیر استفاده می کنیم:

5

  • W : ضریب وزنی اینرسی (حرکت در مسیر خودی) که نشان دهنده میزان تأثیر بردار سرعت تکرار قبل 14 بر روی بردار سرعت در تکرار فعلی 15 است.
  • c1 : ضریب ثابت آموزش (حرکت در مسیر بهترین مقدار ذره مورد بررسی)
  • c2 : ضریب ثابت آموزش (حرکت در مسیر بهترین ذره یافت شده در بین کل جمعیت)
  • rand1 , rand2: دو عدد تصادفی با توزیع یکنواخت در بازه 0 تا 1
  •  (Vi(t-1 بردار سرعت در تکرار (t-1) ام
  •  (Xi(t-1 بردار موقعیت در تکرار (t-1) ام

برای جلوگیری از افزایش بیش از حد سرعت حرکت یک ذره در حرکت از یک محل به محل دیگر (واگرا شدن بردار سرعت)، تغییرات سرعت را به رنج Vmin تا  Vmax محدود می کنیم؛ یعنی6 . حد بالا و پایین سرعت با توجه به نوع مسئله تعیین می گردد.

محدود سازی فضا

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

7

مکانیزمی که برای لحاظ کردن این قید استفاده می شود، بصورت زیر است:

x=max(0,x)

در تابع فوق مقادیر مجاز x؛ یعنی 0≤x بدون هیچ گونه تغییری نگاشت می شوند اما مقادیر غیر مجاز x؛ یعنی 0>x به مقدار مجاز x=0 نگاشت می شوند. در حالت کلی تر اگر بخواهیم محل ذرات بصورت 17 باشد، برای محدودسازی می توان از رابطه زیر استفاده کرد:

8

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

مراحل اجرای الگوریتم PSO

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

مرحله 1، تولید تصادفی جمعیت اولیه ذرات

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

9

انتخاب تعداد ذرات اولیه

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

بطور خلاصه، تعداد جمعیت اولیه با توجه به مسئله تعیین می گردد. در حالت کلی تعداد ذرات اولیه مصالحه ای بین پارامترهای درگیر در مسئله است. بطور تجربی انتخاب جمعیت اولیه ذرات به تعداد 20 تا 30 ذره انتخاب مناسبی است که تقریباً برای تمامی مسائل تست به خوبی جواب می دهد. می توانید تعداد ذرات را کمی بیشتر از حد لازم نیز در نظر بگیرید تا کمی حاشیه ایمنی در مواجهه با مینیمم های محلی داشته باشید.

ارزیابی تابع هدف (محاسبه هزینه یا برآزندگی) ذرات

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

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

ثبت بهترین موقعیت برای هر ذره (Pi .best)  و بهترین موقعیت در بین کل ذره ها (Pg .best)

در این مرحله با توجه به شماره تکرار، دو حالت قابل بررسی است:

  • اگر در تکرار اول باشیم (t=1). موقعیت فعلی هر ذره را به عنوان بهترین محل یافت شده برای آن ذره در نظر می گیریم.

10

در سایر تکرارها مقدار هزینه به دست آمده برای ذرات در مرحله 2 را با مقدار بهترین هزینه به دست آمده برای تک تک ذرات مقایسه می کنیم. اگر این هزینه کمتر از بهترین هزینه ثبت شده برای این ذره باشد، آنگاه محل و هزینه این ذره جایگزین مقدار قبلی می گردد. در غیر این صورت تغییری در محل و هزینه ثبت شده برای این ذره ایجاد نمی شود؛ یعنی:

11

به روز رسانی بردار سرعت تمامی ذره ها

12

ضرایب w,c1, c2 با توجه به مسئله مورد نظر به روش تجربی تعیین می گردند. اما به عنوان یک قانون کلی در نظر داشته باشید که w باید کمتر از یک باشد زیرا اگر بزرگتر از یک انتخاب شود، (V(t دائماً افزایش می یابد تا جایی که واگرا گردد. همچنین توجه داشته باشید، هرچند در تئوری ضریب w می تواند منفی نیز باشد اما در استفاده عملی از این الگوریتم هیچ گاه این ضرایب را منفی در نظر نگیرید زیرا منفی بودن w موجب ایجاد نوسان در (V(t می شود. انتخاب مقدار کوچک برای این ضریب (w) نیز مشکلاتی را در پی خواهد داشت. اغلب در الگوریتم PSO مقدار این ضریب را مثبت و در رنج 0.7 تا 0.8 در نظر می گیرند. c2و c3 نیز نباید زیاد بزرگ انتخاب شوند زیرا انتخاب مقادیر بزرگ برای این دو ضریب باعث انحراف شدید ذره از مسیر خودی می شود. اغلب در الگوریتم PSO مقدار این ضرایب را مثبت و در رنج 1.5 الی 1.7 در نظر می گیرند.

لازم به یادآوری است که الزاماً مقادیر پیشنهادی فوق تنها انتخاب های ممکن برای ضرایب w,c1, c2نیست بلکه با توجه به مسئله مورد بررسی ممکن است انتخاب های بهتری غیر از موارد فوق وجود داشته باشد.

تست همگرایی

تست همگرایی در این الگوریتم مانند سایر الگوریتم های بهینه سازی است. برای بررسی الگوریتم روش های گوناگونی وجود دارد. برای مثال می توان تعداد مشخصی تکرار را از همان ابتدا معلوم کرد و در هر مرحله بررسی کرد که آیا تعداد تکرارها به مقدار تعیین شده رسیده است؟ اگر تعداد تکرارها کوچکتر از مقدار تعیین شده اولیه باشد، آن گاه باید به مرحله 2 بازگردید در غیر این صورت الگوریتم پایان می پذیرد. روش دیگری که اغلب در تست همگرایی الگوریتم استفاده می شود، این است که اگر در چند تکرار متوالی مثلاً 15 یا 20 تکرار تغییری در مقدار هزینه بهترین ذره ایجاد نگردد، آنگاه الگوریتم پایان می یابد، در غیر این صورت باید به مرحله 2 بازگردید. دیاگرام گردشی (فلوچارت) الگوریتم PSO در شکل نشان داده شده است.

فلوچارت الگوریتم pso

فلوچارت الگوریتم pso

منبع


منابع

  1. fa.wikipedia.org
  2. fa.wikipedia.org
  3. http://matlabiran.ir

بهینه‌سازی ازدحام ذرات (PSO) قسمت 1
بهینه‌سازی ازدحام ذرات (PSO) قسمت 2