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

和小夥伴去旅行拍了一張照片非常漂亮,可是為甚麼後面還有個頭呀!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
最後還是有黑邊,我沒有用濾波,因為不想影響照片質量。如果哪個大神有更好的方法,請聯絡我。

最後的結果如下所示喵



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章