Professional Documents
Culture Documents
Tamrin 1
Tamrin 1
وارد كردن فايل تصوير RAW BAYERو درونيابي تصوير و تبديل تصوير RGBبه تصويرانديسي در
نرم افزار متلب
نيمسال اول٩٨-٩٩
فهرست
١
ﺻﻔﺤه عنوان
مﻘﺪمه ٣ ............................................................................................................................
٢
مﻘﺪمه
يك تصوير ميتواند با يك تابع ٢بعدي بصورت ) f(x,yتعريف شود كه x ,yمختصات نقاط در تصوير ميباشند .
مقداز تابع fدر مختصات x,yعبارت است از intensityيا سطح Grayآن نقطه در تصوير زماني كه x , yو
مقدار تابع fهمگي داراي مقادير محدود و گسسته باشند ما از تصوير تحت عنوان يك تصوير ديجيتال ياد ميكنيم .
در واقع پردازش تصوير ديجيتال به فرآيند پردازش تصاوير ديجيتال توسط كاميپوتر هاي ديجيتال اطﻼق ميشود.
الگوي موزائيكي فيلترهاي باير ،ساختاري براي چيدمان رنگهاي اصلي قرمز ،سبز و آبي RGBبر روي شبكهي
مربعي فتوسنسورها است .چيدمان خاص اين الگو در بيشتر سنسورهاي تصوير دوربينهاي ديجيتال ،دوربينهاي
فيلمبرداري و اسكنرها براي تشكيل تصوير رنگي استفاده ميشود .الگوي اين فيلتر شامل ٪٥٠سبز ٪٢٥ ،قرمز و
٢٥٪آبي است ،بنابر اين به صورت RGBGيا GRGBيا RGGBبه آن اشاره ميشود .اين الگوي را به ياد ابداع
كنندهي آن Bryce E. Bayerاز شركت ، Eastman Kodakالگوي فيلترهاي رنگي باير ناميدند.
درونيابي تصوير
يكي از حوزه هاي پر كاربرد در پردازش تصوير ،درونيابي يا بزرگ نمايي كردن ابعاد تصوير است .
فرض ميكنيم تصويري داريم كه ميخواهيم ابعاد آن را بزرگ نماييم ،زمانيكه تصوير بزرگتر را از تصوير
كوچكتر ميخواهيم بسازيم ،يكسري پيكسل بين پيكسل هاي تصوير اصلي اضافه ميشود ،بدست
آوردن مقدار اين پيكسل هاي اضافه شده روش هاي گوناگوني داردكه عبارت اند از bilinear- :
nearest neaighbour-bicubicكه در ادامه هر كدام ازاين روش ها را بر روي تصوير اصلي اعمال
خواهيم كرد .
٣
بيان مسئله
يك تصوير RGBﺑافرمت RAW Bayerانتخاب كرده و سپس اين تصوير را تبديل ﺑه تصوير true
colorكرده و ﺑعد سه ﺑاند آن را جدا كرده و ﺑه روش هاي مختلف كه در ﺑاﻻذكر شده عمليات
درونياﺑي را ﺑراي هر ﺑاند انجام داده و سپس ﺑاندها را مجددا تركيب نموده و پس از آن تصوير را ﺑه
فرمت ٢٤ TIFFﺑيتي تبديل كرده و سپس تصوير TIFFرا ﺑه تصوير ٨ index colorﺑيتي تبديل كرده
و سرانجام هيستوگرام تصويرخروجي را ﺑا تصوير ورودي مقايسه ميكنيم .
راهكار و حل مسئله
۴
اينك ﺑايد تصوير ورودي را ﺑه تصوير True Colorتبديل نماييم ﺑراي اين منظور از دستور زير در
محيط نرم افزار متلب استفاده ميكنيم كه Jتصوير True colorخروجي ميباشد .
;)'J = demosaic(I,'bggr
*ﺑراي ﺑخش درونياﺑي از تاﺑع )( interp2استفاده ميكنيم كه دراين پروژه روش هاي درونياﺑي
Bilinear- nearest neaighbour-bicubicرا مورد پردازش قرار ميدهيم .
۵
* ﺑراي تبديل تصوير RGBﺑه ايندكس از تاﺑع )( rgb2indاستفاده ميكنيم.
ﺑراي ساخت صحيح اين نوع از تصوير حتمي ﺑه ماتريس mapمي ﺑاشد.
ماتريس mapاعدادي ﺑين ٠تا ١را ﺑا ٤رقم اعشار توليد مي كند.
اين ماتريس در حقيقت ماتريس ٣ﻻيه از رنگ هاي اصلي قرمز ,سبز و آﺑي مي ﺑاشد و نمونه اي از
رنگ هاي درون تصوير را در خود ذخيره كرده است و ﺑه عنوان جعبه رنگ استفاده مي كند.
در صورتي كه از اين ماتريس استفاده نشود تصوير ﺑه صورت غير رنگي در خواهد آمد.
ماتريس Xهم در حقيقت عددي ١٦ﺑيتي كه نمايانگر يك عدد از ماتريس mapمي ﺑاشد.
مقدار عدد nتعيين كننده دقت و تعداد نمونه ﺑرداري از رنگ تصوير مي ﺑاشد و هر چه ﺑاﻻتر ﺑاشد
تا عدد ٦٥٥٣٦تصوير از كيفيت رنگ ﺑاﻻتري ﺑرخوردار است.
۶
الگوريتم برنامه
clc
clear
I = imread('RAWcomposite.tif');
J = demosaic(I,'bggr');
picture=im2double(J);
[m n]=size(J);
%redband
R=picture(:,:,1);
%greenband
G=picture(:,:,2);
%blueband
B=picture(:,:,3);
%interpolate
[rowspicture, columnpicture, numberOfColorChannelsX] = size(picture);
x = linspace(1, columnpicture, m);
y = linspace(1, rowspicture,n);
[Xq,Yq]= meshgrid(x, y);
redChannel1 = interp2(R,Xq,Yq,'linear');
greenchannel1= interp2(G,Xq,Yq,'linear');
bluechannel1= interp2(B,Xq,Yq,'linear');
redChannel2 = interp2(R,Xq,Yq,'cubic');
greenchannel2= interp2(G,Xq,Yq,'cubic');
bluechannel2= interp2(B,Xq,Yq,'cubic');
redChannel3 = interp2(R,Xq,Yq,'nearest');
greenchannel3= interp2(G,Xq,Yq,'nearest');
bluechannel3= interp2(B,Xq,Yq,'nearest');
%MERGE BANDS
MyRGB1=cat(3,redChannel1,greenchannel1,bluechannel1);
MyRGB2=cat(3,redChannel2,greenchannel2,bluechannel2);
MyRGB3=cat(3,redChannel3,greenchannel3,bluechannel3);
graymergebandsimage1=rgb2gray(MyRGB1);
graymergebandsimage2=rgb2gray(MyRGB2);
graymergebandsimage3=rgb2gray(MyRGB3);
graypicture=rgb2gray(picture);
imwrite(redChannel,'redChannel.tiff')
imwrite(greenchannel,'greenchannel.tiff')
imwrite(bluechannel,'bluechannel.tiff')
imwrite(picture,'picture.tiff')
imwrite(MyRGB1,'MyRGB1.tiff')
imwrite(MyRGB2,'MyRGB2.tiff')
imwrite(MyRGB3,'MyRGB3.tiff')
%indexcolor
[X, map] = rgb2ind(picture,100);
ORGINALPICTURE=rgb2gray(picture);
%histogram
subplot(2,1,1)
figure(1)
imhist(ORGINALPICTURE)
٧
subplot(2,1,2)
figure(2)
imhist(MyRGB1)
٨
خروجي هاي برنامه
٩
تصوير انترپوله شﺪه به روش cubic
١٠
تصوير انترپوله شﺪه به روش nearest
١١
نتيجه گيري
براي نتيجه گيري از مﻘايسه هيستوگرام هاي تصاوير اﺻلي و تصوير انترپوله شﺪه linear
استﻔاده ميكنيم :
١٢