به آموزشگاه بیاموز خوش آمدید!

سبد خرید (0)

ایجاد ابزارهای ماژولار در متلب

در این مقاله، با موارد زیر آشنا خواهید شد:

  1. مقدمه
  2. مرتبط کردن ابزارهای ماژولار به یک عکس خاص
  3. به دست آوردن شناسه(هندل) عکس هدف
  4. مشخص کردن والد یک ابزار ماژولار
  5. قرار دادن ابزارهای ماژولار در یک عکس
  6. مثال از ایجاد یک ابزار ماژولار
  7. اضافه کردن ابزارهای کمک هدایتی به یک گرافیک

مقدمه

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

 به طور پیش فرض، اکثر توابع ابزارهای ماژولار به آرگومان نیاز ندارند، زیرا از عکس نمایش یافته در جعبه ی عکس، بعنوان عکس هدف استفاده می کنند. در صورتی که جعبه ی عکس حاوی چندین عکس باشد، این ابزارها با آخرین عکس ایجاد شده، مرتبط می شوند. توابع impixelinfo و impixelinfoval و imdisplayrange می توانند با چندین عکس نمایش داده شده در داخل یک ابزار عکس کار کنند. 

بعنوان مثال، برای استفاده از ابزار Pixel Information در یک عکس، ابتدا آن عکس را با استفاده از تابع imshow نمایش دهید، و سپس تابع impixelinfo را فراخوانی کنید تا این ابزار ایجاد شود. در این مثال، عکس نمایش داده شده در جعبه ی عکس، نقش عکس هدف را بازی می کند. 

مثال (ایجاد ابزارهای ماژولار در متلب)

imshow('pout.tif');
impixelinfo

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

 


 مرتبط کردن ابزارهای ماژولار به یک عکس خاص

 شما می توانید با قرار دادن یک شناسه(هندل) از عکس مورد نظر در یک ابزار ماژولار، این ابزار را به آن عکس مرتبط کنید. مثال قبلی را در نظر می گیریم. ممکن است شما بخواهید به عکس بالا، که حاوی ابزار Pixel Information است، ابزار Display Range را نیز اضافه کنید. برای انجام این کار، تابع imdisplayrange را فراخوانی کنید و شناسه(هندل) عکس هدف را به این تابع بدهید. به مثال زیر توجه کنید:

مثال (ایجاد ابزارهای ماژولار در متلب)

himage = imshow('pout.tif');
hpixelinfopanel = impixelinfo(himage);
hdrangepanel = imdisplayrange(himage);

 

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

 

 


به دست آوردن شناسه(هندل) از عکس هدف

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

1.  می توانیم به هنگام نمایش دادن عکس با استفاده از تابع اختیاری imshow شناسه را به دست بیاوریم.

2. می توانیم با استفاده از تابع imhandles این شناسه(هندل) را به دست بیاوریم. 

تابع imhandles تمام اشیاء عکس هایی که فرزند یک جعبه ی عکس، هستند را برمی گرداند. 

بعنوان مثال، تابع imshow به صورت زیر شناسه ی یک عکس را برمی گرداند:

مثال (ایجاد ابزارهای ماژولار در متلب)

hfig = figure;
himage = imshow('moon.tif')
himage =
152.0055

هنگامی که شما تابع imhandles را فراخوانی کنید، و شناسه ی یک جعبه ی عکس(figure) که حاوی عکس مورد نظر است را به آن بدهید، این تابع شناسه یِ(هندل) عکس درون آن را به ما می دهد:

مثال (ایجاد ابزارهای ماژولار در متلب)

himage2 = imhandles(hfig)
himage2 =
152.0055

 


مشخص کردن والد یک ابزار ماژولار

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

مشخص کردن والد، اختیاری می باشد. تمام ابزارهای ماژولار دارای یک حالت پیش فرض هستند. برخی از این ابزارها که سبک تر هستند، مانند ابزار Pixel Information از والد عکس هدف بعنوان والد خود استفاده می کنند و خود را به جعبه های عکس(figure) مربوط به عکس هدف اضافه می کنند. دیگر ابزارهای ماژولار، مثل ابزار Pixel Region یا ابزار Overview در یک جعبه ی عکس جداگانه باز می شوند. 


ابزارهایی که دارای توابع جداگانه هستند

 دو تا از ابزارهای ماژولار، یعنی ابزارهای Pixel Region و  Overview برای ارائه دادن قابلیت های خود، از توابع جداگانه ای استفاده می کنند. اگر ما از توابع اولیه ی این ابزارها، یعنی توابع impixelregion و imoverview  استفاده کنیم، این ابزارها در داخل جعبه های عکس(figure) جداگانه ای باز خواهند شد. برای مشخص کردن یک والد متفاوت برای این ابزارها، باید از توابع  imoverviewpanel و impixelregionpanel استفاده کنید. 

مثال: اضافه کردن ابزار Pixel Region به یک جعبه ی عکس(figure) موجود

این مثال رفتار پیش فرض ابزار Pixel Region را با استفاده از تابع impixelregion نشان می دهد. این ابزار در یک جعبه ی عکس جداگانه باز می شود. به عکس زیر توجه کنید:

مثال (ایجاد ابزارهای ماژولار در متلب)

himage = imshow('pout.tif')
hpixelinfopanel = impixelinfo(himage);
hdrangepanel = imdisplayrange(himage);
hpixreg = impixelregion(himage);

 

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

 در مثال زیر یک جعبه ی عکس(figure) و یک محور(axes) ایجاد می کنیم و شناسه های(هندل های) آنها را به دست می آوریم. این مثال، برای انجام دادن برخی تغییرات بر روی این اشیاء و اینکه آیا آنها قابل مشاهده هستند یا نه، به این شناسه ها نیاز دارد. سپس در این مثال، ابزارهای ماژولار را ایجاد می کنیم و مشخص می کنیم که جعبه ی عکس که حاوی عکس هدف است، والد ابزار Pixel Region بشود. توجه کنید که این مثال، از دستور impixelregionpanel برای ایجاد ابزار ماژولار مورد نظر استفاده می کند. 

 

مثال (ایجاد ابزارهای ماژولار در متلب)

hfig = figure;
hax = axes('units','normalized','position',[0 .5 1 .5]);
himage = imshow('pout.tif')
hpixelinfopanel = impixelinfo(himage);
hdrangepanel = imdisplayrange(himage);
hpixreg = impixelregionpanel(hfig,himage);
set(hpixreg, 'Units','normalized','Position',[0 .08 1 .4]);

 عکس زیر، ابزار Pixel Region را نشان می دهد که در یک جعبه ی عکس مشابه با عکس هدف قرار گرفته است.