Matlab抠图代码Word格式.docx

上传人:b****1 文档编号:13161645 上传时间:2022-10-07 格式:DOCX 页数:5 大小:10.74KB
下载 相关 举报
Matlab抠图代码Word格式.docx_第1页
第1页 / 共5页
Matlab抠图代码Word格式.docx_第2页
第2页 / 共5页
Matlab抠图代码Word格式.docx_第3页
第3页 / 共5页
Matlab抠图代码Word格式.docx_第4页
第4页 / 共5页
Matlab抠图代码Word格式.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Matlab抠图代码Word格式.docx

《Matlab抠图代码Word格式.docx》由会员分享,可在线阅读,更多相关《Matlab抠图代码Word格式.docx(5页珍藏版)》请在冰豆网上搜索。

Matlab抠图代码Word格式.docx

255];

%choosebackgroundobject,andBresultsintotheForegroundObjectandthe

%BoundaryRegion

%choosetheouterlineoftheboundaryregion.Singleleftclickthemousetospecifyvertice.Doubleleftclickorsinglerightclicktofinish;

OuterBW=roipoly(A);

B(:

:

1)=immultiply(A(:

1),OuterBW);

2)=immultiply(A(:

2),OuterBW);

3)=immultiply(A(:

3),OuterBW);

Back(:

1),~OuterBW);

2),~OuterBW);

3),~OuterBW);

imshow(B);

%chooseforegroundobject,andCresultsintoaCircleofInterest

%choosetheinnerlineoftheboundaryregion.Singleleftclickthemousetospecifyvertice.Doubleleftclickorsinglerightclicktofinish;

InnerBW=roipoly(B);

C(:

1)=immultiply(B(:

1),~InnerBW);

2)=immultiply(B(:

2),~InnerBW);

3)=immultiply(B(:

3),~InnerBW);

Fore(:

1),InnerBW);

2),InnerBW);

3),InnerBW);

imshow(C);

holdoff;

RawAlpha=(double(OuterBW)+double(InnerBW))/2;

I=double(A);

%Methodof"

averaging"

togetrawforeandbackgroundcolors

fori=1:

size(RawAlpha,1)

forj=1:

size(RawAlpha,2)

RawFore(i,j,1)=0;

RawFore(i,j,2)=0;

RawFore(i,j,3)=0;

RawBack(i,j,1)=0;

RawBack(i,j,2)=0;

RawBack(i,j,3)=0;

ifRawAlpha(i,j)==1

RawFore(i,j,:

)=Fore(i,j,:

end;

ifRawAlpha(i,j)==0

RawBack(i,j,:

)=Back(i,j,:

ifRawAlpha(i,j)==0.5

r=1;

while1

TestFore=InnerBW(max(i-r,1):

min(i+r,size(A,1)),max(j-r,1):

min(j+r,size(A,2)));

ifsize(find(TestFore),1) 

[i1,j1]=find(TestFore);

i2=i1+max(i-r,1)-1;

j2=j1+max(j-r,1)-1;

Rs=double(Fore(i2,j2,:

));

Ds(:

1)=diag(Rs(:

1));

2)=diag(Rs(:

2));

3)=diag(Rs(:

3));

ifsize(Ds,1)==1

)=Ds;

else

)=sum(Ds)/size(Ds,1);

clearDs;

break;

r=r+1;

TestBack=~OuterBW(max(i-r,1):

ifsize(find(TestBack),1)

[i1,j1]=find(TestBack);

Rs=double(Back(i2,j2,:

end;

%此处没有用高斯滤波

Denorm=RawFore-RawBack;

%redchannel

I1=I(:

1);

Denorm1=Denorm(:

fori=1:

size(Denorm1,1)

forj=1:

size(Denorm1,2)

ifDenorm1(i,j)==0

Denorm1(i,j)=1;

OldAlpha=RawAlpha;

NewAlpha=RawAlpha;

h1=0;

while1

size(OldAlpha,1)

forj=1:

size(OldAlpha,2)

NewAlpha(i,j)=OldAlpha(i,j);

ifRawAlpha(i,j)==0.5

Roui=((I1(i+1,j)+I1(i-1,j)-2*I1(i,j))*Denorm1(i,j)-(I1(i+1,j)-I1(i,j))*(Denorm1(i+1,j)-Denorm1(i,j)))/(Denorm1(i,j)*Denorm1(i,j));

Rouj=((I1(i,j+1)+I1(i,j-1)-2*I1(i,j))*Denorm1(i,j)-(I1(i,j+1)-I1(i,j))*(Denorm1(i,j+1)-Denorm1(i,j)))/(Denorm1(i,j)*Denorm1(i,j));

Rou=Roui+Rouj;

NewAlpha(i,j)=(OldAlpha(i+1,j)+NewAlpha(i-1,j)+OldAlpha(i,j+1)+NewAlpha(i,j-1)-Rou)/4;

ifNewAlpha(i,j)<

NewAlpha(i,j)=0;

ifNewAlpha(i,j)>

1

NewAlpha(i,j)=1;

%imshow(uint8(NewAlpha*255));

DifferenceAlpha=abs(NewAlpha-OldAlpha);

OldAlpha=NewAlpha;

ifsum(sum(DifferenceAlpha

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1