پردازش تصویر

خواندن و نوشتن تصاوير

خواندن و نوشتن تصاوير

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

مثالي از خواندن يك فايل تصويري:

RGB = imread(‘football.jpg’);

برخي قالبهاي تصويري مانند jpg براي هر پيكسل 8 بيت تخصيص مي دهند. بنابراين، متلب اين نوع تصاوير را به صورت نوع 8 uint نمايش مي دهد. اما برخي قالبهاي تصويري مانند  PNG و TIFF مي توانند براي هرپيكسل 16 بيت تخصيص دهند، بنابراين دستور imread باعث توليد آرايه اي از نوع 16 uint مي گردد. براي خواندن يك تصوير به صورت يك تصوير انديس گذاري شده، متلب از دو متغير يكي براي ماتريس رنگ و ديگري براي ماتريس اشاره گرها. دستور imread همواره اطلاعات ماتريس رنگ را در ماتريسي از نوع  double قرار ميدهد گرچه ماتريس اشاره گرها خود از نوع 8 uint و يا 16 uint است.

مثالي از خواندن يك تصوير به صورت يك تصوير انديس گذاري شده:

[X,map] = imread(‘trees.tif’);

 برخي قالبهاي تصويري مانند tiff قادر به ذخيره بيش از يك تصوير در خود هستند. در اينگونه واقع، دستور imread به طور پيش فرض اولين تصوير (يا فريم) را مي خواند مگر اينكه از قالب دستور العمل مناسب براي خواندن بقيه ي فريمها استفاده كنيم. در مثال زير، 27 تصوير از يك فايل با قالب tiff خوانده شده و در يك آرايه چهار بعدي قرار داده مي شوند. البته جلوتر م يتوانيد از دستور imfinfo كمك بگيريد تا ببينيد چند فريم در فايل ذخيره شده است.

mri = zeros([128 128 1 27],’uint8′); % preallocate 4‐D array
for frame=1:27
[mri(:,:,:,frame),map] = imread(‘mri.tif’,frame);
end

اگر ميخواهيد فايل بزرگي را بخوانيد براي اينكه مشكل كمبود حافظه پيش نيايد، يك راه اين است كه از پردازش بلوكي استفاده كنيد.
برا ذخيره داده هاي يك تصوير به صورت يك فايل تصويري روي حافظه كامپيوتر از دستور imwrite مي توانيد استفاده كنيد. در مثال زير ابتدا يك تصوير انديس گذاري شده كه در فايلي با قالب mat. ذخيره شده است خوانده شده و به فضاي كاري متلب منتقل مي شد. سپس اين تصوير به صورت يك فايل تصويري با قالب bmp. در حافظه كامپيوتر ذخيره مي شود.

>>load clown
>>whos
Name Size Bytes Class
X 200×320 512000 double array
caption 2×1 4 char array
map 81×3 1944 double array
Grand total is 64245 elements using 513948 bytes
>>imwrite(X,map,’clown.bmp’)

برخي قالبهاي تصويري يك سري پارامترهاي خاص خود دارند كه در دستور imwrite مي توانيد آنها را تعيين كنيد. براي ديدن اين پارامترهاي خاص بايد از دستور imwrite در محيط راهنماي متلب راهنما بگيريد (در اينجا دستور help كمك چنداني نمي كند).

براي مثال:

imwrite(I,’clown.png’,’BitDepth’,4);
imwrite(A, ‘myfile.jpg’, ‘Quality’, 100);

برخي قالبها مانند tiff به شما اجازه مي دهند كه تصويرتان را به صورت 1 بيت بر پيكسل ذخيره كنيد. در اين حالت اصطلاحاً گفته مي شود عمق بيت 23 برابر 1 بيت است. بنابراين كاملاً مناسب ذخيره تصاوير باينري است. از طرف ديگر، اگر چنين تصاوير ذخيره شد هاي را با دستور imread بخوانيد، ماتريسي از نوع logical در فضاي كاري متلب خواهيد داشت. مثال زير يك تصوير باينري (با قالب png)  را خوانده و آن را به صورت قالب  tiff ذخيره ميكند:

>>BW = imread(‘text.png’);
>>imwrite(BW,’test.tif’);

در مثال فوق اگر ميخواهيد مطمئن شويد كه تصوير مورد بررسي به صورت 1 بيت بر پيكسل است، از دستور imfinfo كمك گرفته و ميدانِ BitDepth را بررسي كنيد:

>>info = imfinfo(‘test.tif’);
>>info.BitDepth
ans =
1

اگر در فضاي كاري متلب، تصويري از يك كلاس مشخص داشته باشيد و بخواهيد ببينيد كه كلاس تصوير حاصل از ذخيره به كمك دستور imwrite چه خواهد بود، از جدول زير كمك بگيريد:

616

 

نویسنده: دکتر هادی گرایلو

 

مقاله متلب,مطلب,متلب,مقاله برق,مقاله قدرت,مقاله مطلب,مقاله سیمولینک,دانلود متلب,دانلود مقاله متلب,مقالهmatlab ,آموزش متلب,مطلب,متلب,آموزش برق,آموزش قدرت,آموزش مطلب,آموزش سیمولینک,دانلود متلب,دانلود آموزش متلب,آموزشmatlab ,پروژه متلب,مطلب,متلب,پروژه برق,پروژه قدرت,پروژه مطلب,پروژه سیمولینک,دانلود متلب,دانلود پروژه متلب,پروژهmatlab ,

سعید عربعامری
من سعید عربعامری نویسنده کتاب 28 گام موثر در فتح متلب مدرس کشوری متلب و سیمولینک و کارشناس ارشد مهندسی برق قدرتم . بعد از اینکه دیدم سایتهای متعدد یک مجموعه کامل آموزش متلب و سیمولینک ندارند به فکر راه اندازی این مجموعه شدم
http://sim-power.ir

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *