数字图像基础

  • 参考资料
  • 一、人眼视觉特性
  • 二、图像基本知识
    • 1.图像类别
    • 2.图像输入
    • 3.图像输出
  • 三、图像处理
    • 1.图像类型转化
    • 2.图像变换
      • 点变换
      • 代数运算
      • 几何运算

参考资料

一、人眼视觉特性

  • 韦伯率:50%概率感觉到亮度变化时的 ΔII\frac{\Delta I}{I}IΔI​为韦伯率。
    韦伯-费希纳定律:心理量和物理量之间关系的定律,即感觉量的大小与刺激强度的对数成正比。

  • 马赫带

  • 对比度(人眼相对亮度感觉):: 灰度值之差比基础值。

  • 频谱混叠 :采样频率小于2fmax时候出现(不满足采样定理)

二、图像基本知识

1.图像类别

rgb图像 :R,G,B通道各有自己的灰度值,合成得到彩色图像。 例如 lena.jpg [512,512,3] 是一个3维数组
索引色图像:调色板和数据矩阵 调色板若干行3列
灰度图像:只有一个数据矩阵,灰度值越大越白
二值图像:只有两个灰度值

2.图像输入

  • imread
    A = imread(filename,fmt)
  • imwrite
    imwrite(A,filename,fmt)
  • imfinfo

3.图像输出

  • image :直接映射显示图像
  • imagesc :图像缩放函数(imagescale),线性映射显示图像
  1. imagesc(A) 将矩阵A中的元素数值按大小转化为不同颜色,并在坐标轴对应位置处以这种颜色染色
  2. imagesc(x,y,A) x,y决定坐标范围,x,y应是两个二维向量,即x=[x1 x2],y=[y1 y2],matlab会在[x1,x2]*[y1,y2]的范围内染色。 如果x或y超过两维,则坐标范围为[x(1),x(end)]*[y(1),y(end)]
  • imshow
  1. imshow(I):直接调用,因为当图像为double型时imshow函数会把显示范围设置成[0 , 1],这样小于0的就变成黑色了,大于1的就变成白色了,所以处理不当就会出现全白的情况。
  2. imshow( I/(max(I(:))):针对直接调用imshow函数出现的问题,用max(I(:) ) 对图像矩阵进行归一化再显示,这样负数部分会变黑,正数部分还可以正常显示,但有一部分信息丢失了。
  3. imshow(I,[low,high]):用指定的灰度范围 [low high]显示灰度图像I。显示结果,图像中灰度值等于或低于low的都将用黑色显示,而灰度值大于等于high的都显示为白色,介于low和high之间的用其灰度级的默认值的中间色调显示。如果你用了一个空矩阵([]) 来代替 [low high], imshow 函数将使用 [min(I(:))max(I(:))]作为第二个参数。imshow(gray)不等于imshow(gray,[]),后者对比度变高。

三、图像处理

1.图像类型转化

  1. cat :合成图像序列

  2. dither :图像抖动 印刷、视觉效果有提升,但是图像会损失一部分清晰度

  3. im2bw

  4. mat2gray :实现图像矩阵的归一化操作
    I = mat2gray(A, [amin amax])
    将图像矩阵A中介于amin和amax的数据归一化处理, 其余小于amin的元素都变为0, 大于amax的元素都变为1。

  5. im2double

  6. mat2gray()和im2double()区别:这两个如果都是对uint8数据操作,区别就在于前者是归一化操作,归一化后也在0~1之间,自然结果也是double类型,后者是将数据从0~255映射到0~1。例如:

      I  = uint8([1,1,2,3]);I1 = mat2gray(I);  % 归一化,I1结果是double型[0,0,0.5,1]  I2 = im2double(I); % 映射化,I2结果是double型[0.0039,0.0039,0.0078,0.0118]  0-255作为总长度
    
  7. uint8和im2uint8
    在数据类型转换时候uint8和im2uint8的区别,uint8的操作仅仅是将一个double类型的小数点后面的部
    分去掉;但是im2uint8是将输入中所有小于0的数设置为0,而将输入中所有大于1的数值设置为255,再将所
    有其他值乘以255。
    图像数据在计算前需要转换为double,以保证精度;很多矩阵数据也都是double的。要想显示其,必须先
    转换为图像的标准数据格式。如果转换前的数据符合图像数据标准(比如如果是double则要位于0~1之间)
    ,那么可以直接使用im2uint8。如果转换前的数据分布不合规律,则使用uint8,将其自动切割至0~255(
    超过255的按255)。最好使用mat2gray,将一个矩阵转化为灰度图像的数据格式(double)

2.图像变换

点变换

  1. 线性点运算


 2. 分段线性点运算

  3.非线性变换:

   - 对数变换 s=c⋅log(1+r)s=c\cdot log(1+r)s=c⋅log(1+r)


  - 幂次变换 s=c⋅rγs=c\cdot r ^\gammas=c⋅rγ

代数运算

1.加法运算:去除“叠加性” 噪声
gˉ(x,y)=1M∑i=1M[fi(x,y)+ei(x,y)]=f(x,y)+1M∑i=1Mei(x,y)\begin{aligned} \bar{g}(x, y) &=\frac{1}{M} \sum_{i=1}^{M}\left[f_{i}(x, y)+e_{i}(x, y)\right] \\ &=f(x, y)+\frac{1}{M} \sum_{i=1}^{M} e_{i}(x, y) \end{aligned}gˉ​(x,y)​=M1​i=1∑M​[fi​(x,y)+ei​(x,y)]=f(x,y)+M1​i=1∑M​ei​(x,y)​
2.减法运算:
C(x,y)=A(x,y)−B(x,y)C(x, y)=A(x, y)-B(x, y)C(x,y)=A(x,y)−B(x,y)

  • 差影法检测变化;
  • 混合图像分离;

几何运算

g(x,y)=f(u,v)=f(p(x,y),q(x,y))g(x, y)=f(u, v)=f(p(x, y), q(x, y))g(x,y)=f(u,v)=f(p(x,y),q(x,y))

其中 u=p(x,y),v=q(x,y)u=p(x,y),v=q(x,y)u=p(x,y),v=q(x,y) 这种坐标变换关系称作几何变换

  • 平移变换
    [x1y11]=[10Δx01Δy001][x0y01]\left[\begin{array}{l} x_{1} \\ y_{1} \\ 1 \end{array}\right]=\left[\begin{array}{lll} 1 & 0 & \Delta x \\ 0 & 1 & \Delta y \\ 0 & 0 & 1 \end{array}\right]\left[\begin{array}{l} x_{0} \\ y_{0} \\ 1 \end{array}\right]⎣⎡​x1​y1​1​⎦⎤​=⎣⎡​100​010​ΔxΔy1​⎦⎤​⎣⎡​x0​y0​1​⎦⎤​

  • 水平镜像
    [x1y11]=[−10w010001][x0y01]\left[\begin{array}{c} x_{1} \\ y_{1} \\ 1 \end{array}\right]=\left[\begin{array}{ccc} -1 & 0 & w \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array}\right]\left[\begin{array}{l} x_{0} \\ y_{0} \\ 1 \end{array}\right]⎣⎡​x1​y1​1​⎦⎤​=⎣⎡​−100​010​w01​⎦⎤​⎣⎡​x0​y0​1​⎦⎤​
    w为宽

  • 垂直镜像
    [x1y11]=[1000−1h00−1][x0y01]\left[\begin{array}{c} x_{1} \\ y_{1} \\ 1 \end{array}\right]=\left[\begin{array}{ccc} 1 & 0 & 0 \\ 0 & -1 & h \\ 0 & 0 & -1 \end{array}\right]\left[\begin{array}{l} x_{0} \\ y_{0} \\ 1 \end{array}\right]⎣⎡​x1​y1​1​⎦⎤​=⎣⎡​100​0−10​0h−1​⎦⎤​⎣⎡​x0​y0​1​⎦⎤​
    h为高

  • 仿射变换
    平移、比例缩放和旋转变换都是仿射变换的特殊情况
    [uv]=[a2a1a0b2b1b0][xy1]\left[\begin{array}{l} u \\ v \end{array}\right]=\left[\begin{array}{lll} a_{2} & a_{1} & a_{0} \\ b_{2} & b_{1} & b_{0} \end{array}\right]\left[\begin{array}{l} x \\ y \\ 1 \end{array}\right][uv​]=[a2​b2​​a1​b1​​a0​b0​​]⎣⎡​xy1​⎦⎤​

  • 旋转变换(角度 β\betaβ )

正余余正符号同

  通过极坐标的关系可求得旋转矩阵 这里 β>0 为顺时针旋转

旋转后图像可能出现空洞点,可以将 [x y] 同时赋值给 [x+1,y] [x,y+1] 以消除空洞,这也称为插值处理。

未插值 插值处理后

拓展画布公式:
hh=floor(h*cos(a)+w*sin(a))+1;
ww=floor(h*sin(a)+w*cos(a))+1;

c2=[hh;ww]/2;
推导:

clear all;clc;
% close all;
im=imread('1.jpg');%计算旋转矩阵
a=30*pi/180;
R=[cos(a) sin(a);-sin(a) cos(a)];%变换矩阵别记错了sz=size(im);
h=sz(1);
w=sz(2);
ch=sz(3);
%旋转中心
c1=[h;w]/2;%画布拓展
hh=floor(h*cos(a)+w*sin(a))+1;
ww=floor(h*sin(a)+w*cos(a))+1;
%新旋转中心,注意这是新画布的补偿
c2=[hh;ww]/2;im2=uint8(zeros(h,w,3));
for k=1:chfor i=1:hfor j=1:wp=[i;j];pp=round(R*(p-c1)+c2);%旋转变换if(1<=pp(1)&&pp(1)<=hh&&1<=pp(2)&&pp(2)<=ww)im2(pp(1)+1,pp(2),k)=im(i,j,k);%插值去除空洞点im2(pp(1),pp(2)+1,k)=im(i,j,k);%插值去除空洞点im2(pp(1),pp(2),k)=im(i,j,k);endendend
endfigure;
imshow(im2);

旋转30°效果

旋转超过90°会开始丢失图像。

数字图像处理 图像变换相关推荐

  1. 数字图像处理学习之路:图像变换(一)

    数字图像处理归纳总结 1.1 数字图像处理基础 1.2 数字图像处理技术 1.3 图像处理一般流程 1.4 图像变换案例分析(如真彩色图像转换为灰度图像) 1.1 数字图像处理基础 概述:数字图像处理 ...

  2. 【基于MATLAB的数字图像处理】第三章·基本图像变换

    系列文章 ·[基于MATLAB的数字图像处理]第一章·绪论 ·[基于MATLAB的数字图像处理]第二章·视觉系统与图像处理系统 ·[基于MATLAB的数字图像处理]第三章·基本图像变换 ·[基于MAT ...

  3. 【计算机视觉】数字图像处理(三)—— 图像变换原理分析

    数字图像处理(三)-- 图像变换原理分析 一.图像变换的目的与用途 1. 图像变换的目的 2. 图像正交变换的要求 正交变换的应用 (一).傅里叶变换 1.傅里叶变换的理论基础与基本定义 2.连续函数 ...

  4. 数字图像处理 第五章 图像变换

    目录 一.图像变换的概念和意义 图像处理方法的分类 频域变换的一般处理过程 二.傅立叶变换 傅里叶变换的作用 傅里叶变换的定义 傅里叶变换的条件 离散傅里叶变换 傅立叶变换的规律 FFT的应用-高通滤 ...

  5. 数字图像处理:图像变换的基本模型

    数字图像处理:图像变换的基本模型 一.常用图象的变换模型 变换模型是指根据待匹配图像与背景图像之间几何畸变的情况,所选择的能最佳拟合两幅图像之间变化的几何变换模型.可采用的变换模型有如下几种:刚性变换 ...

  6. 数字图像处理——第四章 频率域滤波

    数字图像处理--第4章 频率域滤波 文章目录 数字图像处理--第4章 频率域滤波 频率域 1.傅里叶级数原理 1.1.一维傅里叶变换 1.2.二维傅里叶变换 2.python×傅里叶级数 2.1.傅里 ...

  7. 数字图像处理必备基本知识

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 基础知识 1.数字图像: 数字图像,又称为数码 ...

  8. 数字图像处理知识点总结

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 数字图像处理知识点总结 第一章 导论 1.   ...

  9. matlab 霍特林变换,数字图像处理(第3版面向CS2013计算机专业规划教材)

    导语 内容提要 姚敏编著的<数字图像处理(第3版面向CS2013计算机专业规划教材)>详细介绍了数字图像处理的基本理论.主要技术和最新进展.全书共分13章,内容主要包括图像获取.图像变换. ...

最新文章

  1. Java Enum 使用
  2. 残疾人无障碍设施工程改造送上门 900户家庭
  3. [react] 在使用react过程中你都踩过哪些坑?你是怎么填坑的?
  4. leetcode python3 简单题217. Contains Duplicate
  5. java面向对象程序设计编程题,已拿到offer
  6. IIS配置文件上传大小限制
  7. 计算机485通讯原理,用RS-485设计的多机通信接口电路
  8. Python 批量修改文件名称测试
  9. IntelliJ Idea设置护眼浅绿色背景方法
  10. drawio 二次开发
  11. 在AndroidMenifest动态引用ApplicationId,解决INSTALL_FAILURE_CONFLICTION_PROVIDER
  12. 测量网页元素的大小和间距的利器
  13. 分块器评估与语言结构中的递归
  14. js用函数找出1 - 1000 之间7的倍数和包含7的数字,放入数组内
  15. 操作系统实验一 添加内核模块
  16. python节日贺卡绘制
  17. 《华尔街》观后笔记7——阳光交易
  18. 基于opencv第三方视觉库,通过内网IP调用手机摄像头,实现人脸识别与图形监测
  19. Python对电影Top250并进行数据分析
  20. webpack4踩坑——图片打包

热门文章

  1. 关于在手机端可以看到加入的百度网盘群,在pc段找不到的原因
  2. 教师计算机课游戏教学设计,《有趣的游戏》教学设计5篇
  3. FusionCharts Free (FCF) V3 新特性之样式(Styles)
  4. [转]sessionStorage在同一网站多个标签页内共享数据吗?这取决于标签页如何打开
  5. openwrt 开启p2p下载后不定时断流处理办法
  6. MG动画实例——星星图标
  7. 网站丨怎有怎么多神奇的网站呀
  8. Windows Sever2016磁盘分区
  9. FPGA SEU问题与SEM Core
  10. 苹果庆祝 7 月17 日 Emoji 世界表情符号日,带来众多新表情