<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Tayyeb.Info~rmation</title>
	
	<link>http://tayyeb.info</link>
	<description>مکانی برای اشتراک دانسته ها</description>
	<lastBuildDate>Tue, 28 Feb 2012 13:00:43 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/wtayyeb" /><feedburner:info uri="wtayyeb" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>wtayyeb</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>installing Nginx on Ubuntu VPS</title>
		<link>http://feedproxy.google.com/~r/wtayyeb/~3/lnBELK7NaZc/</link>
		<comments>http://tayyeb.info/articles/installing-nginx-on-ubuntu-vps/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 12:30:59 +0000</pubDate>
		<dc:creator>وسیم</dc:creator>
				<category><![CDATA[عمومی]]></category>

		<guid isPermaLink="false">http://tayyeb.info/?p=312</guid>
		<description><![CDATA[apt-get install nginx]]></description>
			<content:encoded><![CDATA[<pre dir="ltr">apt-get install nginx</pre>
<img src="http://feeds.feedburner.com/~r/wtayyeb/~4/lnBELK7NaZc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tayyeb.info/articles/installing-nginx-on-ubuntu-vps/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://tayyeb.info/articles/installing-nginx-on-ubuntu-vps/</feedburner:origLink></item>
		<item>
		<title>Installing phpMyAdmin on Nginx on Ubuntu VPS</title>
		<link>http://feedproxy.google.com/~r/wtayyeb/~3/TpEeJQEQD1w/</link>
		<comments>http://tayyeb.info/articles/installing-phpmyadmin-on-nginx-on-ubuntu-vps/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 12:30:19 +0000</pubDate>
		<dc:creator>وسیم</dc:creator>
				<category><![CDATA[عمومی]]></category>

		<guid isPermaLink="false">http://tayyeb.info/?p=308</guid>
		<description><![CDATA[۱٫ install php5-fpm first and then stop it because it used all the memory apt-get install php5-fpm /etc/init.d/php5-fpm stop nano /etc/php5/fpm/pool.d/www.conf change the settings to: pm                 = static pm.max_children    = ۳ then : nano /etc/nginx/nginx.conf [...] http { [...] keepalive_timeout 2; [...] follow http://www.howtoforge.com/installing-nginx-with-php5-and-php-fpm-and-mysql-support-on-ubuntu-11.04 2. install phpmyadmin apt-get install phpmyadmin]]></description>
			<content:encoded><![CDATA[<h3 dir="ltr">۱٫ install php5-fpm first and then stop it because it used all the memory</h3>
<p dir="ltr"><code dir="ltr">apt-get install php5-fpm<br />
/etc/init.d/php5-fpm stop<br />
nano /etc/php5/fpm/pool.d/www.conf<br />
</code></p>
<p dir="ltr">change the settings to:</p>
<p dir="ltr"><code>pm                 = static<br />
pm.max_children    = ۳</code></p>
<p dir="ltr">then : <code>nano /etc/nginx/nginx.conf</code><br />
<code>[...]<br />
http {<br />
[...]<br />
keepalive_timeout 2;<br />
[...]</code></p>
<p dir="ltr">follow <a href="http://www.howtoforge.com/installing-nginx-with-php5-and-php-fpm-and-mysql-support-on-ubuntu-11.04">http://www.howtoforge.com/installing-nginx-with-php5-and-php-fpm-and-mysql-support-on-ubuntu-11.04</a></p>
<h3 dir="ltr">2. install phpmyadmin</h3>
<p dir="ltr"><code>apt-get install phpmyadmin</code></p>
<img src="http://feeds.feedburner.com/~r/wtayyeb/~4/TpEeJQEQD1w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tayyeb.info/articles/installing-phpmyadmin-on-nginx-on-ubuntu-vps/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://tayyeb.info/articles/installing-phpmyadmin-on-nginx-on-ubuntu-vps/</feedburner:origLink></item>
		<item>
		<title>VPS Setup, What and How to do?</title>
		<link>http://feedproxy.google.com/~r/wtayyeb/~3/aHKMk67xxrY/</link>
		<comments>http://tayyeb.info/articles/vps-setup-what-and-how-to-do/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 12:25:36 +0000</pubDate>
		<dc:creator>وسیم</dc:creator>
				<category><![CDATA[عمومی]]></category>

		<guid isPermaLink="false">http://tayyeb.info/?p=304</guid>
		<description><![CDATA[می‌خواهم یک vps با مشخصات محدود زیر را config کنم: openVZ Ubuntu 11.04 RAM: 384 Mb HDD: 10 Gb One IP Address مواردی که میخواهم بر این سیستم نصب و config کنم به شرح زیر است: nginx bind9 &#8211; DNS server mysql phpmyadmin on nginx webmin &#8211; virtualmin مواردی که احتمالا با آنها برخورد خواهم [...]]]></description>
			<content:encoded><![CDATA[<p>می‌خواهم یک vps با مشخصات محدود زیر را config کنم:</p>
<ul dir="ltr">
<li>openVZ</li>
<li>Ubuntu 11.04</li>
<li>RAM: 384 Mb</li>
<li>HDD: 10 Gb</li>
<li>One IP Address</li>
</ul>
<p>مواردی که میخواهم بر این سیستم نصب و config کنم به شرح زیر است:</p>
<ul dir="ltr">
<li><a title="installing Nginx on Ubuntu VPS" href="http://tayyeb.info/articles/installing-nginx-on-ubuntu-vps/">nginx</a></li>
<li>bind9 &#8211; DNS server</li>
<li>mysql</li>
<li><a title="Installing phpMyAdmin on Nginx on Ubuntu VPS" href="http://tayyeb.info/articles/installing-phpmyadmin-on-nginx-on-ubuntu-vps/">phpmyadmin on nginx</a></li>
<li>webmin &#8211; virtualmin</li>
</ul>
<p>مواردی که احتمالا با آنها برخورد خواهم کرد:</p>
<ul dir="ltr">
<li>disabling apache autostart</li>
<li></li>
</ul>
<img src="http://feeds.feedburner.com/~r/wtayyeb/~4/aHKMk67xxrY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tayyeb.info/articles/vps-setup-what-and-how-to-do/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://tayyeb.info/articles/vps-setup-what-and-how-to-do/</feedburner:origLink></item>
		<item>
		<title>نمایش اعداد بصورت گروه بندی شده توسط Matlab ‏</title>
		<link>http://feedproxy.google.com/~r/wtayyeb/~3/r3CVZd3TLvo/</link>
		<comments>http://tayyeb.info/articles/digit_grouping_matlab/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 22:03:24 +0000</pubDate>
		<dc:creator>وسیم</dc:creator>
				<category><![CDATA[کامپیوتر]]></category>
		<category><![CDATA[MATLAB]]></category>
		<category><![CDATA[متلب]]></category>
		<category><![CDATA[مطلب]]></category>
		<category><![CDATA[نمایش اعداد]]></category>

		<guid isPermaLink="false">http://tayyeb.info/?p=264</guid>
		<description><![CDATA[نمایش اعداد در کشورهای مختلف و سیستم های نمایش اعداد گوناگون به صورتهای مختلفی وجود دارد. اینجا تلاشی برای معرفی آنها صورت نمی‏پذیرد. لیکن برای مطالعه ی بیشتر میتوان از ویکیپدیا استفاده نمود + بعنوان تمرین  میخواهیم تابعی بنویسیم که بواسطه ی آن عددی را فرم ۳ تایی دسته بندی شده نشان دهیم. برای مثال [...]]]></description>
			<content:encoded><![CDATA[<p>نمایش اعداد در کشورهای مختلف و سیستم های نمایش اعداد گوناگون به صورتهای مختلفی وجود دارد. اینجا تلاشی برای معرفی آنها صورت نمی‏پذیرد. لیکن برای مطالعه ی بیشتر میتوان از ویکیپدیا استفاده نمود <a href="http://en.wikipedia.org/wiki/Digit_grouping" target="_blank">+</a></p>
<p>بعنوان تمرین  میخواهیم تابعی بنویسیم که بواسطه ی آن عددی را فرم ۳ تایی دسته بندی شده نشان دهیم.</p>
<p>برای مثال عدد ۱۲۳۴۵ را بصورت ۱۲,۳۴۵ نشان دهد.</p>
<p>فایل ضمیمه شامل تابعی است که اینکار را انجام میدهد.</p>
<p>نحوه ی فراخوانی تابع نیز به دو صورت است</p>
<p>اول اینکه تابع را با ارسال یک عدد فراخوانی کرده</p>
<p>دوم اینکه تابع را با ارسال یک رشته فراخوانی کنیم</p>
<p>در هر دو صورت خروجی تابع بصورت یک رشته خواهد بود که اعداد در آن بصورت سه تایی دسته بندی شده اند.</p>
<p>لینک داونلود : <a href="http://tayyeb.info/uploads/2010/08/digitGrouping.zip">digitGrouping</a></p>
<p>درآینده این مطلب را کاملتر تشریح میکنم.</p>
<img src="http://feeds.feedburner.com/~r/wtayyeb/~4/r3CVZd3TLvo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tayyeb.info/articles/digit_grouping_matlab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://tayyeb.info/articles/digit_grouping_matlab/</feedburner:origLink></item>
		<item>
		<title>استفاده از توییتر برای کنترل هوشمندانه سیستمها توسط منطق فازی</title>
		<link>http://feedproxy.google.com/~r/wtayyeb/~3/sEnyMLgdjE4/</link>
		<comments>http://tayyeb.info/articles/fuzzylogic_twitter_combin/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 21:40:38 +0000</pubDate>
		<dc:creator>وسیم</dc:creator>
				<category><![CDATA[بانک ایده]]></category>
		<category><![CDATA[کامپیوتر]]></category>
		<category><![CDATA[fuzzy logic]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[تویتر]]></category>
		<category><![CDATA[منطق فازی]]></category>
		<category><![CDATA[کنترل هوشمندانه]]></category>

		<guid isPermaLink="false">http://tayyeb.info/?p=245</guid>
		<description><![CDATA[با ابداع و ظهور [W:منطق فازی] یکی از جالب ترین اتفاقات در عرصه ی هوش مصنوعی ایجاد گردید، دانشمندان فراوانی از این نظریه برای تصمیم گیری در مسائلی که چند هدفی بودند استفاده نمودند. از منطق فازی به وفور در تصمیم گیری های محیط زیستی، کنترل مخزن، فرایند های شیمیایی، کنترل چراغ های رانندگی و [...]]]></description>
			<content:encoded><![CDATA[<p>با ابداع و ظهور [W:منطق فازی] یکی از جالب ترین اتفاقات در عرصه ی هوش مصنوعی ایجاد گردید، دانشمندان فراوانی از این نظریه برای تصمیم گیری در مسائلی که چند هدفی بودند استفاده نمودند. از منطق فازی به وفور در تصمیم گیری های محیط زیستی، کنترل مخزن، فرایند های شیمیایی، کنترل چراغ های رانندگی و راهنمایی، توزیع بار شبکه های حمل و نقل و غیره استفاده میگردد.</p>
<p>مزیتی که منطق فازی به دیگر روشها دارد این است که جملات محاوره ای ساده میتوانند مبنای پایه ی تصمیم گیری قرار گیرند. برای درک بیشتر از این مفاهیم به لینک ارجاع داده شده نگاهی بیندازید و در صورتی که  علاقه مند بودید میتوانم مقاله هایی در این زمینه را در اختیارتان قرار دهم!</p>
<p>نکته ی قابل توجهی که بصورت بالقوه در این منطق وجود دارد و هنوز از آن بصورت کامل استفاده نشده این است که همیشه در تحقیقات نوین از جملات محاوره ای بسیار زشت و نامفهوم (البته برای ماشین این جملات مفهوم هستند) استفاده میگردد، در صورتی که اگر بتوان واسطی در این میان قرار داد که بسیاری از گفتار های روزمره را تاحدودی تعدیل نماید میتواند از اکثر اطلاعات روزمره ی انسانها بهره ی لازم را ببرد. وقتی بتوان واسط تعدیل را بخوبی در کنار یک سیستم فازی مربوط به تصمیم گیری خود قرار دهیم میتوان به هدف مورد نظر نایل شد.</p>
<p>خوب دلیل نوشتن این مطلب این بود که از توییتر استفاده کنیم! خب فرض میکنیم که واسط تعدیل را درست کردیم! [ که خود شاید در حد یک رساله ی دکتری باشد.] و سیستم فازی را نیز طراحی کردیم و آن را در اختیار داریم! حال با اتصال اکانت تویتر خویش به این واسط جملات ما تعدیل شده و جملاتی که برای سیستم فازی مورد نظرمان نیاز هستند به آن ارسال میگردند. یکی از مزیت های سیستم فازی این است که آموزش پذیر است، البته این آموزش پذیری ساده صورت نمیگیرد، لیکن غیر ممکن نیست.</p>
<p><span id="more-245"></span></p>
<p>سیستم فازی اولیه شاید در بادی امر اشتباه تصمیم گیری کند [شاید هم نه] ولی به مرور زمان و اضافه شدن مطالب و جملات معنی دار ما که توسط واسط تعدیل به آن ارسال شده اند، به طور حتم نتایجی صحیح و مورد نظر ما را خواهد داد.</p>
<p>برای مثال اتفاقی که باعث شد این ایده به ذهن آید را ذکر میکنم : هیچ فرزندی دوست ندارد که پدرش از دست او عصبانی شود. حال با توجه به اینکه من یک جوان هستم و عشق سرعت و ویراژ!!! در عین حال پدرم از این کار بدش می آید، و اغلب باعث عصبانی شدن ایشان میشود&#8230;</p>
<p>من یک سیستم فازی طراحی میکنم که در آن عدم عصبانی شدن پدر را هدف قرار میدهم. یکی از مواردی که پدرم عصبانی میشود این است که در بالا ذکر شد. و موارد دیگری نیز وجود دارد که این امر را محتمل میکند&#8230; حال اگر من در فرصت مناسب توییت کنم که &#8220;  من با سرعت ۱۰۰ کیلومتر بر ساعت از یک دست انداز عبور کردم، پدرم عصبانی شد.&#8221; و &#8220;پدرم گفت که ترمز بگیرم و از دست انداز عبور کنم&#8221; واسط تعدیل این جمله ها را تبدیل به جمله های زیر میکند : &#8220;سرعت = ۱۰۰ کیلومتر بر ساعت (و) پدر در ماشین (و) دست انداز وجود دارد  (آنگاه) پدر عصبانی است&#8221; و &#8220;دست انداز وجود دارد (و) ترمز گرفته شود (آنگاه) پدر غیرعصبانی&#8221;. و این جملات تعدیل یافته برای ما یک معنا دارند ولی فهم سیستم های رایانه ای آنقدر نیست که تمام جملات مختلف ما را بفهمند.</p>
<p>حال سیستم منطق فازی طراحی شده با یادگیری از این جملات فازی مثلا یک سال بعد در هنگام رانندگی من وقتی به سرعتی نزدیک ۱۰۰ کیلومتر میرسم یا اینکه نزدیک دست انداز میرسم عصبانیت پدرم را حدث زده و بر روی نمایشگر نشان میدهد!  یا اینکه بجای نمایشگر مستقیما به تحریک ترمزهای ماشین پرداخته و سرعت را کاهش میدهند.</p>
<p>البته شاید مسخره بنظر برسد ولی این امر ساده هنگامی که در کنار دیگر رفتار ها قرار گیرد میتواند درصد بالایی از کارهای ساده ای که عموما فراموش میشوند بخصوص در این روزگار شلوغی و فراموشکاری را فقط با چند جمله ای که اکثرا هم بعنوان ندامت با خود زمزمه میکنیم را به ما یاد آور شود یا اینکه بجای ما تصمیم گیری کند.</p>
<p>تویتر در اینجا بیشتر به سهولت استفاده و مورد استفاده بودن آن در زندگی آینده ی اکثر انسان ها در نظر گرفته شده است، حال شاید فلسفه ی تویتر در ایران معنی خاصی نداشته باشد ولی میتوان از میکروبلاگهای اختصاصی یا عمومی نظیر <a href="http://wasim.peyghamak.com/" target="_blank">پیغامک</a> و <a href="http://www.viwio.com/" target="_blank">ویو</a> استفاده نمود.</p>
<img src="http://feeds.feedburner.com/~r/wtayyeb/~4/sEnyMLgdjE4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tayyeb.info/articles/fuzzylogic_twitter_combin/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://tayyeb.info/articles/fuzzylogic_twitter_combin/</feedburner:origLink></item>
		<item>
		<title>اصول یادگیری مطلب – Matlab</title>
		<link>http://feedproxy.google.com/~r/wtayyeb/~3/YcIGyZpMRTc/</link>
		<comments>http://tayyeb.info/articles/learn_matlab_bases/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 20:30:31 +0000</pubDate>
		<dc:creator>وسیم</dc:creator>
				<category><![CDATA[کامپیوتر]]></category>
		<category><![CDATA[MATLAB]]></category>
		<category><![CDATA[آموزش]]></category>
		<category><![CDATA[متلب]]></category>
		<category><![CDATA[مطلب]]></category>

		<guid isPermaLink="false">http://tayyeb.info/?p=192</guid>
		<description><![CDATA[برای یادگیری مطلب باید اول یک نسخه از Matlab -&#62; MathWorks (که من از آن استفاده میکنم) و یا Scilab-&#62; Open Source Platform (که مشابه مطلب بوده ولی من درباره ی آن بیشتر توضیح نخواهم داد) را نصب کنید. بهترین راه برای یادگیری مطلب از طریق دست زدن به تجربه است. (به عنوان مثال ، [...]]]></description>
			<content:encoded><![CDATA[<p>برای یادگیری مطلب باید اول یک نسخه از <a href="http://www.mathworks.com/" target="_blank">Matlab -&gt; MathWorks</a> (که من از آن استفاده میکنم) و یا <a href="http://www.scilab.org/" target="_blank">Scilab-&gt; Open Source Platform</a> (که مشابه مطلب بوده ولی من درباره ی آن بیشتر توضیح نخواهم داد) را نصب کنید.</p>
<p>بهترین راه برای یادگیری مطلب  از طریق دست زدن به تجربه است. (به عنوان مثال ، یادگیری فعال). چند راهنمایی مفید که در هنگام برنامه نویسی در مطلب باید به خاطر داشته باشید :</p>
<ul>
<li>طرح استراتژی راه حل خود را قبل از اینکه شروع به نگرانی در مورد نحوه کد نویسی در خود راه دهید، تعیین کنید.</li>
<li>پروژه برنامه نویسی خود را به به اهداف کوچکتر تقسیم کنید</li>
<p><span id="more-192"></span></p>
<li>با راهنمای مطلب (Matlab Help) کاملا آشنا باشید</li>
<li>کار با داده های گنگ تا بتوانید تشخیص دهید که چه چیزی را برای خروجی نیاز دارید.</li>
<li>استفاده از مزیت متغیرهای درون فضای کاری</li>
<li>داشتن مرجع های کامل کد Matlab که اهداف مشابه شما را پوشش دهند (به عنوان مثال ، کدهایی که در این سایت وجود دارند )</li>
</ul>
<p>برخی از منابع مفیدی که برای یادگیری مطلب در اینترنت موجود می باشند :</p>
<ul>
<li><a href="http://www.vrac.iastate.edu/575x/S07/doku.php?id=matlab_code:alex_tutorial" target="_blank">خودآموز الکس &#8211; Alex&#8217;s Tutorial</a> &#8211; Iowa State</li>
<li><a href="http://www.math.ufl.edu/help/matlab-tutorial/" target="_blank">جمع بندی و خودآموز &#8211; Summary &amp; Tutorial</a> &#8211; University of Florida</li>
<li><a href="http://www.math.utah.edu/lab/ms/matlab/matlab.html" target="_blank">خودآموز پایه &#8211; Basic Tutorial</a> &#8211; University of Utah</li>
</ul>
<p>منبع انگلیسی : <a href="http://www.urwelcome.us/Jstill/Matlab/basics.htm" target="_blank">+</a></p>
<img src="http://feeds.feedburner.com/~r/wtayyeb/~4/YcIGyZpMRTc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tayyeb.info/articles/learn_matlab_bases/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://tayyeb.info/articles/learn_matlab_bases/</feedburner:origLink></item>
		<item>
		<title>پردازش تصویر توسط Matlab</title>
		<link>http://feedproxy.google.com/~r/wtayyeb/~3/ccQlCqCxvHw/</link>
		<comments>http://tayyeb.info/articles/image_processing_by_matlab/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 04:12:41 +0000</pubDate>
		<dc:creator>وسیم</dc:creator>
				<category><![CDATA[کامپیوتر]]></category>
		<category><![CDATA[MATLAB]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پردازش تصویر]]></category>

		<guid isPermaLink="false">http://tayyeb.info/?p=163</guid>
		<description><![CDATA[پردازش تصویر یکی از توانایی هایی است که در MATLAB گنجانده شده است، در این مقاله می توانید به سادگی با آن آشنا شوید. گام اول &#8211; آشنایی با Matlab و Image Processing Toolbox همه با Matlab آشنا هستیم و حداقل میدانیم که چیز بدردخوری است. پس از صحبت دربارة این میگذریم. اما Image Processing [...]]]></description>
			<content:encoded><![CDATA[<p>پردازش تصویر یکی از توانایی هایی است که در MATLAB گنجانده شده است، در این مقاله می توانید به سادگی با آن آشنا شوید.</p>
<hr />
<h3>گام اول &#8211; آشنایی با Matlab و Image Processing Toolbox</h3>
<p>همه با Matlab آشنا هستیم و حداقل میدانیم که چیز بدردخوری است. پس از صحبت دربارة این میگذریم. اما Image Processing Toolbox از امکانات جنبی این برنامه است. برای اینکه مطمئن شوید که این Toolbox  روی Matlab  شما نصب شده است؛ دستور ver را اجرا کنید. این دستور لیست هرچه که از Matlab روی رایانه شما نصب شده است را ارائه میدهد. بین Matlab 5.x و Matlab 6 برای کار پردازش تصویر تفاوت چندانی وجود ندارد اما مثل همیشه نسخة جدیدتر امکانات بیشتری دارد که البته فعلا با آنها کاری نداریم.<br />
دستورهای معرفی شده: ver</p>
<p>اگر حوصلة موضوعات ابتدایی کار ندارید میتوانید از شمارة ۴ شروع به خواندن کنید. اما توصیه عملی این است که از اول شروع کنید چون این نوشته یک راهنمای قدم به قدم است. پس بهتر است پله ها را ۴ تا یکی نکنیم.</p>
<hr />
<h3>گام دوم &#8211; چگونه یک فایل تصویر را در Matlab باز کنیم</h3>
<p>Matlab میتواند فایلهای گرافیکی با فرمتهای JPEG, TIFF, GIF, BMP, PNG, HDF, PCX, XWD, ICO, CUR را به عنوان فایل گرافیکی بخواند. مثلاً برای وارد کردن تصویری به نام cameraman.tif به فضای Matlab کافی است از دستور imread استفاده کنیم:</p>
<p dir="ltr">MyImage=imread(&#8216;cameraman.tif&#8217;,'tif&#8217;);</p>
<p>توجه داشته باشید که فایلی که دستور خواندنش را میدهید باید برای برنامه قابل دسترس باشد. یعنی یا باید در مسیر (Path) Matlab باشد یا اینکه در پروندهای (folder) قرار داشته باشد که در حال حاضر برنامه به آن دسترسی دارد. برای اینکه بدانید که Matlab برای پیدا کردن فایلی که دستورش را دادید کجا را خواهد گشت اینکارها را بکنید: از دستور path برای اینکه بدانید کدام پروندهها جزء مسیر پیشفرض Matlab  است و از دستور dir برای اینکه بدانید که Current Directory چیست؛ استفاده کنید.<br />
خب تا اینجا یک فایل تصویر را در محیط Matlab وارد کردهایم. همانطور که میدانیم یک تصویر دیجیتال بر روی کامپیوتر در قالب یک ماتریس ذخیره میشود. پس MyImage مثل همه متغیرهای Matlab یک ماتریس است. برای اینکه بدانیم فایل خوانده شده از چه فرمتی است(سیاه سفید، یا Gray Scale یا رنگی ) مینویسیم:</p>
<p><span id="more-163"></span></p>
<p dir="ltr">imfinfo(&#8216;cameraman.tif&#8217;)</p>
<p>این دستور را اجرا کنید و ببینید چه مینویسد&#8230; اما اگر بخواهید بدانید که ماتریس ذخیره شدة MyImage از چه نوعی است کافی است بنویسد: whos و لیست متغییرهای مقیم شده در حافظه و نوع و اندازه آنها را ببینید.<br />
دستورهای معرفی شده: imread, imfinfo, whos, path, dir</p>
<hr />
<h3>گام سوم &#8211; چطور تصویر را ببینیم؟</h3>
<p>خب حالا میخواهیم تصویر را که در یک ماتریس ذخیره شده است را ببنیم. بنویسید:</p>
<p dir="ltr">imshow(MyImage)</p>
<p>جالب است نه؟ فکر میکنید اگر بخواهیم دوتا تصویر را با هم ببنیم باید چکار کنیم؟ این را امتحان کنید:</p>
<p dir="ltr">YourImage=imread(&#8216;tire.tif&#8217;,'tif&#8217;);</p>
<p dir="ltr">figure</p>
<p dir="ltr">subplot(1,2,1), imshow(MyImage), title(&#8216;MyImage&#8217;)</p>
<p dir="ltr">subplot(1,2,2), imshow(YourImage), title(&#8216;YourImage&#8217;)</p>
<p>با اجرای این دستورات به آن چیزی که اتفاق افتاد توجه کنید؛ حتما متوجه میشود که هرکدام از این دستورات چکار میکنند.<br />
دستورهای معرفی شده: imshow, subplot, title, figure</p>
<hr />
<h3>گام چهارم &#8211; تصویر را خواندیم حالا چکار کنیم؟</h3>
<p>کمی نویز دستوپا میکنیم و به تصویر اضافه میکنیم که بعداً راهی پیدا کنیم حذفش کنیم:</p>
<p dir="ltr">imagen=imnoise(MyImage,&#8217;salt &amp; pepper&#8217;);imshow(imagen)</p>
<p>دستور imnoise نویزهای مختلفی را در اختیار ما میگذارد که به تصویر اضافه کنیم. افزودن نویز برای شبیه سازی اشکالاتی است که ممکن است به هر سیستم پردازش تصویر وارد شود. اینجا فرض کردهایم که نویز «نمک و فلفل» به تصویر اضافه شده است! اسمش عجیب غریب است؟ این نویز را روی تصویر تلویزیونتان اگر آنتن درست تنظیم نباشد حتما دیدهاید. میدانیم که وقتی نویز داریم با یک فیلتر حذفش میکنیم. فیلتری که انتخاب میکنیم باید مناسب نویزی باشید که روی تصویر سوار شده است. بهترین فیلتر برای نویز «نمک و فلفل» فیلتر میانه است که در Matlab با دستور Medfilt2 قابل استفاده است:</p>
<p dir="ltr">figureimagefilt=medfilt2(imagen);</p>
<p dir="ltr">imshow(imagefilt)</p>
<p>برای دستگرمی هم که شده سعی کنید تصویر نویز و تصویر فیلتر شده را در یک صفحة واحد نمایش دهید.<br />
دوباره به تصویر MyImage نگاه کنید. فرض کنید میخواهیم مارک دوربین درون عکس را از روی شکل آن تشخیص دهیم. بازهم فرض کنید به روشی که بعدا بیشتر راجع بهش صحبت میکنیم فهمیدیم که دوربین درون این مختصات از تصویر قرار دارد. بین سطر ۵۹ تا ۸۴ و ستون ۱۳۱ تا ۱۷۰٫  پس از همین مختصات تصویر را با دستور imcrop میبریم.</p>
<p dir="ltr">imagecrop=Imcrop(MyImage,[ 131 59 39 25]);</p>
<p>در این دستور مختصات برش را اینطور مینویسم ] ارتفاع ,پهنا ,حداقل y ,حداقل x [. این قسمت بریده شده را نمایش بدهید و ببینید. در مرحله بعد سیستم تشخیصدهندة نوع دوربین احتیاج دارد که اندازه تصویر مقدار خاصی مثلاً ۱۲۰x100 باشد. پس باید اندازه تصویر برش داده شده را تغییر دهیم:</p>
<p dir="ltr">imagesz=imresize(imagecrop,[120 100]);</p>
<p>تصویر جدید را نگاه کنید. میبینید که به اندازه جدید در آمده است.<br />
دستورهای معرفی شده: imnoise, medfilt2, imcrop, imresize</p>
<hr />
<h3>گام پنجم &#8211; کمی خلاقیت مهندسی!</h3>
<p><!--more-->یک فایل جدید باز میکنیم که عکسی از دانههای برنج است. میخواهیم دانههای برنج را درون عکس بشماریم. این عکس از قسمت برنج مرغوبِ خط تولید یک کارخانه است. شمارش دانههای برنج به کارخانه برنج سازی کمک میکند بداند چند درصد برنجهایش درجه یک هستند. این دستورات را اجرا کنید:</p>
<p dir="ltr">p=imread(&#8216;rice.tif&#8217;);re=edge(p,&#8217;sobel&#8217;);</p>
<p dir="ltr">imshow(re);</p>
<p dir="ltr">re2=edge(p,&#8217;canny&#8217;);</p>
<p dir="ltr">figure, imshow(re2);</p>
<p>البته اول تصویر اصلی برنجها را ببینید و سپس مقایسه کنید. دو روش Sobel  و Canny برای پیدا کردن لبهها مورد آزمایش قرار گرفته است. مشخص است که روش Canny اینجا بهتر جواب داده است. دو کار به عهده شماست.</p>
<p>a. الگوریتمی پیدا کنید که تعداد برنجهای درون عکس را بشمارد.(راهنمایی: اگر بتوانید تعداد مسیرهای بستهی درون تصویر لبهها را بشمارید تقریباً همه برنجها را شمردهاید)</p>
<p>b. کشف کنید که روش Canny برای مشخص کردن لبه چه روشی است و چطور عمل میکند و چرا از روش سادة Sobel بهتر است.</p>
<p>برای بهتر شده نتیجه کار با روش Sobel بهتر است از عملگرهای ریختشناسی (morphological) استفاده کنیم. سعی میکنیم قسمتهای نزدیک به هم لبة هر برنج را به هم متصل کنیم. با این کار لبة برنجها را کامل میکنیم و خوردگیها را از بین میبریم. اما قبل از ادامه کار دستور close all را امتحان کنید. این دستور همه figure هایی که باز هستند را میبندد تا زیاد شلوغ نشود! حالا این دستورها را اجرا کنید:</p>
<p dir="ltr">figure, imshow(re);</p>
<p dir="ltr">re4=bwmorph(re,&#8217;close&#8217;);</p>
<p dir="ltr">re5=bwmorph(re4,&#8217;bridge&#8217;);</p>
<p dir="ltr">figure;</p>
<p dir="ltr">imshow(re5);</p>
<p dir="ltr">title(‘after morphological operations’);</p>
<p>آخرین تصویر لبهها را با تصویر اولیه لبهها که همان re است مقایسه کنید. میبینید که در متصل کردن قطعات پیشرفت خوبی داشتیم. اولین دستور bwmorph عمل Closing را روی تصویر انجام میدهد و دومین دستور عمل Bridge. برای اینکه بدانید هرکدام از این دستورات چکار میکنند از help bwmorph استفاده کنید.</p>
<p>برای اینکه بهتر کار با این دستورها را یاد بگیریم سری به Demoهای Matlab میزنیم. در صفحه Matlab بنویسید: demo و با اجرا کردن این دستور لیست demoهای مختلف ظاهر میشود. Image Processing Toolbox را انتخاب کنید. و در لیست کناری Edge Detection را انتخاب کنید. بقیه ماجرا با خودتان!</p>
<p>دستورهای معرفی شده:edge, bwmorph, demo</p>
<hr />
<h3>گام ششم &#8211; هیستوگرام تصویر:</h3>
<p>تا به حال تصویرهای Gray Scale را بررسی کردیم. از این به بعد هم همین کار را میکنیم! با این تفاوت که اگر تصویر ورودی رنگی بود اول Gray Scaleاش میکنیم و بعد کارها را ادامه می دهیم.تصویر flowers.tif  را با دستور imread در ماتریس flowers ذخیره کنید. از دستور rgb2gray برای تبدیل فرمت رنگی تصویر به Gray Scale  استفاده کنید. حالا هیستوگرام تصویر را رسم کنید. بعد یکی از قلههای نمودار هیستوگرام را انتخاب کنیدکه بین دوتا دره باشد. کاری کنید که فقط این قله درون هیستوگرام باقی بماند. بعد با دستور im2bw تصویر را از Gray Scale به سیاه سفید تبدیل کنید و نتایج را مقایسه کنید!چطور شد؟ توضیح میدهم، اینطوری:</p>
<p dir="ltr">flowers=imread(&#8216;flowers.tif&#8217;,'tif&#8217;);flowersgray=rgb2gray(flowers);</p>
<p dir="ltr">imhist(flowersgray)</p>
<p>من هیستوگرام را نگاه کردم و شما هم نگاه کنید. (هیستوگرام تصویر را بادستور imhist کشیدم) قلة بین ۵۰ و ۱۰۰ را انتخاب میکنم. حالا یک ماتریس جدید میسازم طوری که فقط جاهایی که مقدار ماتریس flowersgray در محدودة ۵۰ تا ۱۰۰ است، در ماتریس جدید ۰ باشد و باقی جاها ۱ باشد.(یعنی یک ماتریس باینری یا سیاه سفید):</p>
<p dir="ltr">f=ones(size(flowersgray));</p>
<p dir="ltr">f(find(flowersgray&gt;50&amp;flowersgray&lt;100))=0;</p>
<p dir="ltr">imshow(f);</p>
<p>دستورهای بالا به این معنی است: ماتریس f را هماندازه ماتریس flowersgray بساز. همة درایههایش را یک بگذار. بعد دستور find درون ماتریس flowersgray جستجو میکند و شماره درایههایی از ماتریس flowersgray را به من میدهد که در شرط روبهرو برایش مشخص شده. (همان محدودة ۵۰ تا ۱۰۰). این درایههای بخصوص را در ماتریس f از ۱ به ۰ تبدیل میشود. نتیجه را باهم ببینیم!</p>
<p>اگر دقت کنیم میبینیم که مجموعة گلدون از پس زمینه جدا شد. آنهم تنها با انتخاب یک قله درون هیستوگرام&#8230; حالا من از کجا فهمیدم که این قله مهم است؟&#8230; لابد علم غیب داشتم؟&#8230; بعدا راجع به انتخاب قلهها بیشتر خواهیم فهمید.</p>
<p>حالا دستور  im2bw را &#8211; که تصویر را سیاه سفید میکند &#8211;  امتحان کنید.</p>
<p dir="ltr">bwflowers=im2bw(flowersgray,gray);</p>
<p dir="ltr">imshow(bwflowers)</p>
<p>دستور im2bw حدی تعیین میکند و درایههایی که از آن حد کمتر باشند را صفر و آنهایی که بیشتر هستند را یک میکند. آیا متوجه تفاوت دو روش شدهاید؟ اگر به جای گلدون در تصویر مورد نظر، عکس پرسنلی افراد بود چه اشکالی در روش im2bw وجود داشت؟</p>
<p>دستورات معرفی شده: rgb2gray, imhist, ones, find</p>
<hr />
<h3>گام هفتم &#8211; اگر ما روبات بودیم&#8230;</h3>
<p>خب فرض کنید برنامهای برای یک روبات مینویسید که با استفاده از یک دوربین به یک بازوی دقیق فرمان میدهد که سکههای «اسکروچ» را بردارد و روی هم قرار دهد. برای اینکار لازم است محل دقیق سکهها را تشخیص دهیم تا فرمان مناسب برای بازو صادر شود. برنامة زیر این کار را انجام میدهد. دقت کنید ببینید که چطور اینکار را انجام میدهد:</p>
<p dir="ltr">coins = imread(&#8216;eight.tif&#8217;);</p>
<p dir="ltr">BW=~im2bw(coins,.75);</p>
<p dir="ltr">imshow(BW);</p>
<p dir="ltr">L = bwlabel(BW);</p>
<p dir="ltr">stats = imfeature(L,&#8217;Centroid&#8217;);</p>
<p dir="ltr">stats(7);</p>
<p>خروجی همان متغییر stats است. این متغییر ۷ عنصر دارد. درحالی که ۴ سکه بیشتر درون تصویر وجود ندارد! اشکال از کجاست؟&#8230;. راه حلی هم برای این به ذهنتان میرسد؟</p>
<p>دستورهای معرفی شده: bwlabel, imfeature</p>
<hr />
<h3>گام هشتم &#8211; چیز دیگری هم میخواهید؟</h3>
<p>فکر کنم تا اینجا توانسته باشید که با Matlab Image Processing Toolbox آشنا شده باشید و بتوانید گلیم خود را از آب بیرون بکشید. باز اگر سوالی داشتید خوشحال میشوم که بتوانم کمکی ارائه نمایم.</p>
<hr />متن اصلیی تهیه شده توسط گروه پردازش تصویر &#8211; انجمن علمی دانشجویان &#8211; دانشگاه خواجه نصیرالدین طوسی &#8211; خرداد ۱۳۸۱</p>
<p>لینک منبع در دسترس نیست، درصورت پیداکردن در کامنت ها ذکر فرمایید.</p>
<img src="http://feeds.feedburner.com/~r/wtayyeb/~4/ccQlCqCxvHw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tayyeb.info/articles/image_processing_by_matlab/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		<feedburner:origLink>http://tayyeb.info/articles/image_processing_by_matlab/</feedburner:origLink></item>
	</channel>
</rss>

