数字图像处理 图像变换

数字图像基础

    • 参考资料
    • 一、人眼视觉特性
    • 二、图像基本知识
      • 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=clog(1+r)
在这里插入图片描述
在这里插入图片描述
  - 幂次变换 s=c⋅rγs=c\cdot r ^\gammas=crγ

在这里插入图片描述

代数运算

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)=M1i=1M[fi(x,y)+ei(x,y)]=f(x,y)+M1i=1Mei(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]x1y11=100010ΔxΔy1x0y01

  • 水平镜像
    [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]x1y11=100010w01x0y01
    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]x1y11=1000100h1x0y01
    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]=[a2b2a1b1a0b0]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°会开始丢失图像。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超乎想象!关于5G无人机的最强科普!

来源&#xff1a;鲜枣课堂/xzclasscom说到无人机&#xff0c;大家一定都非常熟悉。是的&#xff0c;最近这些年&#xff0c;无人机可以说是爆发式发展。以前&#xff0c;它仅用于神秘的军事用途。如今&#xff0c;却在我们的日常生活中见怪不怪。我们身边出现了越来越多的无人机…

相关与卷积、各种误差

相关和卷积相关自相关性质卷积公式物理意义性质相关 自相关 自相关函数就是信号x(t)x(t)x(t)和它的时移信号 x(tτ)x(t\tau )x(tτ) 的乘积平均值。它是时移变量 τ\tauτ 的函数。 “自相关”这种数据处理方法&#xff0c;可以发现隐藏在杂乱信号中的有用信息。这个能力是…

5G全产业链最新解读

来源&#xff1a;中创产业研究院摘要&#xff1a;自5G概念的提出&#xff0c;各国相关技术的研发以及产业布局也在如火如荼进行之中。与此同时我国5G在标准研发上正逐渐成为全球领跑者&#xff0c;有望在2019年实现5G技术的试商用&#xff0c;在2020年实现正式商用。本文将围绕…

函数参数传递、数组指针、二级指针、左值、引用

数组和指针的区别 数组内地址一定连续&#xff0c;指针则不一定连续。数组赋值要么初始化就设定&#xff0c;要么循环元素赋值。而指针随时可以赋值(改变指向)。数组的存储空间&#xff0c;不是在静态区就是在栈上。指针位置随意。sizeof&#xff08;数组名&#xff09; 元素个…

下一个汽车万亿市场打开!氢能源时代正到来

来源&#xff1a;智东西内参看点&#xff1a;中国氢能汽车产业产值有望突破万亿元大关。氢能汽车是以氢为主要能量作为移动的汽车。氢能被视为全球最具发展潜力的清洁能源之一&#xff0c;并被不少国家、车企及学者认为是“终极新能源汽车解决方案”。伴随着汽车保有量持续增长…

高斯噪声和椒盐噪声

clear all;clc;close all; imimread(1.jpg); % oim; [w, h ,z]size(im); imrgb2gray(im); oim;%原图备份 figure;seq0; seqseq1;subplot(2,2,seq);imshow(im);title(原图);posaxis;xlabel(,position,[(pos(1)pos(2))/2 pos(4)]);%高斯噪声 gaunormrnd(0,0.1,w,h); im1im2double…

李彦宏/王坚/王传福等上榜“中国工程院2019院士增选候选人”引争议,实至名归吗?...

来源&#xff1a;物联网智库导 读五一小长假前一天&#xff0c;中国工程院网站公布了2019年工程院院士增选有效候选人名单。经中国工程院主席团审定&#xff0c;最终确定的有效候选人共531位。值得注意的是&#xff0c;BAT微软比亚迪等高管均上榜。此次中国工程院531名候选人的…

号称能自动编程60年,“进化计算”究竟进化到哪一步了?

大数据文摘出品来源&#xff1a;ponderwall编译&#xff1a;stats熊、钱天培大胆想象一下&#xff0c;如果计算机可以自行编写程序&#xff0c;这会为人类带来什么样的变化&#xff1f;与其辛苦研究计算机解决问题的方法论&#xff0c;敲出精准的代码&#xff0c;不如告诉计算机…

动态规划——数塔问题

从原点&#xff08;顶层&#xff09;出发&#xff0c;只能向左或者向右&#xff0c;找到一条路径使得路径上的数字和最大: #include<stdio.h> //#include"algorithm.h" #define N 100int max(int a, int b) {return a > b ? a : b; }int main() {int a[N…

PS填充、仿制图章和修补工具

右下角调整色调后&#xff1a; 概览&#xff1a; 用魔棒工具反选出天空的树枝&#xff0c;然后点 选择-修改-扩展 大致扣出枝丫&#xff0c;再 编辑-填充-内容识别 将空中的树枝ps掉。通过仿制图章工具&#xff08;勾选对齐&#xff09;可以将右下角楼p掉。也可以用修补工具&…

学界 |《nature》杂志:我们有义务搞懂我们所创造出来的技术

来源: AI科技评论一个跨学科的研究小组希望创建一个名为「机器行为」的新学科&#xff0c;以了解人工智能将如何对我们的社会、文化、经济与政治造成影响。在《自然》杂志的一篇评论文章中&#xff0c;作者认为人工智能算法的研究需要扩展到计算机科学以外的领域&#xff0c;纳…

高数复习9.13 函数与极限

双曲正切函数图像 反双曲arsh和arch的表达式 arshxln(xx21)arsh xln(x\sqrt{x^21})arshxln(xx21​)   archxln(xx2−1)arch xln(x\sqrt{x^2-1})archxln(xx2−1​) 数列的极限&#xff1a;构造|xn-a|<一个能确定的数&#xff08;表达式&#xff09; 极限存在的证明&…

【深度】从GE工业互联网到中国工业互联网

来源&#xff1a;数字化企业工业互联网自2017年起已成为国内科技界最为火爆的词汇之一。学者、供应商、投资商、企业家、媒体、政府官员、人大代表、政协委员等纷纷给出了自己的解读。一、背景冠名为工业互联网的学术会议此起彼伏&#xff0c;有世界大会、世界峰会、全球峰会、…

LeetCode题——最长无重复子串

题目 给定一个字符串&#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。如&#xff1a; 输入: “abcbabcd” 输出: 4 解释: 因为无重复字符的最长子串是 “abcd”&#xff0c;所以其长度为 4。 思路 一开始容易往暴力遍历的方向想&#xff0c;但是实际上运用窗口的…

透视世界人工智能发展

来源&#xff1a;参考消息、新华网摘要&#xff1a;当今世界&#xff0c;随着人工智能迎来新一轮发展热潮&#xff0c;一个“新智能时代”即将到来。世界大国都把加快发展人工智能上升至国家战略高度&#xff0c;以抢占新一轮科技革命和产业变革的制高点。“透视世界人工智能发…

半导体行业必将再火十年!两大趋势成发展新动能

来源&#xff1a;智东西看点&#xff1a;汽车半导体和人工智能芯片为半导体市场带来了新的发展机遇。当前&#xff0c;我们使用的许多前沿数字化设备背后的技术都要依靠半导体才能实现。 由于无人驾驶、人工智能、5G和物联网等新兴技术的发展&#xff0c;以及对技术研发的持续投…

batch批处理程序easyadd——追加单行文本到指定txt文件末尾

介绍 有时候需要打开记事本在末尾追加文本&#xff0c;如果手动找到txt文件&#xff0c;再打开txt文件&#xff0c;按 ctrlhome 到达文末&#xff0c;才能完成对txt文件的追加&#xff0c;比较繁琐。而且如果txt文件很大&#xff08;比如词典文件&#xff09;&#xff0c;手动…

短信备份(原)

昨天在学习回调的时候&#xff0c;发现了其独特的魅力之处&#xff0c;它将业务代码逻辑和我们的工具类耦合性大大降低了。 应用场景&#xff1a;在实际开发中&#xff0c;经常会随着用户的需求的改变而对对话框的样式进行相应修改&#xff0c;在短信的备份过程中&#xff0c;往…

今年的谷歌I/O大会,或许会有这些东西

来源 | 网易科技据国外媒体报道&#xff0c;当地时间5月7日&#xff0c;2019年度谷歌I/O开发者大会将在加州的海岸线圆形剧场(Shoreline Amphitheater)举行。届时&#xff0c;包括谷歌首席执行官桑达尔皮查伊(Sundar Pichai)等公司高管将登台发表演讲。谷歌将在本届开发者大会上…

贪吃蛇C语言

有趣的小游戏&#xff0c;实现关键点有光标移动&#xff0c;按键检测&#xff0c;状态转移&#xff0c;随机数生成等。欢迎讨论&#xff01; #include<stdio.h> #include<windows.h> #include<time.h> #include<conio.h>#define UP w #define DOWN s…