zoukankan      html  css  js  c++  java
  • 图像的线性空间滤波matlab实现

    1、线性空间滤波函数Z = imfilter(X,H,option1,option2,...)

    X为输入图像矩阵,H为m*n维的掩膜矩阵,H中的数据类型必须是double类型。掩膜矩阵可以是用户定义,也可以是系统定义好的。返回矩阵Z和X有相同的数据结构和数据类型。

    整个函数处理的中间过程都会使用double类型,所以不必担心中间结果的精度。

    2、获取系统掩膜函数H=fspecial(type,parameters)

    type为字符串,制定了掩膜类型。如'average'表示均值掩膜。H为返回的掩膜矩阵,数据类型为double.

    • 正方形均值掩膜,h=fspecial('average',n),n为掩膜大小,n*n,默认值是3.
    • 高斯低通掩膜,h=fspecial('gaussian',n,sigma),n为掩膜大小n*n,默认为3.sigma为高斯分布方差。
    • 二维拉普拉斯掩膜'laplacian',h=fspecial('laplacian',alpha),alpha控制掩膜形状,范围是[0 1],默认值0.2,
    • 反锐化掩膜'unsharp',h=fspecial('unsharp',alpha)alpha控制掩膜形状,范围是[0 1],默认值0.2
    • 水平锐化掩膜'prewit',h=fspecial('prewit'),如果想用垂直锐化,则用h'
    • sobel水平锐化,h=fspecial('sobel'),如果想用垂直锐化,则用h'
     1 clear all;
     2 i=imread('./pic/lena256.bmp');
     3 
     4 h=fspecial('sobel');
     5 h=h';

    6 z=imfilter(i,h); 7 8 figure; 9 subplot(1,2,1) 10 imshow(i); 11 title('原始图像') 12 subplot(1,2,2) 13 imshow(z) 14 title('垂直锐化滤波')

    3、添加噪声,是用函数Z=imnoise(A,type,parameters);其中A是要添加噪声的图像,type为添加噪声类型,.

    •   高斯噪声Z=imnoise(A,'gausiaan',m,d);其中m是均值,d是方差
    • 注意高斯噪声中,m,d指定时要注意转换,例如,对于uint8类型的图像,添加均值为100,方差为200的高斯噪声,
    • m=100/255,d=200/(255^2);
    • 椒盐噪声Z=imnoise(A,'salt & pepper',d),d范围是[0 ,1],表示噪声密度,即含噪声值的图像区域的百分比。默认值是0.05。噪声是最小值和最大值两种。
    • 泊松分布噪声,Z=imnoise(A,'poisson')
    1 clear all;
    2 img = imread('./pic/lena256.bmp');
    3 nimg=imnoise(img,'salt & pepper',0.05);
    4 figure;
    5 subplot(1,2,1);
    6 imshow(img);
    7 subplot(1,2,2);
    8 imshow(nimg);

    4、多图像平均法,在相同条件下,进行M次重复拍摄的图像相加,取平均作为输出值。z=imlincomb(k1,A1,k2,A2,k3,A,3...);

    z=k1*A1+k2*A2+k3*A3...

    例子:

     1 clear all;
     2 img=imread('./pic/lena256.bmp');
     3 n1=imnoise(img,'gaussian',0,0.02);
     4 n2=imnoise(img,'gaussian',0,0.02);
     5 n3=imnoise(img,'gaussian',0,0.02);
     6 n4=imnoise(img,'gaussian',0,0.02);
     7 n5=imnoise(img,'gaussian',0,0.02);
     8 
     9 final = imlincomb(0.2,n1,0.2,n2,0.2,n3,0.2,n4,0.2,n5);
    10 figure;
    11 subplot(2,2,[1 2]);
    12 imshow(img);
    13 title('原始图像');
    14 subplot(2,2,3);
    15 imshow(n1);
    16 title('添加高斯噪声后的图像');
    17 subplot(2,2,4);
    18 imshow(final);
    19 title('平均后的图像');

  • 相关阅读:
    why why why
    为什么又显示了呢?
    Hello
    兼容性问题
    前端性能优化
    ES6新增API
    详解面向对象、构造函数、原型与原型链
    post请求导出表单。
    vue在生产环境清除console.log
    js 延迟加载的几种方法
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/5386595.html
Copyright © 2011-2022 走看看