تغییر دادن اندازه ی عکس در پردازش تصویر

چاپ

مقدمه ی فصل تبدیلات فضایی در پردازش تصویر و متلب

یک تبدیل فضایی(که معمولا با عملیات هندسی شناخته می شود) ارتباط فضایی بین پیکسل های یک عکس را تغییر داده و موقعیت های پیکسلی  یک عکس ورودی را به موقعیت های پیکسلی در یک عکس خروجی، ترسیم می کند. جعبه ابزار متلب حاوی توابعی است که قادر هستند تا تبدیلات خاصی را مثال تغییر اندازه و چرخاندن یک عکس، انجام دهند. علاوه بر موارد ذکر شده، جعبه ابزار متلب حاوی توابعی است که می توان از آنها برای انجام انواع تبدیلات دوبعدی و n-بعدی استفاده نمود.


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

1. مقدمه

2. بررسی روش درون یابی(Interpolation)

3. جلوگیری از ناصافی تصاویر با استفاده از فیلترها


 مقدمه

برای تغییر اندازه دادن یک عکس، می توانید از تابع imresize استفاده کنید. هنگامی که شما یک عکس را تغییر اندازه می دهید، بزرگنمایی عکس تغییر می کند. بنابراین  برای بزرگ کردن یک عکس، عامل بزرگنمایی را بیشتر از 1 قرار دهید. و برای کوچک کردن یک عکس، عامل بزرگنمایی را بین 0 و  1 قرار دهید. بعنوان مثال دستور زیر سایز یک عکس را 1.25 افزایش می دهد:

مثال (تغییر دادن اندازه ی عکس در پردازش تصویر)

I = imread('circuit.tif');
J = imresize(I,1.25);
imshow(I)
figure, imshow(J)

 

 شما می توانید با استفاده از یک بردار که حاوی تعداد سطرها و ستون های عکس خروجی است، سایز عکس خروجی را مشخص کنید. در صورتی که شما یکی از درایه های بردار مورد نظر را برابر با NaN قرار دهید، باعث می شود تا تابع imresize مقدار آن بُعد را طوری محاسبه کند که از نسبت ابعاد عکس محافظت شود. 

مثال زیر یک عکس خروجی ایجاد می کند که دارای 100 سطر و 150 ستون است:

مثال (تغییر دادن اندازه ی عکس در پردازش تصویر)

I = imread('circuit.tif');
J = imresize(I,[100 150]);
imshow(I)
figure, imshow(J)

 


بررسی روش درون یابی(Interpolation)

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

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

 به طور پیش فرض، تابع imresize برای مشخص کردن مقدار پیکسل ها در عکس خروجی، از درون یابی مکعبی استفاده می کند، اما شما می توانید متدهای درون یابی دیگری را مشخص کنید. در مثال زیر، تابع imresize از درون یابی دوخطی(bilinear) استفاده می کند. 

مثال (تغییر دادن اندازه ی عکس در پردازش تصویر)

Y = imresize(X,[100 150],'bilinear')

جلوگیری از ناصافی تصاویر با استفاده از فیلترها

 هنگامی که شما سایز یک تصویر را کاهش می دهید، برخی از پیکسل ها را در عکس اصلی از دست خواهید داد، زیرا در عکس خروجی برای یک نقطه چند پیکسل وجود خواهد داشت که باعث ناصافی(دندانه دار شدن) عکس می شوند. به طور پیش فرض تابع imresize از antialiasing(فرایند ضد ناصافی) برای محدود کردن تاثیر ناصافی بر روی عکس خروجی استفاده می کند. این کار برای تمام انواع درون یابی ها به جز نزدیک ترین همسایگی(nearest neighbor) انجام می شود. برای خاموش کردن فرایند ضد ناصافی(antialiasing) کافیست پارامتر 'Antialiasing' را به مقدار false تنظیم کنید.