|
clc; clear all;
Image0 = imread('Lena.BMP');
x=size(Image0,1);
y=size(Image0,2);
c=x*2;
d=y*2;
Image1=uint8(zeros(c,d));
a=1;
b=1;
for x=1:128
for y=1:128
Image1(a,b) = Image0(x,y);
b=b+2;
end;
b=1;
a=a+2;
end;
Image1=big(c,d,Image1); %...內插 (function1)
Image1=edge(c,d,Image1); %...邊界 (function2)
figure(1)
Image0 = uint8(Image0);
imshow(Image0);
figure(2)
Image1 = uint8(Image1);
imshow(Image1);
----------------------------------------------------------------------以上為主程式
function Image1=big(c,d,Image1)
%...內插法
% 對m內插...
for n=1:1:d-1 %一次跳一位 到255...
for m=1:2:c-2 %一次跳兩位 到254...
Image1(m+1,n) = 1/2*(double(Image1(m,n))) + 1/2*(double(Image1(m+2,n)));
end
end
% 對n內插...
for m=1:1:c-1 %一次跳一位 到255...
for n=1:2:d-2 %一次跳兩位 到254...
Image1(m,n+1) = 1/2*(double(Image1(m,n))) + 1/2*(double(Image1(m,n+2)));
end
end
----------------------------------------------------------------------以上為function1(另存一個.m檔但是要放在同一資料夾)
function Image1=edge(c,d,Image1)
%...求邊界值
%...n的邊界
for n=1:1:d-1 %一次跳一位 到255...
for m=c %=256
Image1(n,m) = 2*(double(Image1(n,m-1))) - double(Image1(n,m-2)); % 將uint8轉成double...使值可超出255
if Image1(n,m) > 255
Image1(n,m)=255;
end
if Image1(n,m) < 0
Image1(n,m)=0;
end
end
end
%...M的邊界
for m=1:1:c %一次跳一位 到256...
for n=d %=256
Image1(n,m) = 2*(double(Image1(n-1,m))) - double(Image1(n-2,m)); % 將uint8轉成double...使值可超出255
if Image1(n,m) > 255
Image1(n,m)=255;
end
if Image1(n,m) < 0
Image1(n,m)=0;
end
end
end
----------------------------------------------------------------------以上為function2(一樣另存一個.m檔但是要放在同一資料夾)
Image1=big(c,d,Image1)
p.s.Image1為要輸出的東西~~big是function名稱~~括弧裡面是主程式的變數而且這邊也用得到
若要輸出一個以上的變數時...則為[a b c]中間有空格 |
|