برنامه نویسی و پردازش تصویر در متلب 4
کار با توابع imtool ، imresize ، imfinfo ، imread در متلب
بخش 4 آموزش برنامه نویسی درنرم افزار متلب
در این بخش میخوانیم :
1- تابع imtool
2- تابع imresize
3- تابع imfinfo
4- تابع imread
5- تعریف تروکالر
6- مثال برای آموزش تابع imread
7- نگاتیو کردن عکس
imtool یکی دیگر از ابزار های پردازش تصویر است .
-
-
>>img=imread(‘rice . png ‘);
>>imtool(img)
در imtool جزئیاتی که با تغییر شدت نور به وجود آمده حتی فاصله بین نقاط محاسبه میشود.
میتوانید تصویر را کراپ کنید و رو شنایی یک ناحیه مشخص را از نظر عددی بسنجید .
از این توابع برای تهیه نرم افزار پلاک خوان در سیستم اتوماسیون پارکینگ و نیز نرم افزار کنترل تردد خودرو استفاده میشود. استفاده از سیستم نرم افزار پلاک خوان در دستگاه کارتی پارکینگ و هوشمند پارکینگ مورد استفاده قرار میگیرد.
برای این که بفهمیم الگوریتم کاری را که میخواستیم در کمال صحت انجام داده یا اندازه گیری شعاع یا level و مواردی از این قبیل میتوانیم از این ابزار استفاده کنیم .
وقتی میخواهیم سایز تصویر را تغییر دهیم از تابع imresize استفاده میکنیم ، تصویری که به imresize میدهیم پس از خارج شدن scale شده است .
-
Imresize
Syntax
B = imresize (A , scale)
به scale باید بین صفر و یک درصد بدهیم .
-
B = imresize (A ,[numcows numcols ])
تعداد سطر و ستون را در فرمول میگذاریم .
-
[Y new map ] = imresize ( X , map , scale )
[…] = imresize ( …, method )
نحوه ی استفاده متد :
nearest نزدیکترین چیزی که در اطرافش هست را مد نظر قرار میدهد .
bilinear شکل فرمول درون یابی دو خطی را مد نظر قرار میدهد .
bicubic یک فرمول درجه سه را مد نظر قرار میدهد ، تصاویر نرمی میسازد اما زمان زیادتری نسبت به بقیه طول میکشد .
-
[… ] = imresize ( …, parameter , Value , … )
برای این درون یابی ها از کرنل های مختلفی کمک میگیریم .
کار با تابع imresize در محیط متلب
-
>>img half = imresize ( img ,0/5);
>> size (img – half )
And=
128 128
>>imshow (img – half );
اندازه تصویر نصف میشود .
-
>>img half = imresize( img , 0/5 , ‘ nearest ‘) ;
>>im show ( imresize ( img , 0/5 , ‘ nearest ‘ );
-
>>figure ; imshow ( imresize ( img , 0/5 , ‘ blinear ‘))
به خاطر عملکرد هوشمندانه bicubic هماهنگی اجزای تصویر بیشتر تصویر نرمتر و زمان پردازش بیشتر میشود
( به خاطر دقت بالای بایکیوبیک برای تصاویر کوچک توصیه میشود )
در طولباکس پردازش تصویر متلب تابعی شبیه explore ویندوز داریم .
مثلا :
اطلاعات تصویری mypic.jpg را ببینیم ،
-
>>img = imread(‘mypic . gpg ‘)
>>imshow (img)
با استفاده از تابع imfinfo در متلب میفهمیم فایل چه اطلاعاتی دارد .
متغیرans را میتوانیم خودمان به شکل یه اسکرابچر ذخیره کنیم و بنویسیم :
-
Info = imfinfo ( ‘ pepper4s . png ‘);
برای نوشتن کپی رایت تصویر :
-
>>info.Copyright ans = Copyright the mathWorks, Unc.
>> info.width ans = 512
>> info.Height ans = 384
>> c
خواندن و ذخیره سازی مطالب imtool- imresize- imfinfo- imread درمحیط متلب را آموختیم در ادامه همه الگوریتم هایی که با آن کار میکنیم ابتدا از تابع imread استفاده میکنیم .
Bit Depth:24
24 یعنی سه لایه 8 تایی (یک تصویر رنگی سه لایه )
شماره هر Bit بین 0 تا 255 است
-
;img = imread( ‘ rice . png ‘ )<<
img<256 . 256 uint8<<
Integer 8 bit طبق قرار داد پیش فرض ذخیره شده در اطلاعات کامپیوتر بین 0 تا 255 است ، اگر سه لایه 0تا255 باشدانگار سه تا Component رنگی ، قرمز – سبز – ابی از پیکسل های (RGB) روی هم قرار گرفته این bitdepth :24 را اصطلاحا ترو کالر هم میگویند که یک عدد ثابت 16777216 میباشد از تنوع رنگ و دقتی بالا برخوردار است .
-
>> 2 ^ 8
ans =
256
>> 2 ^ 24
ans =
16777216
چشم ما بیشتر این رنگها را از هم تفکیک نمیدهد ، در مباحث علمی ، چاپ و منتقل کردن اطلاعات در کل تصاویر ی که چشم انسان زیاد با آن برخورد ندارد از روش های اندیس گزاری رنگی کمک میگیرند .
مفهومِ Bit Depth میزان تفکیک پذیری رنگی میشود .
چیزهایی که در رایانه های عادی استفاده میکنیم همین 32 Bit 24 ، Bit است .
ماهواره همان چیزی است که نسبت به دستگاههای مختصات کوانتیزه میکنید .
با علامتهای ماتریسی پایه و به کار گیری نگاشت هندسی این زوایا را میتوان تشخیص داد یا دَوران داد یا بزرگ و کوچک کرد حتی مقیاس بندی کرد .
دراین مثال (R , G ) را جا به جا میکنیم :
-
>>img1=imread(‘peppers . png’)
>>img2=Zeros(size(img1));
>>img2 (: ,: ,1) = img1 (: , : , 2);
>>img2(:,:,2)= img1 (: ,: ,1);
>> img2 (: , : , 3) = img1 (: , : ,3);
>>figure ;
>>subplot (1 ,2 ,1) ;
>>Imshow (img1) ;
>>subplot (1 ,2 , 2 );
>>imshow (img2);
رنگ قرمز و سبز با هم جا به جا میشود ماتریسی به دست می آید که دارای یک سطح و دو ستون است .
متلب تصاویر به شکل دابل را تشخیص نمیدهد .
-
Img 1 <384 . 512 . 3 uint8>
Img2 <384 . 512 . 3 double>
Img2 = uint8(img 2 );
تصاویری که ترکیب مساوی از رنگهای قرمز و سبز دارند زیاد تحت تاثیر این جا به جا یی قرار نمیگیرند .
با معکوس کردن یکی از لایه ها میتوانیم بیشترین مقدار را صفر در نظر بگیریم و به جای 255 صفر بگذاریم .
-
Img3 = 255 – img2;
Imshow (img3)
فرمول نگاتیو میشود
در فیلم های عکاسی قدیمی نور را به ظهوری که آنجا بود تابش میدادن و نورهایی دقیقا برعکس تصویر اصلی را از خود عبور میداد در حقیقت تصویر به دست آمده همان تصویر اصلی بود .
ادامه آموزش متلب در بخش 5