MATLAB GUI设计 图像处理基本操作(四)

一、图像增强锐化滤波

包含laplacian、roberts、sobel、prewitt四个算子,其中拉普拉斯算子为二阶差分算子,其余为一阶,均起到边缘锐化的效果。

roberts算子:[-1 0;0 1]、[0 -1;1 0]分别起水平、垂直方向的边缘强化

sobel算子:[-1 -2 -1;0 0 0;1 2 1]、[-1 0 1 ;-2 0 2 ;-1 0 1]分别起水平、垂直方向的边缘强化

prewwit算子:[1 1 1 ;0 0 0 ;-1 -1 -1]

%以拉普拉斯算子为例,其余以此类推
global s;
a=imread(s);
axes(handles.axes2);
if ndims(a)==3
    a=rgb2gray(a);
end
h=fspecial('laplacian');
I=imfilter(a,h,'symmetric');  %图像的外部边界通过镜像反射其内部边界来扩展,relicate复制内部边界值
img=a-I;
imshow(img);
figure;
imshow(I);
setappdata(handles.axes2,'img2',I);
global cell;
global pos;
imgpro=getappdata(handles.axes2,'img2');
pos=pos+1;
cell{pos}=imgpro;

二、几何变换

包括平移、旋转、镜像、转置、缩放等,背景以黑色为底。图像缩放、旋转使产生的新像素以及浮点数的操作使之得到的可能不是整数,此时需要调整像素值,可采用最邻近插值、线性插值、双线性插值法等,原理顾名思义。

%以旋转为例,有人机交互,采用了最邻近插值法,自写代码,也可直接使用函数
global s;
b=imread(s);
if ndims(b)==3
    b=rgb2gray(b);
end
axes(handles.axes2);
prompt={'旋转角度'};
dlgtitle='旋转角度';
b1=inputdlg(prompt,dlgtitle);
if isempty(b1)
    warndlg('please imput complete date!','warning');
    return;
else
    a=str2num(b1{:});
end
a=a/180.0*pi;%旋转角度,角度变换
[h,w]=size(b);
rot=[cos(a) -sin(a) 0;sin(a) cos(a) 0;0 0 1];%变换矩阵
rot=rot';
hh=ceil(h*cos(a)+w*sin(a));%向下取整
ww=ceil(h*sin(a)+w*cos(a));%计算新画布大小
d=[h,w]/2;
dd=[hh,ww]/2;%计算中心点
img=uint8(zeros(hh,ww));
for i=1:hh
    for j=1:ww
        p=[i;j;1];%遍历
        pp=(rot*(p-dd)+d);%根据(i,j)与旋转中心的距离找到在原图中的位置
        mn=floor(pp);%向下取整
        x=pp(1);
        y=pp(2);
        m=mn(1);
        n=mn(2);
        if m>=1 && m<h && n>=1 && n<w %判断是否超出边界值
            if x-m<=0.5
                x=m;
            else
                x=m+1;
            end
            if y-n<=0.5
                y=n;
            else
                y=n+1;
            end    %最邻近插值
            img(i,j)=b(x,y);
        end
    end
end
imshow(img);
setappdata(handles.axes2,'img2',img);
global cell;
global pos;
imgpro=getappdata(handles.axes2,'img2');
pos=pos+1;
cell{pos}=imgpro;

三、图像复原

图像复原的过程为使图像退化后加上噪声,经过复原滤波器产生一个原图像f(x,y)的估计fx(x,y),使用imnoise函数来污染图像,常用噪声有高斯噪声、椒盐噪声、周期噪声等。

 这里的复原滤波器有逆滤波、维纳滤波。

%逆滤波
global s;
a=imread(s);
if ndims(a)==3
    a=rgb2gray(a);
end
PSF=fspecial('motion',30,120);%加运动模糊
g=imfilter(a, PSF, 'circular');
g=imnoise(g,'gaussian');%加高斯噪声
figure();
imshow(g);
g=double(g);
[m,n]=size(g);
b=fftshift(fft2(g));
H=zeros(m,n);
cx=floor(m/2);
cy=floor(n/2);
%设置滤波器,k=0.0025
for x=1:m  
    for y=1:n
        H(x,y)=exp(-0.0025*((x-cx)^2+(y-cy)^2)^(5/6));
    end
end
axes(handles.axes2);
%逆滤波
for u=1:m
    for v=1:n
        r=sqrt((u-m/2)^2+(v-n/2)^2);
        if r<=50%滤波范围
        e(u,v)=b(u,v)/H(u,v);
        end
    end
end
f=uint8(real(ifft2(ifftshift(e))));
imshow(f);
setappdata(handles.axes2,'img2',f);
global cell;
global pos;
imgpro=getappdata(handles.axes2,'img2');
pos=pos+1;
cell{pos}=imgpro;


%维纳滤波
global s;
a=imread(s);
if ndims(a)==3
    a=rgb2gray(a);
end
a=im2double(a);
%生成运动模糊图像,逆时针120度运动30个像素
PSF=fspecial('motion',30,120);
g=imfilter(a, PSF, 'circular');
noise=imnoise(zeros(size(a)),'gaussian',0,0.0001);
g=g+noise;
figure();
imshow(g);
axes(handles.axes2);
Sn = abs(fft2(noise)).^2;
nA = sum(Sn(:))/prod(size(noise));
SI = abs(fft2(a)).^2;
IA = sum(SI(:))/prod(size(a));
R = nA/IA;%信噪比
wn=deconvwnr(g, PSF, R);
imshow(wn);
setappdata(handles.axes2,'img2',wn);
global cell;
global pos;
imgpro=getappdata(handles.axes2,'img2');
pos=pos+1;
cell{pos}=imgpro;

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB GUI数字图像处理系统是基于MATLAB平台设计与实现的一个图像处理系统。该系统提供了一个图像处理GUI界面,方便初学者和研究人员学习和研究图像处理的技术方法。系统具备多个功能区,包括文件操作、图像加工、图像处理、流程操作和主界面。 在文件功能区中,用户可以打开图像、储存图像和关闭系统。图像加工功能区提供了灰度化、截取、加噪和散焦模糊等图像加工方法。图像处理功能区包括图像增强、图像变换图像分割等方法,例如空域点处理、空域滤波、频域滤波、傅里叶变换、人工选择分割和自动阈值分割等。流程操作功能区可以记录处理对象的操作步骤并进行撤销操作。主界面可以返回到主界面并提供两个显示窗口和一个按钮。 设计一个MATLAB GUI数字图像处理系统需要遵循一定的设计流程,可以参考相关资源中提供的设计经验和完整的代码以及详细的实验设计报告。这些资源可以提供更详细的信息和指导,帮助你深入了解MATLAB GUI数字图像处理系统的设计和实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [图像处理 Matlab GUI系统(全)](https://blog.csdn.net/weixin_41406486/article/details/114716449)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值