gusucode.com > matlab为平台的一个GUI界面的图像处理程序 > DIP.m

    function varargout = DIP(varargin)

gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @DIP_OpeningFcn, ...
                   'gui_OutputFcn',  @DIP_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before DIP is made visible.
function DIP_OpeningFcn(hObject, eventdata, handles, varargin)
% Choose default command line output for DIP
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);

% --- Outputs from this function are returned to the command line.
function varargout = DIP_OutputFcn(hObject, eventdata, handles) 
varargout{1} = handles.output;



%==========================================================================
%                      CODE     START     HERE
%==========================================================================


%==========Define a useful function which is used to creat matrix===========
function  out=matrix(img,dim,power)
imsize=size(img);
rows=imsize(1);
cols=imsize(2);
if dim==2;
    unit=ones(rows,cols);
end;
if dim==3;
    unit=ones(rows,cols,3);
end;
out=power*unit;


% --- Executes on button press in open_file.
function open_file_Callback(hObject, eventdata, handles)

global actual;
global last;
global orignal;
global map;

[filename,pathname]= uigetfile( ...
{'*.bmp;*.jpg;*.gif;*.tif','Image Files (*.bmp,*.jpg,*.gif,*.tif)';
   '*.bmp',  'BMP-files (*.bmp)'; ...
   '*.jpg','JPG-files (*.jpg)'; ...
   '*.gif','GIF-files (*.gif)'; ...
   '*.tif','TIF-files (*.tif)'; ...
   '*.*',  'All Files (*.*)'}, ...
   '请选择图像文件');
file=[pathname filename];
[orignal,ap]=imread(file);
actual=double(orignal);
imshow(uint8(actual));


% --- Executes on button press in ShowOrign.
function ShowOrign_Callback(hObject, eventdata, handles)

global orignal;
global actual;
global last;
last=actual;
actual=double(orignal);
imshow(uint8(actual));


% --- Executes on button press in SaveImage.
function SaveImage_Callback(hObject, eventdata, handles)

global actual;
[filename,pathname]=...
    uiputfile({'*.jpg';'*.bmp';'*.gif';'*.tif'},'请选择路径');
path=[pathname filename];
imwrite(uint8(actual),path);


% --- Executes on button press in ExitDIP.
function ExitDIP_Callback(hObject, eventdata, handles)
button = questdlg('您确定要退出本程序吗?','确定操作');
switch button 
    case 'Yes'   
        close(gcf);
    case 'No'
        helpdlg('欢迎您继续使用本程序!','欢迎');
end;


% --- Executes on button press in ToGray.
function ToGray_Callback(hObject, eventdata, handles)
global actual;
global last;
last=actual;

type=ndims(actual);
if type==3
   actual(:,:,1)=actual(:,:,1).*actual(:,:,1);
   actual(:,:,2)=actual(:,:,2).*actual(:,:,2);
   actual(:,:,3)=actual(:,:,3).*actual(:,:,3);
   temp=actual(:,:,1)+actual(:,:,2)+actual(:,:,3);
   actual=sqrt(temp/3);
   imshow(uint8(actual));
else
    warndlg('请注意!当前已经是灰度图!','张志强的友情提示')
end;



% --- Executes on button press in Brighten.
function Brighten_Callback(hObject, eventdata, handles)
global actual;
global last;
last=actual;

imsize=size(actual);
type=length(imsize);
madd=matrix(actual,type,10);
actual=actual+madd;
imshow(uint8(actual));

% --- Executes on button press in dark.
function dark_Callback(hObject, eventdata, handles)
global actual;
global last;
last=actual;

type=ndims(actual);
madd=matrix(actual,type,10);
actual=actual-madd;
imshow(uint8(actual));


% --- Executes on button press in duibiup.
function duibiup_Callback(hObject, eventdata, handles)
global actual;
global last;
last=actual;
actual=0.5*actual.^1.13;
imshow(uint8(actual));


% --- Executes on button press in duibiDown.
function duibiDown_Callback(hObject, eventdata, handles)
global actual;
global last;
last=actual;
actual=1.8467*actual.^0.885;
imshow(uint8(actual));

% --- Executes on button press in Redup.
function Redup_Callback(hObject, eventdata, handles)
global actual;
global last;
last=actual;

type=ndims(actual); 
if type==3
    madd=matrix(actual,2,10);
    actual(:,:,1)=actual(:,:,1)+madd; 
else
    warndlg('操作有误!当前图像不是RGB图,无法处理!','张志强的友情提示')
end
imshow(uint8(actual));

% --- Executes on button press in RedDown.
function RedDown_Callback(hObject, eventdata, handles)
global actual;
global last;
last=actual;

type=ndims(actual); 
if type==3
    madd=matrix(actual,2,10);
    actual(:,:,1)=actual(:,:,1)-madd; 
else
    warndlg('操作有误!当前图像不是RGB图,无法处理!','张志强的友情提示')
end
imshow(uint8(actual));

% --- Executes on button press in GreenUp.
function GreenUp_Callback(hObject, eventdata, handles)
global actual;
global last;
last=actual;

type=ndims(actual); 
if type==3
    madd=matrix(actual,2,10);
    actual(:,:,2)=actual(:,:,2)+madd; 
else
    warndlg('操作有误!当前图像不是RGB图,无法处理!','张志强的友情提示')
end
imshow(uint8(actual));

% --- Executes on button press in GreenDown.
function GreenDown_Callback(hObject, eventdata, handles)
global actual;
global last;
last=actual;

type=ndims(actual); 
if type==3
    madd=matrix(actual,2,10);
    actual(:,:,2)=actual(:,:,2)-madd; 
else
    warndlg('操作有误!当前图像不是RGB图,无法处理!','张志强的友情提示')
end
imshow(uint8(actual));

% --- Executes on button press in BlueUp.
function BlueUp_Callback(hObject, eventdata, handles)
global actual;
global last;
last=actual;

type=ndims(actual); 
if type==3
    madd=matrix(actual,2,10);
    actual(:,:,3)=actual(:,:,3)+madd; 
else
    warndlg('操作有误!当前图像不是RGB图,无法处理!','张志强的友情提示')
end
imshow(uint8(actual));

% --- Executes on button press in BlueDown.
function BlueDown_Callback(hObject, eventdata, handles)
global actual;
global last;
last=actual;

type=ndims(actual); 
if type==3
    madd=matrix(actual,2,10);
    actual(:,:,3)=actual(:,:,3)-madd; 
else
    warndlg('操作有误!当前图像不是RGB图,无法处理!','张志强的友情提示')
end
imshow(uint8(actual));


% --------------------------------------------------------------------
function Undo_Callback(hObject, eventdata, handles)
global actual;
global last;
global last2;
last2=actual;
actual=last;
imshow(uint8(actual));




% --------------------------------------------------------------------
function Redo_Callback(hObject, eventdata, handles)
global actual;
global last2;
actual=last2;
imshow(uint8(actual));


% --- Executes on button press in RChannle.
function RChannle_Callback(hObject, eventdata, handles)
global actual;

type=ndims(actual); 
if type==3
    channle=uint8(actual);
    channle(:,:,2)=0;
    channle(:,:,3)=0;
    imshow(channle)
else
    warndlg('操作有误!当前图像不是RGB图!','张志强的友情提示')
end;



% --- Executes on button press in GChannle.
function GChannle_Callback(hObject, eventdata, handles)
global actual;

type=ndims(actual); 
if type==3
    channle=uint8(actual);
    channle(:,:,1)=0;
    channle(:,:,3)=0;
    imshow(channle)
else
    warndlg('操作有误!当前图像不是RGB图!','张志强的友情提示')
end;


% --- Executes on button press in BChannle.
function BChannle_Callback(hObject, eventdata, handles)
global actual;

type=ndims(actual); 
if type==3
    channle=uint8(actual);
    channle(:,:,1)=0;
    channle(:,:,2)=0;
    imshow(channle)
else
    warndlg('操作有误!当前图像不是RGB图!','张志强的友情提示')
end;

% --- Executes on button press in Rotate.
function Rotate_Callback(hObject, eventdata, handles)
global actual;
global angle;
actual=imrotate(uint8(actual),angle);
imshow(actual);
actual=double(actual);


function angle_Callback(hObject, eventdata, handles)
global angle;
angle=str2double(get(hObject,'String'));


% --- Executes during object creation, after setting all properties.
function angle_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end


% --- Executes on button press in MedianFilter.
function imhist_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)
global actual;
global last;

type=ndims(actual);
if type==3
    g(:,:,1)=actual(:,:,1).*actual(:,:,1);
    g(:,:,2)=actual(:,:,2).*actual(:,:,2);
    g(:,:,3)=actual(:,:,3).*actual(:,:,3);
    g=g(:,:,1)+g(:,:,2)+g(:,:,3);
    g=sqrt(g/3);
    figure,imhist(uint8(g));           
else
    figure,imhist(uint8(actual));
end;

% --- Executes on button press in JT.
function JT_Callback(hObject, eventdata, handles)
% hObject    handle to JT (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global actual;
global last;
last=actual;
actual=imcrop(actual,[200 145 200 200]);
imshow(uint8(actual));
% --- Executes on button press in Modify.
function Modify_Callback(hObject, eventdata, handles)
global actual;
global last;
global width;
global high;
last=actual;
actual=imresize(actual,[high,width]);
imshow(uint8(actual));



function width_Callback(hObject, eventdata, handles)
global width;
width=str2double(get(hObject,'String'));



% --- Executes during object creation, after setting all properties.
function width_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function high_Callback(hObject, eventdata, handles)
global high;
high=str2double(get(hObject,'String'));


% --- Executes during object creation, after setting all properties.
function high_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end




% --- Executes on button press in Readme.
function Readme_Callback(hObject, eventdata, handles)
% hObject    handle to Readme (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
helpdlg('作者:张志强    指导老师:廖红华  [2008-5-30]','相关说明')



% --- Executes on selection change in AddNoise.
function AddNoise_Callback(hObject, eventdata, handles)
global actual;
global last;
last=actual;
actual=uint8(actual);
switch get(hObject,'Value');
    case 1 
        actual=imnoise(actual,'salt & pepper');
    case 2
        actual=imnoise(actual,'gaussian');
    case 3
        actual=imnoise(actual,'speckle');
end;
imshow(actual);
actual=double(actual);

% --- Executes during object creation, after setting all properties.
function AddNoise_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



% --- Executes on button press in MedianFilter.
function MedianFilter_Callback(hObject, eventdata, handles)

global actual;
global last;
last=actual;
actual=uint8(actual);
if ndims(actual)==3
    actual(:,:,1)=medfilt2(actual(:,:,1),[3 3]);
    actual(:,:,2)=medfilt2(actual(:,:,2),[3 3]);
    actual(:,:,3)=medfilt2(actual(:,:,3),[3 3]);
else
    actual=medfilt2(actual,[3 3]);
end;
imshow(actual);
actual=double(actual);



% --- Executes on button press in Edgen.
function Edgen_Callback(hObject, eventdata, handles)
global actual;
temp=uint8(actual);
if ndims(actual)==3
    temp=rgb2gray(temp);
end;
if ndims(temp)==2
    switch get(hObject,'Value');
        case 1 
            temp=edge(temp,'sobel');
        case 2
            temp=edge(temp,'roberts');
        case 3
            temp=edge(temp,'log');
        case 4
            temp=edge(temp,'zerocross');
        case 5
            temp=edge(temp,'canny');
    end;
end;
imshow(temp);



% --- Executes on button press in FFT.
function FFT_Callback(hObject, eventdata, handles)
% hObject    handle to FFT (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global actual;
imfft=fftn(actual);
imshow(uint8(real(imfft)));



% --- Executes on button press in Inverse.
function Inverse_Callback(hObject, eventdata, handles)
% hObject    handle to Inverse (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global actual;
global last;
last=actual;

type=ndims(actual); 
max=matrix(actual,type,255);
actual=max-actual;
imshow(uint8(actual));



% --- Executes on button press in DCX.
function DCX_Callback(hObject, eventdata, handles)
% hObject    handle to DCX (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

global actual;
last=actual;
imsize=size(actual);
if ndims(actual)==2
    for i=1:imsize(1)
        temp(i,:)=actual(imsize(1)+1-i,:);
    end;
else
    for i=1:imsize(1)
        temp(i,:,:)=actual(imsize(1)+1-i,:,:);
    end;
end;
actual=temp;
imshow(uint8(actual));
% --- Executes on button press in DCY.
function DCY_Callback(hObject, eventdata, handles)
% hObject    handle to DCY (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global actual;
last=actual;
imsize=size(actual);
if ndims(actual)==2
    for j=1:imsize(2)
        temp(:,j)=actual(:,imsize(2)+1-j);
    end;
else
    for j=1:imsize(2)
        temp(:,j,:)=actual(:,imsize(2)+1-j,:);
    end;
end;
actual=temp;
imshow(uint8(actual));



% --- Executes on button press in BlackWhite.
function BlackWhite_Callback(hObject, eventdata, handles)
% hObject    handle to BlackWhite (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

global actual;
imgsize=size(actual);
if ndims(actual)==3
    warndlg('请先转换为灰度图!','警告');
else
    for i=1:imgsize(1)
        for j=1:imgsize(2)
            if actual(i,j)>128
                actual(i,j)=255;
            else
                actual(i,j)=0;
            end;
        end;
    end;
end;
imshow(uint8(actual));


% --- Executes on button press in IFFTN.
function IFFTN_Callback(hObject, eventdata, handles)
% hObject    handle to IFFTN (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global actual;
global last;
last=actual;

imfft=fftn(actual);
res=real(ifftn(imfft));
imshow(uint8(res));




% --- Executes on button press in DJFiles.
function DJFiles_Callback(hObject, eventdata, handles)
global actual;
global img2;
global sign_dj;
sign_dj=1;
[filename,pathname]= uigetfile( ...
{'*.bmp;*.jpg;*.gif;*.tif','Image Files (*.bmp,*.jpg,*.gif,*.tif)';
   '*.bmp',  'BMP-files (*.bmp)'; ...
   '*.jpg','JPG-files (*.jpg)'; ...
   '*.gif','GIF-files (*.gif)'; ...
   '*.tif','TIF-files (*.tif)'; ...
   '*.*',  'All Files (*.*)'}, ...
   '请选择将要叠加的另一个图像文件');
file=[pathname filename];
img2=double(imread(file));

imsize2=size(img2);
imsize1=size(actual);

switch ndims(actual)
    case 2
        if ndims(img2)==3
            button=questdlg('注意,待叠加的图像是RGB图,转换为灰度图像?','确定操作');
            if button=='Yes'
                img2=double(rgb2gray(uint8(img2)));
            else
                warndlg('无法继续叠加!','警告');
                sign_dj=0;
            end;
        end;
        if ndims(img2)==ndims(actual)
            if isequal(imsize1,imsize2)==0;
                button = questdlg('注意,待叠加的图像尺寸与原图像不符,自动调节此图像?','确定操作');
                if button == 'Yes'
                img2=imresize(img2,[imsize1(1),imsize1(2)]);
                end;
            else
                warndlg('无法继续叠加!','警告');
                sign_dj=0;
            end;
        end;
    case 3
        if ndims(img2)==2
            button=questdlg('注意,待叠加的图像是灰度图,将原图像转换为灰度图像?','确定操作');
            if button=='Yes'
                actual=double(rgb2gray(uint8(img2)));
            else
                warndlg('无法继续叠加!','警告');
                sign_dj=0;
            end;
        end;
        if ndims(actual)==ndims(img2)
             if isequal(imsize1,imsize2)==0;
                button = questdlg('注意,待叠加的图像尺寸与原图像不符,自动调节此图像?','确定操作');
                if button == 'Yes'
                img2=imresize(img2,[imsize1(1),imsize1(2)]);
                else
                    warndlg('无法继续叠加!','警告');
                    sign_dj=0;
                end;
            end;
        end;
end;
                

% --- Executes on slider movement.
function DJBL_Slider_Callback(hObject, eventdata, handles)
global sign_dj;
global actual;
global img2;
if sign_dj==1
djbl=get(hObject,'Value');
img=djbl*img2+(1-djbl)*actual;
imshow(uint8(img));
else
    warndlg('请先点图像叠加按钮,选择要叠加的图像文件后再调节比例!','警告');
end;

% --- Executes during object creation, after setting all properties.
function DJBL_Slider_CreateFcn(hObject, eventdata, handles)

if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor',[.9 .9 .9]);
end



% --- Executes during object creation, after setting all properties.
function Edgen_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end




% --- Executes on button press in Wiener.
function Wiener_Callback(hObject, eventdata, handles)
global actual;
global last;
last=actual;
actual=uint8(actual);
if ndims(actual)==3
    actual(:,:,1)=wiener2(actual(:,:,1), [5 5]);
    actual(:,:,2)=wiener2(actual(:,:,2), [5 5]);
    actual(:,:,3)=wiener2(actual(:,:,3), [5 5]);
else
    actual=wiener2(actual, [5 5]);
end;
imshow(actual);
actual=double(actual);


% --- Executes on button press in erode.
function erode_Callback(hObject, eventdata, handles)
% hObject    handle to erode (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global actual;
global last;
last=actual;
actual=uint8(actual);
SE = strel('ball',3,3);
actual = imerode(actual,SE);
imshow(actual);
actual=double(actual);

% --- Executes on button press in dilate.
function dilate_Callback(hObject, eventdata, handles)
% hObject    handle to dilate (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

global actual;
global last;
last=actual;
actual=uint8(actual);
SE = strel('ball',3,3);
actual = imdilate(actual,SE);
imshow(actual);
actual=double(actual);

% --- Executes on button press in JHH.
function JHH_Callback(hObject, eventdata, handles)
global actual;
global last;
last=actual;
actual=uint8(actual);
if ndims(actual)==2
    actual=histeq(actual);
else
    warndlg('请先转换为灰度图!','警告');
end;
imshow(actual);
actual=double(actual);


% --- Executes on button press in YM.
function YM_Callback(hObject, eventdata, handles)
global actual;
global last;
last=actual;
if ndims(actual)==2
    M=[1 1 1;1 1 1;1 1 1]/9;
    J2=filter2(M,actual);
    actual=actual-J2; 
    imshow(actual);
else
    M=[1 1 1;1 1 1;1 1 1]/9;
    J2(:,:,1)=filter2(M,actual(:,:,1));
    J2(:,:,2)=filter2(M,actual(:,:,2));
    J2(:,:,3)=filter2(M,actual(:,:,3));
    actual(:,:,1)=actual(:,:,1)-J2(:,:,1); 
    actual(:,:,2)=actual(:,:,2)-J2(:,:,2); 
    actual(:,:,3)=actual(:,:,3)-J2(:,:,3); 
    imshow(actual);
end;


function offset_X_Callback(hObject, eventdata, handles)
global offset_x;
offset_x=str2double(get(hObject,'String'));
offset_x=double(int8(offset_x));


% --- Executes during object creation, after setting all properties.
function offset_X_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end


function offset_Y_Callback(hObject, eventdata, handles)
global offset_y;
offset_y=str2double(get(hObject,'String'));
offset_y=double(int8(offset_y));


% --- Executes during object creation, after setting all properties.
function offset_Y_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end


% --- Executes on button press in Xmove.
function Xmove_Callback(hObject, eventdata, handles)
global offset_x;
global actual;
global last;
last=actual;
imsize=size(actual);
if ndims(actual)==3
    if offset_x>0
        for i=(imsize(2)-offset_x):-1:1
            actual(:,i+offset_x,:)=actual(:,i,:);
        end;
        for i=1:1+offset_x
            actual(:,i,:)=0;
        end;
    else
         for i=1:imsize(2)+offset_x
            actual(:,i,:)=actual(:,i-offset_x,:);
        end;
        for i=(imsize(2)+offset_x):imsize(2)
            actual(:,i,:)=0;
        end;
    end;
else
    if offset_x>0
        for i=(imsize(2)-offset_x):-1:1
            actual(:,i+offset_x)=actual(:,i);
        end;
        for i=1:1+offset_x
            actual(:,i)=0;
        end;
    else
        for i=1:imsize(2)+offset_x
            actual(:,i)=actual(:,i-offset_x);
        end;
        for i=imsize(2)+offset_x:imsize(2)
            actual(:,i)=0;
        end;
    end;
end
imshow(uint8(actual));



% --- Executes on button press in Ymove.
function Ymove_Callback(hObject, eventdata, handles)
global offset_y;
global actual;
global last;
last=actual;
imsize=size(actual);
if ndims(actual)==3
    if offset_y>0
        for i=(imsize(1)-offset_y):-1:1
            actual(i+offset_y,:,:)=actual(i,:,:);
        end;
        for i=1:1+offset_y
            actual(i,:,:)=0;
        end;
    else
        for i=1:(imsize(1)+offset_y)
            actual(i,:,:)=actual(i-offset_y,:,:);
        end;
        for i=imsize(1)+offset_y:imsize(1)
            actual(i,:,:)=0;
        end;
    end;
else
    if offset_y>0
        for i=(imsize(1)-offset_y):-1:1
            actual(i+offset_y,:)=actual(i,:);
        end;
        for i=1:1+offset_y
            actual(i,:)=0;
        end;
    else
        for i=1:(imsize(1)+offset_y)
            actual(i,:)=actual(i-offset_y,:);
        end;
        for i=(imsize(1)+offset_y):imsize(1)
            actual(i,:)=0;
        end;
    end;
end
imshow(uint8(actual));