دستور light برای تغییر نور بکار میرود.این دستور فقط اشیا نوع patch وsurface را تحت تاثیر قرار میدهد.
light(PropertyName',PropertyValue,...)
handle = light(…)
دستور light در محورهای جاری عمل میکند و اگر بخواهییم در محور دیگری را مشخص کنیم با استفاده از ویژگی paraent این کار را انجام مدهیم.
h1=('position',[.1 .1 .6])
h = surf(peaks);
h2=axes('position',[.1 .7 .8 .2])
h = surf(peaks);
gca
میبینید که h2 محور جاری میباشد.
light('parent',h1,'Position',[1 0 0],'Style','infinite');
و
light('parent',h1,'Position',[11 11 11],'Style','infinite');
درمورد ویژگیهای light بعدا بیشتر صحبت خواهم کرد.
امیدوارم سال خوبی داشته باشید
اين مجموعه شامل دستورات اوليه رسم توابع ، محورها ، تصاوير و ... ميباشد. در ساختار درختي اين اشيا زيرمجموعه axes هستند.
اين مجمعه شلمب توابع زير ميباشد.
Axes
اين تابع براي تعريف كردن محورهاي مختصات در يك پنجره استفاده ميشود.
Image
براي نمايش تصوير بكارميرود.
image(imread(' ***** '))
بجاي ستارهها ادرس بك عكس را قرار دهيد.
Light
براي تنظيم نور بكار ميرود و تنها بر اشيايي از نوع patch و surface اثر ميكند.
h = surf(peaks);
set(h,'FaceLighting','phong','FaceColor','interp',...
'AmbientStrength',0.5)
light('Position',[1 0 0],'Style','infinite');
figure;
h = surf(peaks);
set(h,'FaceLighting','phong','FaceColor','interp',...
'AmbientStrength',0.5)
با توجه به مثال بالا كارايي اين تبع به وضوح قابل مشاهده است.
Line
بزاي رسم خط استفاده ميشود.
t = 0:pi/20:2*pi;
hline = line(t+.06,sin(t),'LineWidth',4,'Color',[.8 .8 .8]);
Patch
براي رسم چند ضلعيها مورد استفاده قرار ميگيرد.
x = [0 0;0 1;1 1];
y = [1 1;2 2;2 1];
z = [1 1;1 1;1 1];
tcolor(1,1,1:3) = [1 1 1];
tcolor(1,2,1:3) = [.7 .7 .7];
patch(x,y,z,tcolor)
Rectangle
تابعي كه براي رسم مستطيل ، بيضي ، دايره و ... بكارميرود.
rectangle('Position',[0.59,0.35,3.75,1.37],...
'Curvature',[0.8,0.4],...
'LineWidth',2,'LineStyle','--')
Surface
يك شي 3 بعدي كه هر آرايه آن با توجه به colormap رنگ ميشود.
load clown
surface(peaks,flipud(X),...
'FaceColor','texturemap',...
'EdgeColor','none',...
'CDataMapping','direct')
colormap(map)
view(-35,45)
Text
براي نوشتن بر روي پنجره (در ناحيهاي كه محورتعريف شده باشد) بكار ميرود.
plot(0:pi/20:2*pi,sin(0:pi/20:2*pi))
text(pi,0,' \leftarrow sin(\pi)','FontSize',18)
تعدادي از ويژگيهاي تابع image كه نحت نام Data Defining the Object دسته بندي ميشوند را برسي مي كنيم.
اين ويژگيها براي تعريف كردن تصوير بكار ميروند
تابع image به دو صورت سطح بالا و سطح پايين قابل استفاده است.(حتما تفاوت زبانهاي سطح بالا مثل C ، با زبانهاي سطح پايين مثل اسمبلي را ميدانيد).
استفاده از تابع به صورت سطح بالا يك سري ويژگي دارد
جهت y برعكس ميشود.
نماي ديد به [0 90] تغير ميكند.(view([0 90]))
و...
هنگام اسفاده از تابع سطح پايين، مسقيما با خصوصيات نصوير كار ميكنيم.
image('PropertyName',PropertyValue,...)
Cdata
يك ماتريس يا يك آرايه سه بعدي كه رنگ تصوير را مشخص ميكند.
image('cdata',cdata)
معادل با image(C) است.در واقع image(c) معادل سطح بالا است.
متلب(مطلب)به 3 طريق تصوير را رنگ ميكند.
با توجه به colormap ماتريس را انديس گذاري ميكند. مثلا اگر مقدار يك درايه برابر با 15 باشد به ان درايه رنگ 15ام از colormap را اختصاص ميدهد.
در اين حالت ويژگي CdataMapping برابر با direct است.
در حالت دوم مقدار ويژگي CdataMapping برابر با scaled است.يعني رنگ با توجه به ويژگي clim تعين ميشود. Clim يك بردار است كه اولين درايه آن براير با شماره اولين رنگ در colormap و درايه دوم آخرين رنگ از colormap است.خلاصه كنم در اين حالت به بزرگترين درايه ماتريس آخرين رنگ و به كوچكترين درايه آن اولين رنگ از colormap اختصاص داده شده و با توجه به اين بقيه درايه ها رنگ ميگيرند.
h=image([1 40 20]);
حالا اين دستور را امتحان كنيد و تفاوت را ببينيد
set(h,'CDataMapping','scaled')
حالت سوم استفاده از ماتريس RGB است.(به مطالب فبلي مراجعه كنيد)
CdataMapping
كار اين ويژگي را توضيح دادم ( به چند خط بالاتر مراجعه كنيد) فقط نكته مهم اين است كه هنگامي كه از ماتريسRGB(true color) استفاده ميكنيد اين ويژگي بي تاثير است.
Xdata و Ydata
محل قرار گرفتن اولين رنگ را مشخص ميكند. متلب هميشه يك ناحيه مربعي را رنگ ميكند كه مختصات مركز آن با توجه به اين ويژگيها مشخص ميشود.
مقدار پيش فرض آن در زير آورده شده است.
XData [1 size(CData,2)]
YData [1 size(CData,1)]
image
براي نمايش تصوير استفاده ميشود.
image (C)
image (x,y,C)
image (...,'PropertyName',PropertyValue,...)
image ('PropertyName',PropertyValue,...)
handle = image(...)
براي نمايش تصوير لازم است كه ابتدا ان را به صورت ماتريس در بياوريم.
خود ماتريس به دوحالت قابل استفاده است.
1-هر درايه آن نشاندهنده شماره يك از از colormap باشد.
image (floor(rand(64,64)*64))
منظور از floor همان جز صحيح است.
2- ماترسي به صورت m-by-n-by- 3 باشد كه با آنtrue color گفته ميشود.
در نوع ماتريس m وn نشاندهنده هر پيكسل و انديس 3و2و1 نشاندهنده رنگ آن پيكسل است. انديس 1 رنگ قرمز، 2 رنك سبز و 3 آبي . به اين ماتريس ، ماتريس RGB هم گفته ميشود.
براي تبديل كردن تصوير به ماتريس از دستور imread استفاده ميكنيم.يك تصوير بر روي كامپيتر خود در نظر بگيريد. و آدرس آن را به عنوان آرگومان
دستور imread استفاده كنيد.
C=imread (' **** ');
دقت كنيد كه '' را حتما استفاده كنيد. اگر تصوير شما از نوع GIF باشد بهصورت
colormap(حالت اول) ذخيره ميشود. اگر در تصوير شما رنگ سفيد باشد به صورت آبي نمايش داده ميشود چون در colormap پيش فرض پنجره رنگ سفيد تعريف نشده است.اما اگر از يك تصوير JPG استفاده كنيد.به صورت RGB ذخيره ميشود.
براي ديدن تصوير بنويسيد image(C)
اگر در محور ها دقت كنيد متوجه ميشويد كه در هنگام نمايش تصاوير محور y برعكس ميشود.
حالا كه تصاوير به ماتريس تبديل كرديم، ميتوان آنها را ويرايش كرد.
clear
k2=1:100;
fig=figure;
c0=zeros (256,1);
c255 (256,1)=255;
c255 (:,1)=255;
cf= (0:255)';
cb=(255:-1:0)';
Co=[c0 ,c255 , cf ; cf , cb , c255 ; c255 ,c0 ,cb];
i=10;
while ishandle(fig)
C(k2,k2,1)=Co(i- 9,1)/255;
C(k2,k2,2)=Co(i- 9,2)/255;
C(k2,k2,3)=Co(i- 9,3)/255;
image (C)
drawnow
i=i+1;
if i >=778
i=10;
end
end
در اين مثال ابتدا طيف رنگ سبز تا قرمز (3*256=768) را ايجاد شده و بعد در يك تصوير از نوع RGB به اندازه 100*100 استفاده شده است.
خب فرض کنيد برنامهاي براي يک روبات مينويسيد که با استفاده از يک دوربين به يک بازوي دقيق فرمان ميدهد که سکههاي «اسکروچ» را بردارد و روي هم قرار دهد. براي اينکار لازم است محل دقيق سکهها را تشخيص دهيم تا فرمان مناسب براي بازو صادر شود. برنامة زير اين کار را انجام ميدهد. دقت کنيد ببينيد که چطور اينکار را انجام ميدهد:
coins = imread('eight.tif');
BW=~im2bw(coins,.75);
imshow(BW)
L = bwlabel(BW);
stats = imfeature(L,'Centroid');
stats(7)
خروجي همان متغيير stats است. اين متغيير 7 عنصر دارد. درحالي که 4 سکه بيشتر درون تصوير وجود ندارد! اشکال از کجاست؟.... راه حلي هم براي اين به ذهنتان ميرسد؟
دستورهاي معرفي شده: bwlabel, imfeature
تا به حال تصويرهاي Gray Scale را بررسي کرديم. از اين به بعد هم همين کار را ميکنيم! با اين تفاوت که اگر تصوير ورودي رنگي بود اول Gray Scaleاش ميکنيم و بعد کارها را ادامه مي دهيم.
تصوير flowers.tif را با دستور imread در ماتريس flowers ذخيره کنيد. از دستور rgb2gray براي تبديل فرمت رنگي تصوير به Gray Scale استفاده کنيد. حالا هيستوگرام تصوير را رسم کنيد. بعد يکي از قلههاي نمودار هيستوگرام را انتخاب کنيدکه بين دوتا دره باشد. کاري کنيد که فقط اين قله درون هيستوگرام باقي بماند. بعد با دستور im2bw تصوير را از Gray Scale به سياه سفيد تبديل کنيد و نتايج را مقايسه کنيد!
چطور شد؟ توضيح ميدهم، اينطوري:
flowers=imread('flowers.tif','tif');
flowersgray=rgb2gray(flowers);
imhist(flowersgray)
من هيستوگرام را نگاه کردم و شما هم نگاه کنيد. (هيستوگرام تصوير را بادستور imhist کشيدم) قلة بين 50 و 100 را انتخاب ميکنم. حالا يک ماتريس جديد ميسازم طوري که فقط جاهايي که مقدار ماتريس flowersgray در محدودة 50 تا 100 است، در ماتريس جديد 0 باشد و باقي جاها 1 باشد.(يعني يک ماتريس باينري يا سياه سفيد):
f=ones(size(flowersgray));
f(find(flowersgray>50&flowersgray<100))=0;
imshow(f)
دستورهاي بالا به اين معني است: ماتريس f را هماندازه ماتريس flowersgray بساز. همة درايههايش را يک بگذار. بعد دستور find درون ماتريس flowersgray جستجو ميکند و شماره درايههايي از ماتريس flowersgray را به من ميدهد که در شرط روبهرو برايش مشخص شده. (همان محدودة 50 تا 100). اين درايههاي بخصوص را در ماتريس f از 1 به 0 تبديل ميشود. نتيجه را باهم ببينيم!
اگر دقت کنيم ميبينيم که مجموعة گلدون از پس زمينه جدا شد. آنهم تنها با انتخاب يک قله درون هيستوگرام... حالا من از کجا فهميدم که اين قله مهم است؟... لابد علم غيب داشتم؟... بعدا راجع به انتخاب قلهها بيشتر خواهيم فهميد.
حالا دستور im2bw را - که تصوير را سياه سفيد ميکند - امتحان کنيد.
bwflowers=im2bw(flowersgray,gray);
imshow(bwflowers)
دستور im2bw حدي تعيين ميکند و درايههايي که از آن حد کمتر باشند را صفر و آنهايي که بيشتر هستند را يک ميکند. آيا متوجه تفاوت دو روش شدهايد؟ اگر به جاي گلدون در تصوير مورد نظر، عکس پرسنلي افراد بود چه اشکالي در روش im2bw وجود داشت؟
دستورات معرفي شده: rgb2gray, imhist, ones, find
کمي نويز دستوپا ميکنيم و به تصوير اضافه ميکنيم که بعداً راهي پيدا کنيم حذفش کنيم:
imagen=imnoise(MyImage,'salt & pepper');
imshow(imagen)
دستور imnoise نويزهاي مختلفي را در اختيار ما ميگذارد که به تصوير اضافه کنيم. افزودن نويز براي شبيه سازي اشکالاتي است که ممکن است به هر سيستم پردازش تصوير وارد شود. اينجا فرض کردهايم که نويز «نمک و فلفل» به تصوير اضافه شده است! اسمش عجيب غريب است؟ اين نويز را روي تصوير تلويزيونتان اگر آنتن درست تنظيم نباشد حتما ديدهايد. ميدانيم که وقتي نويز داريم با يک فيلتر حذفش ميکنيم. فيلتري که انتخاب ميکنيم بايد مناسب نويزي باشيد که روي تصوير سوار شده است. بهترين فيلتر براي نويز «نمک و فلفل» فيلتر ميانه است که در Matlab با دستور Medfilt2 قابل استفاده است:
figure
imagefilt=medfilt2(imagen);
imshow(imagefilt)
براي دستگرمي هم که شده سعي کنيد تصوير نويز و تصوير فيلتر شده را در يک صفحة واحد نمايش دهيد.
دوباره به تصوير MyImage نگاه کنيد. فرض کنيد ميخواهيم مارک دوربين درون عکس را از روي شکل آن تشخيص دهيم. بازهم فرض کنيد به روشي که بعدا بيشتر راجع بهش صحبت ميکنيم فهميديم که دوربين درون اين مختصات از تصوير قرار دارد. بين سطر 59 تا 84 و ستون 131 تا 170. پس از همين مختصات تصوير را با دستور imcrop ميبريم.
imagecrop=Imcrop(MyImage,[ 131 59 39 25]);
در اين دستور مختصات برش را اينطور مينويسم ] ارتفاع ,پهنا ,حداقل y ,حداقل x [. اين قسمت بريده شده را نمايش بدهيد و ببينيد. در مرحله بعد سيستم تشخيصدهندة نوع دوربين احتياج دارد که اندازه تصوير مقدار خاصي مثلاً 120x100 باشد. پس بايد اندازه تصوير برش داده شده را تغيير دهيم:
imagesz=imresize(imagecrop,[120 100]);
تصوير جديد را نگاه کنيد. ميبينيد که به اندازه جديد در آمده است.
دستورهاي معرفي شده: imnoise, medfilt2, imcrop, imresize
خب حالا ميخواهيم تصوير را که در يک ماتريس ذخيره شده است را ببنيم. بنويسيد:
imshow(MyImage)
جالب است نه؟ فکر ميکنيد اگر بخواهيم دوتا تصوير را با هم ببنيم بايد چکار کنيم؟ اين را امتحان کنيد:
YourImage=imread('tire.tif','tif');
figure
subplot(1,2,1), imshow(MyImage), title('MyImage')
subplot(1,2,2), imshow(YourImage), title('YourImage')
با اجراي اين دستورات به آن چيزي که اتفاق افتاد توجه کنيد؛ حتما متوجه ميشود که هرکدام از اين دستورات چکار ميکنند.
دستورهاي معرفي شده: imshow, subplot, title, figure
Matlab میتواند فايلهاي گرافيکي با فرمتهاي JPEG, TIFF, GIF, BMP, PNG, HDF, PCX, XWD, ICO, CUR را به عنوان فايل گرافيکي بخواند. مثلاً براي وارد کردن تصويري به نام cameraman.tif به فضاي Matlab کافي است از دستور imread استفاده کنيم:
MyImage=imread('cameraman.tif','tif');
توجه داشته باشيد که فايلي که دستور خواندنش را ميدهيد بايد براي برنامه قابل دسترس باشد. يعني يا بايد در مسير (Path) Matlab باشد يا اينکه در پروندهاي (folder) قرار داشته باشد که در حال حاضر برنامه به آن دسترسي دارد. براي اينکه بدانيد که Matlab براي پيدا کردن فايلي که دستورش را داديد کجا را خواهد گشت اينکارها را بکنيد: از دستور path براي اينکه بدانيد کدام پروندهها جزء مسير پيشفرض Matlab است و از دستور dir براي اينکه بدانيد که Current Directory چيست؛ استفاده کنيد.
خب تا اينجا يک فايل تصوير را در محيط Matlab وارد کردهايم. همانطور که ميدانيم يک تصوير ديجيتال بر روي کامپيوتر در قالب يک ماتريس ذخيره ميشود. پس MyImage مثل همه متغيرهاي Matlab يک ماتريس است. براي اينکه بدانيم فايل خوانده شده از چه فرمتي است(سياه سفيد، يا Gray Scale يا رنگي ) مينويسيم:
imfinfo('cameraman.tif')
اين دستور را اجرا کنيد و ببينيد چه مينويسد... اما اگر بخواهيد بدانيد که ماتريس ذخيره شدة MyImage از چه نوعي است کافي است بنويسد: whos و ليست متغييرهاي مقيم شده در حافظه و نوع و اندازه آنها را ببينيد.
دستورهاي معرفي شده: imread, imfinfo, whos, path, dir
جمع دو تصویر بدین مفهموم است که در دوتصویر ، شدت روشنایی پیکسل های متناظر دو تصویر را از باهم جمع کنیم . دو تصویر زیر را در نظر بگیرید :
|
|
|
|
|
|
پس از اعمال عملگر جمع بر روی این دو تصویر ، نتیجه ای که حاصل می شود ، تصویر زیر خواهد بود :
|
|
توجه : هنگام جمع مقادیر پیکس ها ، مقادیر بزرگتر از 255 را به مقدار 255 تبدیل می کنیم
تفریق دو تصویر بدین مفهموم است که در دوتصویر ، شدت روشنایی پیکسل های متناظر دو تصویر را از هم کم کنیم . فرض کنید می خواهیم تغییراتی را که بر روی مغز افرادی که دچار بیماری آلزایمر هستند ، بررسی کنیم . برای این منظور می توانیم تصویری از یک مغز سالم را در مراحل مختلف با تصویر مغز فردی که دچار بیماری آلزایمر است ، مقایسه کنیم . با اعمال عملگر فوق بر روی دو تصویر مذکور نقاطی از مغز که در آن نقاط مغر دچار تغییر شده است مشخص می شوند .
تصویر زیر عکس اسکن PET مغز نرمال را نشان می دهد :
تصویر زیر عکس اسکن PET مغز بیمار را نشان می دهد :

پس از اعمال عملگر تفریق نقاط تغییر یافته مغز مشخص می شوند :

http://irinternet.blogfa.com/post-14.aspx اینم لینک سورس اون برنامه پردازش تصویر
اگر دقت کنید متوجه میشید هر تصویر یه ماتریس دو بعدی ، بله ماتریس !
یک تصویر به عنوان سایز در واقع دو مشخصه اصلی طول و عرض رو همیشه داره دیگه ... درسته ؟! پس این طول و عرض چی هستند ؟تعداد پیسکل های در طول یا در عرض هر ریف ، یعنی یک تصویر با سایز ۴۸۰*۶۴۰ در واقع در هر سطر ۶۴۰ پیکسل و در هر ستون ۴۸۰ پیکسل را دارد که جمعاٌ میشه ۳۰۷۲۰۰ پیکسل در کل تصویر ، خوب حالا که اسم سطر و ستون آمد پس میشه از یک تصویر به یک ماتریس اسم ببریم یعنی توی این حالت ما یه ماتریس M*N داریم که M=640 و N=480 ، حالا میمونه درایه های این ماتریس !!!!
هر عضو این ماتریس بیان کننده رنگ آن پیکسل است. این رنگ را با استاندارد های مختلفی است که معروف ترین آنها RGB است که بیان کننده RED , GREEN ,BLUE هر پیکسل است که این خود یک ماتریس 1*3 است که البته هر عضو آن نمی تواند از 255 تجاوز کند.
خوب دیگه حالا دوتا ماتریس تو در تو داریم.
وقتی می خوهیم برنامه بنویسیم باید از یک حلقه استفاده کنیم. این حلقه از سطر اول اولین درایه تا سطر آخر آخرین دریه را بررسی میکند و با استفاده از خاصیت RGB هر نقطه عمل خاصی را انجام میدهد. مثلاً با میانگیری از RGB پیسکل ها میشه آنها رو خاکستری کرد.
فقط دو نکته مهم :
1) این برنامه از نوع برنامه های API است پس باید با declaration همراه باشد. "همون سه خط ابتدایی برنامه"
2)برای پیدا کردن حاشیه در تصاویر یا فیلتر کردن رنگی خاص در تصویر و .... نیاز به فرمولی خاص با استفاده از متغیر های RGB هستیم که البته پیدا کردن این فرمول کار مشکلی که میتونید بعضی هاشون رو از توی برنامه بردارید. لینک سورسش بالا هست.
خواهشاً نظر بدید ، اقلاً سوال کنید ....
من دیدم از MATLAB حرفه ای صحبت شد ، اما اصلاً هیچچی نگفتم که این چیه.... به همین دلیل گفتم این پست رو اختصاص بدم به Matlab اگه خوشتون اومد و البته اگه نظر دادید ، آموزش های جالب تری هم میزارم ، مثل طراحی بازی ، حل مساله و....
اساس عملکرد اين نرم افزار ماتريسها مي باشند . در اصل اين نرم افزار با عمليتهاي ماتريسي و محاسبات ۱۰۰ در صد عملي نتايج عملي و مفيدي به ما ميدهد . پس به شما توصيه مي کنم قبل از کار با اين نرم افزار کمي با ماتريسها آشنايي پيدا کنيد .
در ادامه مطلب خیلی جامع در مورد برنامه Matlab بحث شده ، لطفاً مطالع بفرمایید
ادامه مطلب
ادامه مطلب
ادامه مطلب
همونطور که ممکنه مطلع باشید بحث پردازش تصویر یکی از دروس دانشگاهی اون هم در مقطع کارشناسی ارشد هستش و میشه نتیجه گرفت اگر ما بخواهیم بطور پایه٫ مفهومی و فورمولی به این موضوع بپردازیم مقالاتی بسیار طولانی٬ تخصصی و سنگین رو خواهیم داشت که اصلا تو کار ما نیست. پس من چطوری می خوام شروع کنم؟
آها٬ مطمئنم خیلی هاتون با نرم افزار Matlab کارکردیدخوب کار نکردید حداقل اسمشو شنیدید دیگه. این نرم افزار یجورایی میشه بگی جهت حل مثائل ریاضی٬ شبیه سازی و... برای رشته های گوناگون طراحی شده که تمام محاسباتش در قالب ماتریس ها انجام میشه. این برنامه دارای جعبه ابزارهای گوناگونی هستش که همراه بسته نرم افزاریش ارائه میشه که هرکدون مربوط به کار خاص و رشته خاصی هستش. درواقع یادگیری کار با این نرم افزار دو بخش داره: ۱- اصول اولیه و فرمولهای مبتدی کار با ماتریس ها و اعداد و همچنین برنامه نوبسی مبتدی در مطلب. ۲- یادگیری نحوه کار با جعبه ابزار مربوط به کار خودمون یا آشنایی با توابع موجود در آن.
یادگرفتن مرحله اول کار بسیار آسونی هست و حتی یک دانش آموز زرنگ سطح راهنمایی (اگه زرنگ نباشه دبیرستان!
) هم میتونه با مطالعه یه کتاب خودآموز طی ۴ یا ۵ ساعت به این مرحله تسلط نسبی پیدا کنه! با این حال من خودم مثل همیشه خط به خط کدهایی که استفاده می کنمو کاملا توضیح میدم و سعی می کنم برای همه قابل فهم باشه ولی توصیه می کنم برای اینکه خودتون بتونید کدهای من رو گسترش بدید و چیزای جدید بنویسید و بهتر متوجه بشید حتما یه کتاب مطلب مطالعه کنید. برای شروع هم من کتاب راهنمای کاربردی Mathlab 7.3 نوشته مهندس نیما جمشید رو پیشنهاد میکنم
اما مرحله دوم که ممکنه برای هر جعبه ابزار یه کتاب جداگانه وجود داشته باشه یه مقدار تخصصی تره که در این مقالات قصد دارم به معرفی و آموزش دستورات تعدادی از این جعبه ابزارها بپردازم. (درضمن منظور از جعبه ابزار مجموعه ای از توابع و دستورات مرتبط هستش که جهت انجام پردازشات و محاسبات روی داده های بخصوصی است که توسط افراد یا شرکت ها با استفاده از همین دستورات مبتدی مطلب نوشته شده اند٬ هستش. مثلا جعبه ابزار پردازش تصویر و یا منطق فازی که هرکودوم حاوی توابعی در زمینه خودشون هستند.)
راستی نکنه یه وقت اسم نرم افزار مطلب بترسیدا (ولی واقعا نرم افزار عظیمیه!!!) در سطح مبتدی و متوسط واقعا شیرین و آسونه اینو قول میدم. بچه ها این نرم افزار تو کشورهای خارجی خیلی خیلی خیلی گرونه٬ تازه برای هر جعبه ابزارش هم جداگونه باید خیلی خیلی خیلی پول بدی! اما در ایران خود نرم افزار و هزارتا جعبه ابزارش باهم تو ۳٬۴ تا سی دی ۱۰۰۰ تا ۱۵۰۰ تونم هست.
خوب قصد داریم پردازش تصویر رو در قالب یک پروژه آموزش بدم. پروژه مربوطه یک ربات مسیریاب هستش که مسیر خودش رو توسط پردازش تصویر تشخیص میده!! البته این ربات بجای سنسورهای رنگ از یک دوربین کوچیک فیلم برداری با رابط USB (مثل وبکم) استفاده می کنه و مغز اصلی رباط بجای میکروکنترولر کامپیوتر هستش و توسط درگاه سریال کامپیوتر فرمان میگیره. اگر توجه کرده باشید ربات تولید شده از این روش اصلا نمیتونه تو مسابقات شرکت کنه و فقط جنبه آموزشی برای مقالات ما رو داره که البته از همین ایده میتونید در رباتهای دیگه بجز مسیریاب که بعدا اشاره می کنم استفاده کنید مثلاً امدادگر . پیشنهاد کلی اینه که شما از بدنه یک ربات مسیریاب که از قبل آماده کردید جهت آزمایش این پروژه استفاده کنید. در طی این دوره ما احتیاج داریم با تعدادی از جعبه ابزارهای مطلب از جمله:
-
جعبه ابزار Image processing
-
جعبه ابزار Image Acquisition
-
جعبه ابزار Data Acquisition
-
...
کار کنیم که در مقالات آینده به ترتیب با دستورات موجود در این پکیجها آشنا خواهیم شد و پروژه خودمون رو کامل می کنیم. در پست بعدی کار با جعبه ابزار Image processing که شرین ترین بخش پروژه هست رو شروع می کنم.
موفق باشید
....




