📄 mydip.asv
字号:
tic;
f=handles.imdata;
[Ms,Ns]=size(f);
a=fix(log2(Ms));
b=fix(log2(Ns));
r=max(a,b);
W=2^r;
for m=1:W
for n=1:W
if m<Ms&n<Ns
f1(m,n)=double(f(m,n));
else
f1(m,n)=255;
end
end
end
j=1:W;
for i=r:-1:1;
y(:,i)=rem(j,2);
j=fix(j/2);
end
v=y';
g1=y*v;
g=(-1).^(rem(g1,2));
F=g*f1*g/(W*W);
Time=toc;
set(handles.edit1,'string',Time);
extendx=double(zeros(256));
if (W<=256)
Wh=256;
else
Wh=W;
end
for m=1:Wh
for n=1:Wh
if (m<=W)&(n<=W)
extendx(m,n)=F(m,n);
else
extendx(m,n)=realmax;
end
end
end
axes(handles.axes2),imshow(extendx);
handles.dhtdata=F;handles.gh=g;
handles.imdata=F;
guidata(hObject, handles);
% --------------------------------------------------------------------
function IDHT_Callback(hObject, eventdata, handles)
% hObject handle to IDHT (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
tic;
f=handles.dhtdata;
[M,N]=size(f);
f1=double(f);
g=handles.gh;
F=g*f1*g;
Time=toc;
extendx=double(zeros(256));
if (M<=256)
Wh=256;
else
Wh=M;
end
for m=1:Wh
for n=1:Wh
if (m<=M)&(n<=N)
extendx(m,n)=F(m,n);
else
extendx(m,n)=realmax;
end
end
end
axes(handles.axes2),imshow(extendx,[min(min(F)),max(max(F))]);
set(handles.edit1,'string',Time);
handles.imdata=F;
guidata(hObject, handles);
% ---------------------------------------------------------------
function DWashT_Callback(hObject, eventdata, handles)
% hObject handle to DWashT (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
f=handles.imdata;
tic;
[Ms,Ns]=size(f);
a=fix(log2(Ms));
b=fix(log2(Ns));
r=max(a,b);
W=2^r;
for m=1:W
for n=1:W
if m<Ms&n<Ns
f1(m,n)=double(f(m,n));
else
f1(m,n)=255;
end
end
end
j=1:W;
for i=a:-1:1;
y(:,i)=rem(j,2);
j=fix(j/2);
end
v=(fliplr(y))';
g1=y*v;
g=(-1).^(rem(g1,2));
F=g*f1*g/(W*W);
Time=toc;
set(handles.edit1,'string',Time);
extendx=double(zeros(256));
if (W<=256)
Wh=256;
else
Wh=W;
end
for m=1:Wh
for n=1:Wh
if (m<=W)&(n<=W)
extendx(m,n)=F(m,n);
else
extendx(m,n)=realmax;
end
end
end
axes(handles.axes2),imshow(extendx);
handles.dwtdata=F;handles.gw=g;
handles.imdata=F;
guidata(hObject, handles);
% --------------------------------------------------------------------
function IDWashT_Callback(hObject, eventdata, handles)
% hObject handle to IDWashT (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
f=handles.dwtdata;
tic;
[M,N]=size(f);
f1=double(f);
g=handles.gw;
F=g*f1*g;
Time=toc;
set(handles.edit1,'string',Time);
extendx=double(zeros(256));
if (M<=256)
Wh=256;
else
Wh=M;
end
for m=1:Wh
for n=1:Wh
if (m<=M)&(n<=N)
extendx(m,n)=F(m,n);
else
extendx(m,n)=realmax;
end
end
end
axes(handles.axes2),imshow(extendx,[min(min(F)),max(max(F))]);
handles.imdata=F;
guidata(hObject, handles);
% --------------------------------------------------------------------
function DCT_Callback(hObject, eventdata, handles)
% hObject handle to DCT (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
tic;
f=handles.imdata;
f1=double(f);
[M,N]=size(f);
v=[1:N];
for y=[1:N]
g1(y,v)=cos((2*y-1)*(v-1)*pi/(2*N));
end
v=[1:M];
for y=[1:M]
g2(y,v)=cos((2*y-1)*(v-1)*pi/(2*M));
end
F1=sqrt(2/N)*f1*g1;
F2=sqrt(2/M)*g2*F1;
F3=F2;
F3(1,:)=sqrt(1/N)*F2(1,:)/(sqrt(2/N));
F=F3;
F(:,1)=sqrt(1/M)*F3(:,1)/(sqrt(2/M));
Time=toc;
set(handles.edit1,'string',Time);
extendx=double(zeros(256));
if (M<=256)&(N<=256)
W=256;
else
W=max(M,N);
end
for m=1:W
for n=1:W
if (m<=M)&(n<=N)
extendx(m,n)=log(abs(F(m,n)));
else
extendx(m,n)=realmax;
end
end
end
axes(handles.axes2),imshow(extendx,[3,6]);
handles.dctdata=F;
handles.imdata=log(abs(F));
guidata(hObject, handles);
% --------------------------------------------------------------------
function IDCT_Callback(hObject, eventdata, handles)
% hObject handle to IDCT (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
f=handles.dctdata;
tic;
f1=double(f);
[M,N]=size(f);
y=[1:N];
for v=[1:N]
g1(v,y)=cos((2*y-1)*(v-1)*pi/(2*N));
end
y=[1:M];
for v=[1:M]
g2(v,y)=cos((2*y-1)*(v-1)*pi/(2*M));
end
F1=sqrt(2/N)*f1*g1;
F2=sqrt(2/M)*g2*F1;
F3=F2;
F3(1,:)=sqrt(1/N)*F2(1,:)/(sqrt(2/N));
F=F3;
F(:,1)=sqrt(1/M)*F3(:,1)/(sqrt(2/M));
Time=toc;
set(handles.edit1,'string',Time);
F=uint8(F);
extendx=double(zeros(256));
if (M<=256)&(N<=256)
W=256;
else
W=max(M,N);
end
for m=1:W
for n=1:W
if (m<=M)&(n<=N)
extendx(m,n)=F(m,n);
else
extendx(m,n)=realmax;
end
end
end
axes(handles.axes2),imshow(extendx,[min(min(F)),max(max(F))]);
handles.imdata=F;
guidata(hObject, handles);
% --------------------------------------------------------------------
function AddNoise_Callback(hObject, eventdata, handles)
% hObject handle to AddNoise (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
f=handles.imdata;
[M,N]=size(f);
f1=imnoise(f,'salt & pepper',0.04);
extendx=double(zeros(256));
if (M<=256)&(N<=256)
W=256;
else
W=max(M,N);
end
for m=1:W
for n=1:W
if (m<=M)&(n<=N)
extendx(m,n)=f1(m,n);
else
extendx(m,n)=realmax;
end
end
end
axes(handles.axes2),imshow(extendx,[min(min(f1)),max(max(f1))]);
handles.imdata=f1;
guidata(hObject, handles);
% --------------------------------------------------------------------
function GuassianNoise_Callback(hObject, eventdata, handles)
% hObject handle to GuassianNoise (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
f=handles.imdata;
[M,N]=size(f);
f1=imnoise(f,'gaussian',0.04);
extendx=double(zeros(256));
if (M<=256)&(N<=256)
W=256;
else
W=max(M,N);
end
for m=1:W
for n=1:W
if (m<=M)&(n<=N)
extendx(m,n)=f1(m,n);
else
extendx(m,n)=realmax;
end
end
end
axes(handles.axes2),imshow(extendx,[min(min(f1)),max(max(f1))]);
handles.imdata=f1;
guidata(hObject, handles);
% --------------------------------------------------------------------
function Averaging_Callback(hObject, eventdata, handles)
% hObject handle to Averaging (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
tic;
f=handles.imdata;
f2=double(f);
[M,N]=size(f);
f3=zeros([M,N]);
for x=2:(M-1);
for y=2:(N-1);
f3(x,y)=(f2(x-1,y-1)+f2(x,y-1)+f2(x+1,y-1)+f2(x-1,y)+f2(x,y)+f2(x+1,y)+f2(x-1,y+1)+f2(x,y+1)+f2(x+1,y+1))/9;
end
end
Time=toc;
set(handles.edit1,'string',Time);
extendx=double(zeros(256));
if (M<=256)&(N<=256)
W=256;
else
W=max(M,N);
end
for m=1:W
for n=1:W
if (m<=M)&(n<=N)
extendx(m,n)=f3(m,n);
else
extendx(m,n)=realmax;
end
end
end
axes(handles.axes2),imshow(extendx,[min(min(f3)),max(max(f3))]);
handles.imdata=f3;
guidata(hObject, handles);
% --------------------------------------------------------------------
function NeibAveraging_Callback(hObject, eventdata, handles)
% hObject handle to NeibAveraging (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
tic;
f=handles.imdata;
f2=double(f);
[row,col]=size(f);
f3=zeros([row,col]);
for x=2:(row-1);
for y=2:(col-1);
f3(x,y)=(f2(x-1,y-1)+f2(x,y-1)+f2(x+1,y-1)+f2(x-1,y)+f2(x+1,y)+f2(x-1,y+1)+f2(x,y+1)+f2(x+1,y+1))/8;
end
end
Time=toc;
set(handles.edit1,'string',Time);
extendx=double(zeros(256));
if (row<=256)&(row<=256)
W=256;
else
W=max(row,col);
end
for m=1:W
for n=1:W
if (m<=row)&(n<=col)
extendx(m,n)=f3(m,n);
else
extendx(m,n)=realmax;
end
end
end
axes(handles.axes2),imshow(extendx,[min(min(f3)),max(max(f3))]);
handles.imdata=f3;
guidata(hObject, handles);
% --------------------------------------------------------------------
function MedianFilter_Callback(hObject, eventdata, handles)
% hObject handle to MedianFilter (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
tic;
f=handles.imdata;
f2=double(f);
[row,col]=size(f);
f3=zeros([row,col]);
for x=2:(row-1);
for y=2:(col-1);
f3(x,y)=median([f2(x-1,y-1),f2(x,y-1),f2(x+1,y-1),f2(x-1,y),f2(x,y),f2(x+1,y),f2(x-1,y+1),f2(x,y+1),f2(x+1,y+1)]);
end
end
Time=toc;
set(handles.edit1,'string',Time);
extendx=double(zeros(256));
if (row<=256)&(row<=256)
W=256;
else
W=max(row,col);
end
for m=1:W
for n=1:W
if (m<=row)&(n<=col)
extendx(m,n)=f3(m,n);
else
extendx(m,n)=realmax;
end
end
end
axes(handles.axes2),imshow(extendx,[min(min(f3)),max(max(f3))]);
handles.imdata=f3;
guidata(hObject, handles);
% --------------------------------------------------------------------
function LowBWS_Callback(hObject, eventdata, handles)
% hObject handle to LowBWS (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
tic;
f=handles.imdata;
f2=double(f);
[row,col]=size(f);
g=fft2(f2);
g=fftshift(g);
nn=256;
d0=40;
nx=fix(row/2);
ny=fix(col/2);
for i=1:row
for j=1:col
d=sqrt((i-nx)^2+(j-ny)^2);
h=1/(1+0.414*(d/d0)^(2*nn));
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
f3=ifft2(result);
f4=abs(f3);
Time=toc;
set(handles.edit1,'string',Time);
extendx=double(zeros(256));
if (row<=256)&(row<=256)
W=256;
else
W=max(row,col);
end
for m=1:W
for n=1:W
if (m<=row)&(n<=col)
extendx(m,n)=f4(m,n);
else
extendx(m,n)=realmax;
end
end
end
axes(handles.axes2),imshow(extendx,[min(min(f4)),max(max(f4))]);
handles.imdata=f4;
guidata(hObject, handles);
% --------------------------------------------------------------------
function Robert_Callback(hObject, eventdata, handles)
% hObject handle to Robert (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -