loading...
sim power
مهندس احمدی بازدید : 120 یکشنبه 09 آبان 1395 نظرات (0)

  

مثال: پردازش یک دنباله از تصاویر-۱

 
 

مثال: پردازش یک دنباله از تصاویر
در این مثال، یک سری از تصاویر از یک دایرکتوری خاص خوانده شده و به درون فضای کاری متلب منتقل می شوند. در این مثال، تصاویر به صورت یک آرایه سه بعدی m×n×p خوانده و در فضای کاری متلب ذخیره می شوند. سپس تابع stdfilt روی همه تصاویر اعمال می شود. این تابع کار فیلتر کردن مبتنی بر انحراف معیار را روی تک تک تصاویر انجام م یدهد. با توجه به توضیحات جدول اخیر در مورد تابع stdfilt ملاحظه میکنید که باید از آرگومان nhood استفاده کنیم. بنابراین، ابتدا از تابع stdfilt  راهنما بگیرید:

>> help stdfilt
STDFILT Local standard deviation of image.
J = STDFILT(I) returns the array J, where each output pixel contains the
standard deviation value of the 3‐by‐3 neighborhood around the corresponding
pixel in the input image I. I can have any dimension. The output image J is
the same size as the input image I.
For pixels on the borders of I, STDFILT uses symmetric padding. In
symmetric padding, the values of padding pixels are a mirror reflection
of the border pixels in I.
J = STDFILT(I,NHOOD) performs standard deviation filtering of the input
image I where you specify the neighborhood in NHOOD. NHOOD is a
multidimensional array of zeros and ones where the nonzero elements specify
the neighbors. NHOOD’s size must be odd in each dimension.

By default, STDFILT uses the neighborhood ones(3). STDFILT determines the
center element of the neighborhood by FLOOR((SIZE(NHOOD) + 1)/2). For
information about specifying neighborhoods, see Notes.
Class Support
‐‐‐‐‐‐‐‐‐‐‐‐‐
I can be logical or numeric and must be real and nonsparse. NHOOD can be
logical or numeric and must contain zeros and/or ones. I and NHOOD can have
any dimension. J is double.
Notes
‐‐‐‐‐
To specify the neighborhoods of various shapes, such as a disk, use the
STREL function to create a structuring element object and then use the
GETNHOOD function to extract the neighborhood from the structuring element
object.
Examples
‐‐‐‐‐‐‐‐
I = imread(‘circuit.tif’);
J = stdfilt(I);
imshow(I);
figure, imshow(J,[]);
See also std2, rangefilt, entropyfilt, strel, GETNHOOD.

ملاحظه می کنید که nhood تعیین کننده پیکسلهایی است که باید در کار محاسبه ی انحراف معیار محلی برای این آرگومان از آنها استفاده کنیم. در مثال فعلی، از (ones(3 استفاده شده است. یعنی یک همسایگی دو بعدی تعریف شده است.
برنامه ی مثال:

% Create an array of filenames that make up the image sequence
fileFolder = fullfile(matlabroot,’toolbox’,’images’,’imdemos’);
dirOutput = dir(fullfile(fileFolder,’AT3_1m4_*.tif’));
fileNames = {dirOutput.name}’;
numFrames = numel(fileNames);
I = imread(fileNames{1});
% Preallocate the array
sequence = zeros([size(I) numFrames],class(I));
sequence(:,:,1) = I;
% Create image sequence array
for p = 2:numFrames
sequence(:,:,p) = imread(fileNames{p});
end

ادامه مطلب....

مهندس احمدی بازدید : 101 یکشنبه 09 آبان 1395 نظرات (0)

  

مثال: پردازش یک دنباله از تصاویر-۲

 
 

مثال: پردازش یک دنباله از تصاویر-2

برای توضیحات این برنامه از برخی توابعی که احتمالاً تاکنون آنها را ندیده اید، راهنما بگیرید. مثلاً برای تابع fullfile:

>> help fullfile
FULLFILE Build full filename from parts.
FULLFILE(D1,D2, … ,FILE) builds a full file name from the
directories D1,D2, etc and filename FILE specified. This is
conceptually equivalent to
F = [D1 filesep D2 filesep … filesep FILE]
except that care is taken to handle the cases where the directory
parts D1, D2, etc. may begin or end in a filesep. Specify FILE = ”
to build a pathname from parts.
Examples
To build platform dependent paths to files:
fullfile(matlabroot,’toolbox’,’matlab’,’general’,’Contents.m’)

ادامه مطلب....

مهندس احمدی بازدید : 125 یکشنبه 09 آبان 1395 نظرات (0)

  

نمایش و وارسی تصاویر

 
 

نمایش و وارسی تصاویر

دستور imshow

یک راه استفاده از دستور imshow (ابتدا تصویر را بخوانید و سپس آن را نمای دهید):

moon = imread(‘moon.tif’);
imshow(moon);

راه دیگر: نام فایل را مستقیماً ذکر کنیم :

imshow(‘moon.tif’);

البته این راه باعث نمیشود که داده های عددی تصویر به فضای کاری متلب منتقل شود؛ برای این کار باید از دستور getimage
استفاده کنید:

moon = getimage;

در حالت پیش فرض، دستور imshow یک تصویر با بزرگنمایی 100 % (یعنی به ازاء هر پیکسل از تصویر یک پیکسل از صفحه نمایش کامپیوتر متناظر می شود) نمایش می دهد. اگر بخواهید این پیش فرض را تغییر دهید (مثلاً با بزرگنمایی %150):

pout = imread(‘pout.tif’);
imshow(pout, ‘InitialMagnification’, 150)

به جای مقدار عددی ‘fit’ اگر بخواهید تصویر متناسب با ابعاد فعلی پنجره موجود نمایش داده شود، از مقدار بزرگنمایی استفاده کنید.
اگر بخواهید مقدار پیش فرض بزرگنمای را تغییر دهید ابتدا پنجره ی مکالمه ی جعبه ابزار پردازشتصویر را با اجرای دستور iptprefs فراخوانی کرده و سپس مقدار پارامتر ImshowInitialMagnification را تغییر دهید.
هنگام نمای یک تصویر، یک نوار خاکستری رنگ دور تصویر را احاطه کرده است:

620

 

اگر بخواهید این نوار حذف شود، مقدار پارامترBorder در دستور imshow را برابر ‘tight’ قرار دهید:

imshow(‘moon.tif’,’Border’,’tight’)

ادامه مطلب....

مهندس احمدی بازدید : 108 یکشنبه 09 آبان 1395 نظرات (0)

   

نمایش تصاویر رنگی

 
 

نمایش تصاویر رنگی

از دستور imshow استفاده می شود.

RGB = imread(`peppers.png’);
imshow(RGB)
or
imtool(RGB)

634

نکته: اگر یک تصویر رنگی را نمایش دادید اما به صورت سطح خاکستری نمایش داده شد، آن تصویر به صورت اندیس گذاری شده بوده و شما باید از ماتریس رنگ نیز در کنار ماتریس تصویر استفاه کنید.

نمایش میله رنگ

هدف از یک میله ی رنگ نشان دادن محدوده سطوح مختلف روشنایی و نیز رنگ متناظر با هر سطح روشنایی در نمایش تصویر است. برای اضافه کردن یک میله رنگ باید ابتدا از دستور imshow برای نمایش تصویر استفاده کنید و سپس از دستور colorbar
استفاده کنید. یکی از موارد استفاده از میله رنگ، زمانی است که تصویری در اختیار دارید که بنا به دلایل مختلف محدوده ی مقادیری خارج از محدوده معمول (مثلاً خارج از بازه صفر تا 255 ) دارد. در مثال زیر، تصویر ورودی فیلتر شده و بنابراین، مقادیر  نوعِ 8 uint خارج از بازه ی پیکسل های تصویر خروجی است.

ادامه مطلب....

مهندس احمدی بازدید : 161 یکشنبه 09 آبان 1395 نظرات (0)

 

  

نمایش تصاویر باینری

 
 

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

BW = imread(‘circles.png’);
imshow(BW)
or
imtool(BW)

631

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

imshow(~BW)
or
imtool(~BW)

632

همچنین می توانید با آدرس دهی به شیوه ی تصاویر اندیس گذاری شده، یک تصویر باینری را به صورت رنگی نمایش دهید. برای مثال، دستور زیر برای رنگ سیاه از رنگ قرمز و به جای رنگ سفید از رنگ آبی استفاده می کند:

imshow(BW,[1 0 0; 0 0 1])
or
imtool(BW,[1 0 0; 0 0 1])

نتیجه:

ادامه مطلب....

مهندس احمدی بازدید : 139 یکشنبه 09 آبان 1395 نظرات (0)

  

خواندن تصاویر با محدوده دینامیکی زیاد

 
 

خواندن تصاویر با محدوده دینامیکی زیاد

تصاویر با محدوده دینامیکی زیاد معمولاً در فایلهایی با پسوند hdr ذخیره می شوند. برای خواندن این فایلها از دستور  hdrread  استفاده کنید. برای مثال:

>>hdr_image = hdrread(‘office.hdr’);
>>whos
Name Size Bytes Class Attributes
hdr_image 665x1000x3 7980000 single

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

>>imshow(hdr_image);

617

البته ممکن است نمایش زیر را هم ببینید:

618

برای انجام نگاشت تن، از تابع tonemap استفاده کنید:

>>rgb = tonemap(hdr_image);
>>whos
Name Size Bytes Class Attributes
hdr_image 665x1000x3 7980000 single
rgb 665x1000x3 1995000 uint8

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

>>imshow(rgb);

ادامه مطلب....

مهندس احمدی بازدید : 99 یکشنبه 09 آبان 1395 نظرات (0)

   

دنباله های تصویری

 
 

دنباله های تصویری

برای پخش دنباله های تصویری میتوان از Movie Player استفاده کرد.

مثال:
1- بارگذاری دنباله ی تصویری به فضای کاری متلب

>>load mristack

در فضای کاری متغیری به نام mristack ظاهر میشود که آرایه ای شامل 21 فریمِ 256 در 256 و از نوع uint8 است.

mristack 256x256x21 1276256 uint8

به کمک دستور implay نام دنباله را به عنوان آرگومان ورودی می دهیم:

624

 

2-پخش دنباله تصویری در Movie Player

implay(mristack)

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

 

جدول زیر حالتهای مختلف کاری و نحوه انجام هر حالت را نشان می دهد.

625

626

 

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

برای تغییر نرخ نمایش فریم (تعداد فریمها در ثانیه 25 ) از منوی Playback گزینه ی  Frame Rate را انتخاب کنید یا اینکه کلید T را فشار دهید:

627

ادامه مطلب....

مهندس احمدی بازدید : 112 یکشنبه 09 آبان 1395 نظرات (0)

  

تبدیلات مکانی

 
 

تبدیلات مکانی

منظور از تبدیل مکانی تغییر دادن رابطه ی مکانی بین پیکسلهای موجود در تصویر اصلی است.

تغییر ابعاد  تصویر
برای تغییر ابعاد یک تصویر از تابع imresize میتوان استفاده کرد. در این تابع باید ضریب بزرگنمایی را که عددی کوچکتر یا بزرگتر از 1 است، تعیین کرد. اگر قصد بزرگتر کردن اندازه ی تصویر را دارید باید عددی بزرگتر از 1 و اگر قصد کوچکتر کردن اندازه ی تصویر را دارید باید عددی کوچکتر از 1 را انتخاب کنید.

خرید کدهای یک مثال:

 

637

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

خرید کدهای یک مثال:

 

638

برای تغییر ابعاد مورد نیاز در پردازش چند درجه ی تفکیک می توانید از تابع impyramid استفاده کنید. تابع imresize برای افزایش ابعاد تصویر از درونیابی استفاده می کند. روش پیش فرض برای درونیابی، روش ‘bicubic’ است. می توان از روشهای ‘bilinear’ و ‘nearest’ نیز استفاده کرد (برای دیدن حالتهای مختلف به صفحه ی مرجع دستور imresize مراجعه کنید). مثال:

ادامه مطلب....

مهندس احمدی بازدید : 298 یکشنبه 09 آبان 1395 نظرات (0)

   

چرخاندن یک تصویر

 
 

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

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

خرید کدهای یک مثال:

عکسهای مربوط به کد:

639

برش (یا کندن تکه ای از) یک تصویر
استفاده کنید. مشخصات ناحیه ی imcrop برای استخراج یک ناحی هی مستطیلی- شکل میتوانید از دستور
.مذکور را می توانید به کمک ماوس و یا با برنامه نویسی تعیین کنید

مثال (استفاده از ماوس):

خرید کدهای یک مثال:

عکسهای مربوط به کد:

ادامه مطلب....

مهندس احمدی بازدید : 359 یکشنبه 09 آبان 1395 نظرات (0)

  

انجام تبدیلات دوبعدی مکانی پردازش تصویر

 
 

انجام تبدیلات دوبعدی مکانی دلخواه
برای انجام یک تبدیل مکانی دلخواه سه مرحله باید طی شود:
1- تعیین پارامترهای تبدیل مکانی
2- ایجاد ساختاری به نام TFORM
3- انجام تبدیل به کمک دستور imtransform

یک ساختار TFORMساختاری است که شامل تمام پارامترهای لازم برای انجام یک تبدیل دوبعدی می باشد. برای تولید یک ساختارTFORM، می توان از دستور maketform استفاده کرد.

شکل زیر مراحل فوق را نشان می دهد:

641

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

گام 1: خواندن تصویر ورودی

cb = checkerboard;
imshow(cb)

642

 

گام 2: تعریف تبدیل
برای تعریف بسیاری از تبدیلات استفاده از یک ماتریس مربعی به طول 3 کافی است. شما می توانید با تعیین چند جفت نقطه متناظر از تصویر ورودی و خروجی نیز، تبدیل را مشخص و از دستور maketform برای ایجاد ماتریس مربعی مذکور استفاده کنید. در این مثال از ماتریس تبدیل زیر استفاده م یشود (معادل عمل انتقال است):

xform = [ 1 0 0
0 1 0
40 40 1 ]

اولین عدد 40 (از چپ) معرف میزان جابجایی در راستای افقی و دومین عدد 40 معرف میزان جابجایی در راستای عمودی است.

گام 3: ایجاد ساختار TFORM

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

‘affine’          Affine transformation in 2‐D or N‐D

        ‘projective’        Projective transformation in 2‐D or N‐D

‘custom’         User‐defined transformation that can be N‐D to M‐D

‘box’                         Independent affine transformation (scale and shift) in each dimension

‘composite’         Composition of an arbitrary number of more basic transformations

در این مثال، از پارامتر نوع تبدیلِ affine’ باید استفاده کنیم:

tform_translate = maketform(‘affine’,xform);

گام 4: انجام تبدیل
برای انجام تبدیل، از دستور imtransform به همراه تصویر ورودی و ماتریس تبدیل مورد نظرمان استفاده می کنیم.

[cb_trans xdata ydata]= imtransform(cb, tform_translate);

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

شکل زیر تبدیل انجام شده در این مثال را به صورت گرافیکی نشان می دهد. ملاحظه می کنید که پیکسل واقع در مختصات ( 1،1 ) از تصویر ورودی به مختصات ( 41،41 ) در تصویر خروجی منتقل شده است.

ادامه مطلب....

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

اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 791
  • کل نظرات : 0
  • افراد آنلاین : 2
  • تعداد اعضا : 0
  • آی پی امروز : 21
  • آی پی دیروز : 55
  • بازدید امروز : 34
  • باردید دیروز : 2,205
  • گوگل امروز : 1
  • گوگل دیروز : 12
  • بازدید هفته : 2,441
  • بازدید ماه : 3,516
  • بازدید سال : 26,255
  • بازدید کلی : 197,361