主题:图像象素循环
各位亲爱的高手,以下是我写的一个和曲率差不多的公式循环
我想请问以下,这个程序是不是根本不用循环?
是不是直接用象素赋值就可呢?
以下两个函数功能是不是一样?
function A = div(u,h,lambda);
[m,n]=size(u);
for i=2:m-1
for j=2:n-1
c11(i,j)=[u(i+1,j)-u(i,j)]/h;
c12(i,j)=[u(i,j+1)-u(i,j-1)]/(2*h);
c1(i,j)=1/sqrt(c11(i,j)^2+c12(i,j)^2+1e-6);
c21(i,j)=[u(i,j)-u(i-1,j)]/h;
c22(i,j)=[u(i-1,j+1)-u(i-1,j-1)]/(2*h);
c2(i,j) =1/sqrt(c21(i,j)^2+c22(i,j)^2+1e-6);
c31(i,j)=[u(i+1,j)-u(i-1,j)]/(2*h);
c32(i,j)=[u(i,j+1)-u(i,j)]/h;
c3(i,j) =1/sqrt(c31(i,j)^2+c32(i,j)^2+1e-6);
c41(i,j)=[u(i+1,j-1)-u(i-1,j-1)]/(2*h);
c42(i,j)=[u(i,j)-u(i,j-1)]/h;
c4(i,j) =1/sqrt(c31(i,j)^2+c42(i,j)^2+1e-6);
B(i,j)=[c1(i,j)*c11(i,j)-c2(i,j)*c21(i,j)+c3(i,j)*c32(i,j)-c4(i,j)*c42(i,j)]/(2*lambda*h);
end
end
A = BoundMirrorExpand(B);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
function A=div(u);
[m,n]=size(u);
h=3;
c11=zeros(m,n);
c12=zeros(m,n);
c11(1:m-1,:)=[u(2:m,:)-u(1:m-1,:)]/h;
c11(m,:)=u(m,:);
c12(:,2:n-1)=[u(:,3:n)-u(:,1:n-2)]/2*h;
c12(:,[1 n])=u(:,[1 n]);
c1=1./sqrt(c11.^2+c12.^2+1e-10);
%figure,imshow(c1,[])
c21=zeros(m,n);
c22=zeros(m,n);
c21(2:m,:)=[u(2:m,:)-u(1:m-1,:)]/h;
c21(1,:)=u(1,:);
c22(:,2:n-1)=[u(:,3:n)-u(:,1:n-2)]/2*h;
c22(:,[1 n])=u(:,[1 n]);
c22(1:m-1,:)=c22(2:m,:);
c22(m,:)=c22(m,:);
c2=1./sqrt(c21.^2+c22.^2+1e-10);
%figure,imshow(c2,[])
c31=zeros(m,n);
c32=zeros(m,n);
c31(2:m-1,:)=[u(3:m,:)-u(1:m-2,:)]/2*h;
c31([1,m],:)=u([1,m],:);
c32(:,1:n-1)=[u(:,2:n)-u(:,1:n-1)]/h;
c32(:,n)=u(:,n);
c3=1./sqrt(c31.^2+c32.^2+1e-10);
%figure,imshow(c3,[])
c41=zeros(m,n);
c42=zeros(m,n);
c41(2:m-1,:)=[u(3:m,:)-u(1:m-2,:)]/2*h;
c41([1 m],:)=u([1 m],:);
c41(:,1:n-1)=c41(:,2:n);
c41(:,n)=c41(:,n);
c42(:,2:n)=[u(:,2:n)-u(:,1:n-1)]/h;
c42(:,1)=u(:,1);
c4=1./sqrt(c41.^2+c42.^2+1e-10);
%figure,imshow(c4,[])
a1=c11.*c1;
a2=c21.*c2;
a3=c32.*c3;
a4=c42.*c4;
A=(a1-a2+a3-a4)/h;
%figure,imshow(A)
我想请问以下,这个程序是不是根本不用循环?
是不是直接用象素赋值就可呢?
以下两个函数功能是不是一样?
function A = div(u,h,lambda);
[m,n]=size(u);
for i=2:m-1
for j=2:n-1
c11(i,j)=[u(i+1,j)-u(i,j)]/h;
c12(i,j)=[u(i,j+1)-u(i,j-1)]/(2*h);
c1(i,j)=1/sqrt(c11(i,j)^2+c12(i,j)^2+1e-6);
c21(i,j)=[u(i,j)-u(i-1,j)]/h;
c22(i,j)=[u(i-1,j+1)-u(i-1,j-1)]/(2*h);
c2(i,j) =1/sqrt(c21(i,j)^2+c22(i,j)^2+1e-6);
c31(i,j)=[u(i+1,j)-u(i-1,j)]/(2*h);
c32(i,j)=[u(i,j+1)-u(i,j)]/h;
c3(i,j) =1/sqrt(c31(i,j)^2+c32(i,j)^2+1e-6);
c41(i,j)=[u(i+1,j-1)-u(i-1,j-1)]/(2*h);
c42(i,j)=[u(i,j)-u(i,j-1)]/h;
c4(i,j) =1/sqrt(c31(i,j)^2+c42(i,j)^2+1e-6);
B(i,j)=[c1(i,j)*c11(i,j)-c2(i,j)*c21(i,j)+c3(i,j)*c32(i,j)-c4(i,j)*c42(i,j)]/(2*lambda*h);
end
end
A = BoundMirrorExpand(B);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
function A=div(u);
[m,n]=size(u);
h=3;
c11=zeros(m,n);
c12=zeros(m,n);
c11(1:m-1,:)=[u(2:m,:)-u(1:m-1,:)]/h;
c11(m,:)=u(m,:);
c12(:,2:n-1)=[u(:,3:n)-u(:,1:n-2)]/2*h;
c12(:,[1 n])=u(:,[1 n]);
c1=1./sqrt(c11.^2+c12.^2+1e-10);
%figure,imshow(c1,[])
c21=zeros(m,n);
c22=zeros(m,n);
c21(2:m,:)=[u(2:m,:)-u(1:m-1,:)]/h;
c21(1,:)=u(1,:);
c22(:,2:n-1)=[u(:,3:n)-u(:,1:n-2)]/2*h;
c22(:,[1 n])=u(:,[1 n]);
c22(1:m-1,:)=c22(2:m,:);
c22(m,:)=c22(m,:);
c2=1./sqrt(c21.^2+c22.^2+1e-10);
%figure,imshow(c2,[])
c31=zeros(m,n);
c32=zeros(m,n);
c31(2:m-1,:)=[u(3:m,:)-u(1:m-2,:)]/2*h;
c31([1,m],:)=u([1,m],:);
c32(:,1:n-1)=[u(:,2:n)-u(:,1:n-1)]/h;
c32(:,n)=u(:,n);
c3=1./sqrt(c31.^2+c32.^2+1e-10);
%figure,imshow(c3,[])
c41=zeros(m,n);
c42=zeros(m,n);
c41(2:m-1,:)=[u(3:m,:)-u(1:m-2,:)]/2*h;
c41([1 m],:)=u([1 m],:);
c41(:,1:n-1)=c41(:,2:n);
c41(:,n)=c41(:,n);
c42(:,2:n)=[u(:,2:n)-u(:,1:n-1)]/h;
c42(:,1)=u(:,1);
c4=1./sqrt(c41.^2+c42.^2+1e-10);
%figure,imshow(c4,[])
a1=c11.*c1;
a2=c21.*c2;
a3=c32.*c3;
a4=c42.*c4;
A=(a1-a2+a3-a4)/h;
%figure,imshow(A)