خوب یادش بخیر این اولین تمرین درس پردازش تصویرمون بود، ما بایستی یک تصویر سینوسی تولید میکردیم سپس با عکس خودمون به شکلهای مختلف جمع میکردیم،گفتیم هیییییی شاید یکی هم باشه این تمرین رو بخواد:
*گفته باشم که کدها برای MATLAB نوشته شدن
1 ابتدا مسیر عکس خودتون رو به جای NIT.jpg وارد کنید.
2 برنامه رو اجرا کنید و نتایج جالبشو ببینید.
3 نمونه خروجی با استفاده از عکس خودم رو تو ضمیمه گذاشتم.
4 جلو کدها کامنت نویسی کردم تا راحتتر خونده بشن.
موفق باشید
aban_palan_dalan_delon@yahoo.com
کد:
close all
clear all
clc
pic=imread('C:\Users\sharjy\Desktop\NIT\DIP\final proj 1\NIT.jpg'); %read my photo
picgray1=(0.3*pic(:,:,1))+(0.59*pic(:,:,2))+(0.11*pic(:,:,3)); %make my photo gray
[I,J]=meshgrid(0:511,0:511); %generate a vector
picgray18=im2uint8(picgray1); %bring to uint8 class
%----------------------------------------------------------
picsin=(1+sin((1/(4*pi))*(I+J))); %make background with y=1+Asin(ax+by) with a=b=1/4pi
picsin2=im2uint8(picsin); %bring to uint8 class
picsin2(128:383,166:345)=picgray18(1:end,1:end); %copy my pic to background
picsin3=.1*(1+sin((1/(4*pi))*(I+J))); %A=.1 a=b=1/4pi ,you can see contrast change in background
picsin3=im2uint8(picsin3);
picsin3(128:383,166:345)=picgray18(1:end,1:end);
picsin4=(1+sin((1/(pi))*(I+J))); %A=1 a=b=1/pi ,change background line width
picsin4=im2uint8(picsin4);
picsin4(128:383,166:345)=picgray18(1:end,1:end);
picsin5=.1*(1+sin((1/(3*pi))*(I)+(1/(5*pi))*(J))); %A=.1 a=/=b ,a=1/3pi , b=1/5pi ,--->WOooOw <---, we can change line slope
picsin5=im2uint8(picsin5);
picsin5(128:383,166:345)=picgray18(1:end,1:end);
%-------------------------------------------------------------
%picbign=imresize(picgray18,[512 512],'nearest');
We did not get good results in using nearest Interpolation metod
%imshow(picbign);
%figure;
picbigb=imresize(picgray18,[512 512],'bicubic'); %bicubic interpolation
picsin=(1+sin(((1/(pi))*(I))+((1/(.8*pi))*(J)))); %y=1+Asin(ax+by)
picsinp=im2double(picsin); %change background class to double
picgray1d=im2double(picbigb); %change my picture class to double
picsinp(1:end,1:end)=(picgray1d(1:end,1:end))+(picsinp(1:end,1:end)); %sum my picture with background
%------------------------------------------------------------
% making a banner for result
subplot(3,3,1),subimage(pic),axis off,title('orginal pic');
subplot(3,3,2),subimage(picgray1),axis off,title('gray pic');
subplot(3,3,3),subimage(picsin),axis off,title('sin');
subplot(3,3,4),subimage(picsin2),axis off,title('pic in sin');
subplot(3,3,5),subimage(picsin3),axis off,title('change A in Asin(?X+?Y)');
subplot(3,3,6),subimage(picsin4),axis off,title('a=b=1/pi in Asin(?X+?Y)');
subplot(3,3,7),subimage(picsin5),axis off,title('a=1/3*pi , b=1/5*pi in Asin(?X+?Y)');
subplot(3,3,8),subimage(picbigb),axis off,title('fit gray pic to background');
subplot(3,3,9),subimage(picsinp),axis off,title('summation');
البته این هم ورژن کوتاه تر همین برنامه است:
کد:
pic=imread('C:\Users\sharjy\Desktop\NIT\DIP\final proj 1\NIT.jpg');
picgray1=(0.3*pic(:,:,1))+(0.59*pic(:,:,2))+(0.11*pic(:,:,3));
[I,J]=meshgrid(0:511,0:511);
picgray18=im2uint8(picgray1);
picsin=(1+sin(((1/(pi))*(I))+((1/(.8*pi))*(J))));
picsin=im2uint8(picsin);
picsin(128:383,166:345)=picgray18(1:end,1:end);
imshow(picsin);
figure
picsin=(1+sin(((1/(pi))*(I))+((1/(.8*pi))*(J))));
picsinp=im2double(picsin);
picbig=imresize(picgray18,[512 512],'bicubic');
picbigd=im2double(picbig);
picsinp(1:end,1:end)=(picbigd(1:end,1:end))+(picsinp(1:end,1:end));
imshow(picsinp);