您的位置:首页 > 编程语言 > MATLAB

用MATLAB填補照片中空白的區域

2015-10-07 18:30 246 查看
和小伙伴去旅行拍了一張照片非常漂亮,可是為甚麼後面還有個頭呀!I AM ANGRY



首先用PS把頭P走



然後空白的地方用MATLAB編程填補一下

代碼如下

function I=ps()
I=imread('after2.jpg');
subplot(1,2,1),imshow(I);
[a,b,c]=size(I);
for j=730:b
for i=21:a
if (I(i,j,1)==255)&&(I(i,j,2)==255)&&(I(i,j,3)==255)
for k=0:10
I(i-k,j,1)=ans1;
I(i-k,j,2)=ans2;
I(i-k,j,3)=ans3;
end
for k=0:20
if (I(i,j,1)<200)&&(I(i,j,2)<200)&&(I(i,j,3)<200)
I(i+k,j,1)=ans1;
I(i+k,j,2)=ans2;
I(i+k,j,3)=ans3;
end
end
for k=0:20
if (I(i,j,1)>250)&&(I(i,j,2)>245)&&(I(i,j,3)>245)
I(i+k,j,1)=ans1;
I(i+k,j,2)=ans2;
I(i+k,j,3)=ans3;
end
end
else
ans1=I(i-20,j,1);
ans2=I(i-20,j,2);
ans3=I(i-20,j,3);
end
end
end

subplot(1,2,2),imshow(I);
figure(2),imshow(I);
%{
J=double(I);
H=double(imguidedfilter(I))-J+128;
G=imfilter(H,fspecial('gaussian',[3,3],100));
opacity=50;
Dest=(J*(100-opacity)+(J+2*G-256)*opacity)/100;
I=uint8(Dest);
subplot(1,2,2),imshow(I);
%}
end
最後還是有黑邊,我沒有用濾波,因為不想影響照片質量。如果哪個大神有更好的方法,請聯絡我。

最後的結果如下所示喵

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab PS