zoukankan      html  css  js  c++  java
  • MATLAB 图像处理于数字化(一)

    MATLAB作为数学领域应用最广泛的一种软件,集成了对于图片处理的函数和功能,成为了处理数字图像问题的佼佼者。其出众的计算能力和简便的绘图能力可以有效进行数字图像的变换和操作。本文探究了MATLAB(R2015a)软件下数字图像处理部分简单内容方法的操作实现,包括图像变换、图像增强等。

    在这里,我们介绍一些图片编辑的基本操作,本文中对于大多数的操作,是对数字图像处理领域中最为著名的“lena”图片进行操作的。

    操作的问题如下:

    (1)将 lena.jpg 读入到 Matlab 并显示
    (2)将彩色图像转化为灰度图像,并保存到电脑里(文件名为 lena_gray.jpg)
    (3)绘制 lena_gray.jpg 的灰度直方图
    (4)利用 imnoise 函数为 lena_gray.jpg 添加高斯噪声和椒盐噪声,并分别将生成的图片保存到电脑里(文件名分别为 lena_gauss.jpg 和 lena_pepper.jpg)
    (5)通过帮助文件,学习函数 rgb2ind/ind2rgb,gray2ind/ind2gray 函数的用法,并将 lena.jpg和 lena_gray.jpg 进行转化。
    (6)将 lena.jpg 和 lena_gray.jpg 转化为二值图像(im2bw),并显示出来。
    

    lena

    首先是将lena读取到MATLAB中:

    ph_1=imread('lena.jpg');
    imshow(ph_1);
    

    将彩色的三维图片灰度化,此时用函数rgb2gray()进行操作,并用figure新开一个窗口,用来展示灰度化的图片,在接下来的每一步中,都会用到该函数开辟新的窗口,用来展示新的图片。

    ph_2=rgb2gray(ph_1);
    imwrite(ph_2,'lena_gray.jpg');%将ph_2以lena_gray.jpg的文件名存入计算机
    figure,imshow(ph_2);
    

    生成的图片如下所示:

    lena_gray.jpg

    为了显示图像灰度的分布情况,还需要绘制灰度直方图。可以使用如下代码:

    figure,imhist(ph_2);
    

    生成的图片如下所示:
    灰度直方图

    对图片添加噪声,所用函数为imnoise (I, type),该函数中的type可以为5种噪声参数,分别为:‘gaussian’(高斯白噪声),‘localvar’(与图象灰度值有关的零均值高斯白噪声),‘poisson’(泊松噪声),‘salt & pepper’(椒盐噪声)和’speckle’(斑点噪声)。

    以下为高斯噪声的代码和效果:

    ph_3=imnoise(ph_2,'gaussian');%高斯噪声
    figure,imshow(ph_3);
    imwrite(ph_3,' lena_gauss.jpg');
    

    高斯噪声生成的图片如下所示:
    在这里插入图片描述

    以下为椒盐噪声的代码和效果:

    ph_4=imnoise(ph_2,'salt');%椒盐噪声
    figure,imshow(ph_4);
    imwrite(ph_4,'lena_pepper.jpg');
    

    椒盐噪声生成的图片如下所示:
    lena_pepper.jpg

    函数rgb2ind()将真彩色图像转换为索引图像。索引图像是一种把像素值直接作为RGB调色板下标的图像。索引图像可把像素值“直接映射”为调色板数值。

    调用方法:
     
    [X,map] = rgb2ind(RGB, n)%灰度变索引,n是颜色数,可变
    
    X = rgb2ind(RGB, map)%使用调色板map将真彩色图像转换为索引图像,即在调色板中找    到与真彩色图像颜色值最接近的颜色作为转换后的索引图像的像素值。map中颜色项数(即size(map, 1))不能超过65536。
    
    [X,map] = rgb2ind(RGB, tol)%利用第一种算法把真彩色图像转换为索引图像, map中最多包含(floor(1/tol)+1)^3种颜色, tol必须是介于0.0和1.0之间的数。
    
    [imgind, map] = rgb2ind(ph_1,10);
    figure('Name', '显示索引图像')
    imshow(imgind, map)
    

    生成图像如下:

    在这里插入图片描述

    ind2rgb() 将索引图像图像转换为RGB图像,输入包括图像矩阵和颜色图数组

    x=ind2rgb(imgind,map);
    figure,imshow(x);
    

    生成图像如下:

    在这里插入图片描述

    im2bw:基于阈值,将图像转变成二进制图像。
    
    BW = im2bw(I, level):将灰度图像I转变成二级制图像BW
    
    level:阈值等级,取值范围【0,1】
    
    BW: 逻辑型
    
    如果I中像素亮度比I*level大,则该值变为1,否则为0
    
    ph_5 = im2bw(ph_1,0);
    figure
    subplot(1,2,1);%将窗口一分为二,在第一个位置输出图片
    imshow(ph_5);
    ph_6= im2bw(ph_1,1);
    subplot(1,2,2);
    imshow(ph_6);
    

    生成图像如下:在这里插入图片描述

    ph_7 = im2bw(ph_1,0);
    figure
    subplot(1,2,1);
    imshow(ph_7);
    ph_8= im2bw(ph_2,1);
    subplot(1,2,2);
    imshow(ph_8);
    

    生成图像如下:在这里插入图片描述

  • 相关阅读:
    iOS側拉栏抽屉效果Demo
    Juce源代码分析(九)应用程序基类ApplicationBase
    Android获取手机方向
    2014手机号码归属地数据库
    自译Solr in action中文版
    HUD 2031: 进制转换
    《学习opencv》笔记——矩阵和图像操作——cvConvertScale,cvConvertScaleAbs,cvCopy and cvCountNonZero
    Xcode5.1.1+ios 7.1.2 免证书真机调试
    《你不知道的JavaScript》读书笔记(二)词法作用域
    python生成word中文字体
  • 原文地址:https://www.cnblogs.com/mach-pupil/p/12535355.html
Copyright © 2011-2022 走看看