MATLAB与数学建模:影像处理(上)

以下内容为个人笔记,部分图片来源于郭老师课件或课程截图。
笔记汇总:MATLAB基础教程
课程视频:MATLAB基础教程-台大郭彦甫(14课全-高清-含课件)


文章目录

    • 数字图像简述
    • 图像准备
    • 图像算法
      • 图像乘法
      • 图像加法
      • 图像直方图
      • 图像几何变换
      • 图像旋转
      • 补充几个函数
  • 练习

数字图像简述

MATLAB与数学建模:影像处理(上)_第1张图片

  • 数字图像大概可以分为如上图所示的三类:彩色、灰阶、黑白;
  • 计算机存储图像时,实际上当作一个矩阵来存储,简单来说,矩阵的大小即为图片的像素大小;
  • 对于最简单的黑白图像,是一个二维 01 矩阵,图片的每一个像素点对应一个数值,黑色为0,白色为1;
    对于灰阶图像,是一个二维矩阵,每一个像素点对应的数值为 uint8 类型,即 0~255;越白数值越大;
    对于彩色图像,可以简单地理解为三个灰阶矩阵叠加成的一个三维矩阵,其每一个灰阶矩阵分别对应 R G B;这样每一个像素点对应三个数值,叠加得到该像素点的颜色;
  • MATLAB 对于图片的处理实际上就是对这样的矩阵做各种运算;

图像准备

  • A = imread(filename) 读取图像并存入变量 AA 实际上是一个矩阵,其内容如前所述;
  • imshow(A) 显示 A 中存有的图像;
  • imageinfo(filename) 一个工具箱,用于查看图像的各种信息;
  • imtool(filename) imtool(A) 一个图像处理工具箱,常用它查看图像的像素点信息(即矩阵中元素的值);
  • imwrite(I, ‘newImage.png’) 将处理后的图片 I 存入文件

图像算法

图像乘法

MATLAB与数学建模:影像处理(上)_第2张图片

  • Z = immultiply(X, Y) 将图像 X 乘以 Y
  • 如果Y 是常数,则X每一个元素值乘以Y;比如上图将图片乘以 1.5 变得更亮;要变得更暗则乘以小于 1 的数;
  • 如果Y 是图片(矩阵),则必须是和X等大小的图片,两个矩阵做点乘;
  • Z = imdivide(X, Y) 与矩阵乘法对应的矩阵除法

图像加法

MATLAB与数学建模:影像处理(上)_第3张图片

  • Z = imadd(X, Y) 将图像 X 加上 Y
  • 如果Y 是常数,则X每一个元素值加上 Y;
  • 如果Y 是图片(矩阵),则必须是和X等大小的图片,两个矩阵做加法;比如上图将两个图片相加;
  • Z = imsubtract(X, Y) 与图像加法对应的图像减法

图像的加减乘除可能会出现超出 uint8 的范围,matlab不会发生溢出之类的现象,而是对于超过255的结果其值即为255;对于小于0的结果其值即为0;

对图像的处理实际上就是对矩阵的运算,因此 Z = X.*Y Z = X+Y 可以达到一样的效果,matlab只是将其封装成了如上述的函数而非魔法;(包括后续一系列函数也是这样)

图像直方图

MATLAB与数学建模:影像处理(上)_第4张图片

  • imhist(I) 画出图像 I 的色阶直方图(实际上是图像矩阵元素数值的直方图),只使用于灰阶图像;
  • [cunts, bin] = imhist(I) 返回直方图 x 轴的索引 bin 和对应的直方图高度(个数) cunts
  • histeq(I) 使图像直方图分布均匀,即增强图像的对比度;
    MATLAB与数学建模:影像处理(上)_第5张图片

图像几何变换

图像的几何变换实质上是将图像矩阵与某一变换矩阵做矩阵乘法:
MATLAB与数学建模:影像处理(上)_第6张图片

图像旋转

MATLAB与数学建模:影像处理(上)_第7张图片

  • J = imrotate(I,angle,method) 将图片旋转 angle 度,参数 method 指出使用的插值方法;

补充几个函数

函数 作用
Z = imabsdiff(X, Y) 两个图像的绝对差,返回差的绝对值(注意和imsubtract的区别)
imapplymatrix 对彩色图像的 RGB 对应的三个值线性组合(即赋不同权重组合),得到灰阶图像;
imcomplement 计算图像的补图,即将颜色反转
imlincomb 将多张图片线性组合(即按照不同的权重叠加)

练习

MATLAB与数学建模:影像处理(上)_第8张图片

I = imread('rice.png');
subplot(131)
imshow(I)
J = immultiply(I, 2); % 增强亮度
subplot(132)
imshow(J)
J = histeq(J); % 再增强对比度
subplot(133)
imshow(J)

MATLAB与数学建模:影像处理(上)_第9张图片

I = imread('rice.png');
subplot(131); imshow(I)
J = immultiply(I, 2); % 增强亮度
subplot(132); imshow(J)
J = histeq(J); % 再增强对比度
subplot(133); imshow(J)

figure
subplot(121); imhist(I) % 原图的histogram
subplot(122); imhist(J) % 增强亮度和对比度后的histogram

你可能感兴趣的:(MATLAB与数学建模,matlab,数学建模,计算机视觉)