⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mydip.asv

📁 《数字图像处理与分析》光盘使用说明 本光盘主要包括两部分内容: 1、 作者编制的基于MATLAB和基于VC++实现的数字图像处理软件
💻 ASV
📖 第 1 页 / 共 5 页
字号:
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 + -