zoukankan      html  css  js  c++  java
  • 10. matlab图像处理基础——图像滤波、图像裁剪、噪声

    1、图像滤波

      

      步骤1:使用fspecial函数创建二维滤波器

      步骤2:使用函数imfilter进行滤波

    %% 滤波
    I = imread('cameraman.tif');
    subplot(3,3,1),imshow(I),title('原图像');
    % 均值滤波
    fs1 = fspecial('average');
    J1 = imfilter(I,fs1);
    subplot(3,3,2),imshow(J1),title('average');
    % 圆形领域
    fs2 = fspecial('disk');
    J2 = imfilter(I,fs2);
    subplot(3,3,3),imshow(J2),title('disk');
    % 高斯
    fs3 = fspecial('gaussian');
    J3 = imfilter(I,fs3);
    subplot(3,3,4),imshow(J3),title('gaussian');
    % 高斯-拉普拉斯
    fs4 = fspecial('log');
    J4 = imfilter(I,fs4);
    subplot(3,3,5),imshow(J4),title('log');
    % 拉普拉斯
    fs5 = fspecial('laplacian');
    J5 = imfilter(I,fs5);
    subplot(3,3,6),imshow(J5),title('laplacian');
    % motion模版
    fs6 = fspecial('motion');
    J6 = imfilter(I,fs6);
    subplot(3,3,7),imshow(J6),title('motion模版');
    % prewitt模版
    fs7 = fspecial('prewitt');
    J7 = imfilter(I,fs7);
    subplot(3,3,8),imshow(J7),title('prewitt模版');
    % sobel模版
    fs8 = fspecial('sobel');
    J8 = imfilter(I,fs8);
    subplot(3,3,9),imshow(J8),title('sobel模版');
    

    2、图像裁剪

      处理结果 = imcrop(原始图像,裁剪区域)

      裁剪区域:[xmin, ymin, width, height]

    %% 图像裁剪
    I = imread('cameraman.tif')
    [x,y] = size(I);
    subplot(2,3,1),imshow(I);
    % 裁剪左上角
    J1= imcrop(I,[0,0,100,100]);
    subplot(2,3,2),imshow(J1);
    % 裁剪右上角
    J2= imcrop(I,[156,0,100,100]);
    subplot(2,3,3),imshow(J2);
    % 裁剪左下角
    J3= imcrop(I,[0,156,100,100]);
    subplot(2,3,4),imshow(J3);
    % 裁剪右下角
    J4= imcrop(I,[156,156,100,100]);
    subplot(2,3,5),imshow(J4);
    % 裁剪中间
    J5= imcrop(I,[128,128,50,50]);
    subplot(2,3,6),imshow(J5);
    

    3、噪声

     (1)噪声

      处理结果 = imnoise(原始图像,噪声类型)

         

         

    (2)高斯噪声

    %% 高斯噪声
    I = imread('lena.jpg');
    subplot(1,2,1),imshow(I);
    J = imnoise(I,'gaussian',0.01,0.1);
    subplot(1,2,2),imshow(J);
    

    (3)localvar噪声--类型1

      目标图像 = imnoise(原始图像,'localvar',V)

      其中V是与原始图像大小相同的一个数组。

    %% localvar噪声类型1
    I = imread('lena.jpg');
    subplot(1,2,1),imshow(I);
    J = imnoise(I,'localvar',ones(size(I))*0.01);
    subplot(1,2,2),imshow(J);
    

    (4)localvar噪声--类型2

      目标图像 = imnoise(原始图像,'localvar',image_intensity,var)

     

    %% localvar噪声类型2
    I = imread('lena.jpg');
    subplot(1,2,1),imshow(I);
    J = imnoise(I,'localvar',rand(1,100),ones(1,100));
    subplot(1,2,2),imshow(J);
    

     (4)泊松噪声

      处理结果 = imnoise(原始图像,'poisson')

    %% 泊松噪声
    I = imread('lena.jpg');
    subplot(1,2,1),imshow(I);
    J = imnoise(I,'poisson');
    subplot(1,2,2),imshow(J);
    

    (5)椒盐噪声

      处理结果 = imnoise(原始图像,'salt&pepper',d)

      其中,d是噪声密度(即包括噪声值的图像区域的备份比),默认噪声密度为0.5。

    I = imread('lena.jpg');
    subplot(1,2,1),imshow(I);
    J = imnoise(I,'salt & pepper');
    subplot(1,2,2),imshow(J);
    

    (6)speckle噪声

      处理结果 = imnoise(原始图像,'speckle',V)

      目标图像 = 原始图像+n*原始图像,其中,n是均值为0,方差为V的均匀分布的随机噪声。

      V的默认值是0.04。

    I = imread('lena.jpg');
    subplot(1,2,1),imshow(I);
    J = imnoise(I,'speckle');
    subplot(1,2,2),imshow(J);
    

  • 相关阅读:
    使用Python进行文件操作
    Python学习笔记(六)Python组合数据类型
    python基本算法题(一)
    Python要如何实现(列表)排序?
    Python中输入和输出(打印)数据
    Python学习笔记(五)函数和代码复用
    关于Python缩进,我们该了解哪些?
    Python学习笔记(四)Python程序的控制结构
    Python学习笔记(三)字符串类型及其操作(2)
    Java视频按帧保存为图片
  • 原文地址:https://www.cnblogs.com/fengxb1213/p/12879865.html
Copyright © 2011-2022 走看看