图像表示与描述

图像表示与描述

目标

  1. 掌握常见的基于轮廓特征的描述
  2. 掌握常见的图像区域特征描述

对目标特征的测量是要利用分割结果进一步从图像中获取有用信息,为达到这个目的需要解决两个关键问题:

  • 选用什么特征来描述目标(定性)
  • 如何精确测量这些特征(定量)

常见的目标特征分为灰度(颜色)、几何形状和纹理特征等。

简单描述

简单描述符:边界描述

  • 边界的长度:由轮廓决定
    计算图像内部区域是由4-连通确定,则得到的边界是8-连通的;如果图像内部区域是由8-连通确定的,则得到的边界是4-连通的
  • 计算方式:把所有的边缘点做连线,连线长度即为边界长度(内边界)
  • 边界的直径:边界上相隔最远2点的距离,有时也称为图像的主轴长度:
    Diam(B)=maxi,jD(pi,pj)Diam(B) = max_{i,j}D(p_i,p_j) Diam(B)=maxi,jD(pi,pj)
    在这里插入图片描述
    链码:
  • 链码用于表示由顺序连接的具有指定长度的方向的直线段组成的边界线
  • 方向基于线段的4或8连接,可编码为0-3或0-7
  • 每段的方向使用数字编号方法进行编码
    在这里插入图片描述
    在这里插入图片描述
    用这种方法就可以用一串数字组成的链码表示边界线

链码问题

  • 由于起点的不同,造成编码的不同
  • 由于角度的不同,造成编码的不同
    解决
  • 使用链码的差分代替码字本身

循环差分链码
用相邻链码的差代替链码,例如:
4-链码 10103322
循环差分为:33133030
计算方式为:

1-2 = -1(3)3 - 0 = 3
0 - 1 = -1(3)3 - 3 = 0
1 - 0 = 12 - 3 = -1(3)
0 - 1 = -1(3)2 - 2 = 0

形状数
定义为最小循环首差链码
如上例 形状数:03033133
形状数序号n的定义:形状数表达形式中的位数。
上例序号为8。对于封闭边界,序号一定是偶数
曲率
定义弧的曲率为
k=∣ΔαΔs∣,Δα为圆心角,Δs为弧长k = |{\frac{\Delta\alpha}{\Delta s}}|,\Delta\alpha为圆心角,\Delta s为弧长 k=ΔsΔαΔαΔs
由于数字图像是离散点,计算曲率需要采用近似:用相邻边界线段(描述为直线)的斜率差作为在边界线交点处的曲率描述子。
如图交点a处的曲率为:K=k1−k2K = k_1 - k_2K=k1k2
在这里插入图片描述
简单描述符

  • 区域面积:区域包含的像素数
  • 区域重心:
    x=1A∑x,y∈Rxy=1A∑x,y∈Ryx = \frac{1}{A}\sum_{x,y\in R}x\\ y = \frac{1}{A}\sum_{x,y\in R}y x=A1x,yRxy=A1x,yRy
    区域重心可能不是整数
    简单描述符:区域灰度特性
  • 平均灰度:g‾=∑x,y∈Rf(x,y)\overline{g} = \sum_{x,y\in R}f(x,y)g=x,yRf(x,y)
  • 最大灰度,最小灰度,灰度中值
  • 灰度方差:σ2=1N∑x,y∈R(x−g‾)2\sigma^2 = \frac{1}{N}\sum_{x,y\in R}(x-\overline{g})^2σ2=N1x,yR(xg)2
    形状描述符
  • 形状参数:F=∣∣B∣∣24πAF = \frac{||B||^2}{4\pi A}F=4πAB2,B为区域边界长度,A为区域面积,圆形F=1,其它F>1
  • 圆形性:设边界上点到区域中心的平均距离μR=1K∑(xi,yi)∈E(R)∣∣(xi,yi)−(x‾,y‾)∣∣\mu_R = \frac{1}{K}\sum_{(x_i,y_i)\in E(R)}||(x_i,y_i)-(\overline x,\overline y)|| μR=K1(xi,yi)E(R)(xi,yi)(x,y)
    距离方差
    σR2=1K∑(xi,yi)∈E(R)(∣∣(xi,yi)−(x‾,y‾)∣∣−μR)2\sigma_R^2 = \frac{1}{K}\sum_{(x_i,y_i)\in E(R)}(||(x_i,y_i)-(\overline x,\overline y)||-\mu_R )^2 σR2=K1(xi,yi)E(R)((xi,yi)(x,y)μR)2
    则区域圆形性定义为C=μRσR2C = \frac{\mu_R}{\sigma_R^2}C=σR2μR
  • 形状描述符计算实例:
    计算结果相同,形状未必相同
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    欧拉数
  • 欧拉数:E = C - H
    等于区域联通数量减去孔的数量
    在这里插入图片描述
  • 上述4个字符的欧拉数分别为:-1,2,1,0

总结

  1. 通过链码及曲率等可以描述基于图像轮廓的特征
  2. 常见的图像区域特征描述包括面积、形状参数、圆形性、欧拉数等

图像表示与描述II

目标

  1. 掌握最小包围矩形及拟合椭圆描述
  2. 掌握图像的D-P多边形描述
  3. 了解图像的不变矩描述

一般化描述

  • 最小包围矩形(MER)
  • 离心率:最长弦A与垂直于A的最长弦B的长度比(主次轴之比)
    在这里插入图片描述
  • 椭圆拟合
    F(a→,x→)=a→⋅x→=ax2+bxy+cy2+dx+ey+f=0F(\overrightarrow a,\overrightarrow x) =\overrightarrow a\cdot \overrightarrow x = ax^2 + bxy + cy^2 + dx + ey + f = 0 F(a,x)=ax=ax2+bxy+cy2+dx+ey+f=0
  • 投影
    对区域进行水平投影和垂直投影,投影结果与对应区域大小有关
  • 多边形拟合与D-P算法
    先在边界上任取两个点,然后找区域边界线上离两点对应直线最远的点,不停找下去,指定符合要求。

不变矩

  • 首先定义归一化的不变矩
    图像f(x,y)f(x,y)f(x,y)p+qp+qp+q阶矩定义为:
    mpq=∑(xi,yi)∈RxiPyiPf(xi,yi)m_{pq} = \sum_{(x_i,y_i)\in R}x_i^Py_i^Pf(x_i,y_i) mpq=(xi,yi)RxiPyiPf(xi,yi)
p=0,q=0面积
p=1,q=0x方向的重心

f(x,y)f(x,y)f(x,y)p+qp+qp+q阶中心距定义为:
μpq=∑(xi,yi)∈R(x−x‾)p(y−y‾)qf(xi,yi)\mu_{pq} = \sum_{(x_i,y_i)\in R}(x-\overline x)^p(y-\overline y)^qf(x_i,y_i) μpq=(xi,yi)R(xx)p(yy)qf(xi,yi)
其中x‾=m10m00\overline x=\frac{m_{10}}{m_{00}}x=m00m10,y‾=m01m00\overline y=\frac{m_{01}}{m_{00}}y=m00m01,即前面定义的重心。
f(x,y)f(x,y)f(x,y)的归一化中心矩定义为:
ηpq=μpqμpqγ,γ=p+q2+1,p+q⩾2\eta_{pq} = \frac{\mu_{pq}}{\mu_{pq}^\gamma },\gamma = \frac{p+q}{2}+1,p+q\geqslant 2 ηpq=μpqγμpqγ=2p+q+1p+q2

  • 然后定义不变矩
    常用的有七个不变矩,即对平移、旋转和尺度变化保持不变。这些可由归一化的二阶和三阶中心距得到:
    ϕ1=η20+η02ϕ2=(η20−η02)2+4η112ϕ3=(η30−3η12)2+(3η21−η03)2ϕ4=(η30+η12)2+(η21+η03)2\phi_1 = \eta_{20} + \eta_{02} \\ \phi_2 = (\eta_{20} - \eta_{02})^2 + 4\eta_{11}^2 \\ \phi_3 = (\eta_{30}-3\eta_{12})^2 + (3\eta_{21}-\eta_{03})^2\\ \phi_4 = (\eta_{30}+\eta_{12})^2+(\eta_{21}+\eta_{03})^2 ϕ1=η20+η02ϕ2=(η20η02)2+4η112ϕ3=(η303η12)2+(3η21η03)2ϕ4=(η30+η12)2+(η21+η03)2

总结

掌握图像的最小外接矩形、投影、不变矩等特征,并了解直观几何意义

图像表示与描述实战演练

目标

使用OpenCV的轮廓描述函数实现区域特征分析

  • 找到目标轮廓函数
void findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset = point());
#image:单通道图像矩阵,可以是灰度图,但更经常是边缘检测算子处理过的二值图像
#contours:定义为"vector<vector<Point>>contours",是一个轮廓列表;
#hierachy:存在嵌套轮廓时,分别为第i个轮廓的后一个轮廓、前一个轮廓、父轮廓、内嵌轮廓的索引编号;
#mode:定义轮廓的检索模式,包括CV_RETR_EXTERNAL只检测最外围轮廓,CV_RETR_LIST检测所有轮廓,但不建立等级关系等;
#method:包括CV_CHAIN_APPROX_SIMPLE仅保存轮廓的拐点信息,把所有轮廓拐点处的点保存入contours等;
#offset:所有的轮廓信息相对于原始图像对应的偏移量,缺省不设置。
image, contours, hierarchy = cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]])

相关函数(Python)

  • D-P法多边形拟合
approxCurve = cv2.approxPolyDP(curve, epsilon, closed[, approxCurve])
  • 计算轮廓线长度
retval = cv2.arcLength(curve, closed)
  • 计算轮廓面积
retval = cv2.contourArea(contour[, oriented])
  • 计算轮廓包围矩形(水平的)
retval = cv2.boundingRect(array)
  • 计算轮廓包围矩形(斜的)
retval = cv2.minAreaRect(points)
  • 计算轮廓拟合椭圆
retval = cv2.fitElllipse(points)
  • Hu矩(不变矩)
Hu = cv2.HuMoments(m[, hu])

在此之前需要使用moments计算普通矩

Retval = cv2.moments(array[, binaryImage])
  • 通过不变矩比较两个形状的不同。结果越小越相似
retval = cv2.matchShapes(contour1, contour2, method, parameter)

实例:
要求:求出图中每个目标的周长、面积、拟合多边形、拟合椭圆和不变矩参数
在这里插入图片描述

import cv2img = cv2.imread('C:/python/img/detect_blob2.PNG')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#首先对图像进行阈值化
_, thr = cv2.threshold(gray, 1, 255, cv2.THRESH_BINARY)
cv2.imshow("Source Image", img)
cv2.imshow("Threshold image", thr)#进一步得到图像轮廓
cnts, hier = cv2.findContours(thr, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)
count = 0#建立拷贝用于图像显示
disp_poly = img.copy()
disp_poly2 = img.copy()
disp_elli = img.copy()
for i in range(len(cnts)):#进行多边形逼近,得到多边形角点c = cnts[i]poly = cv2.approxPolyDP(c, 5, True) #中间的数值越大,允许的拟合误差越大poly2 = cv2.approxPolyDP(c, 1, True)cv2.polylines(disp_poly, [poly], True, (255, 255, 255), 2)cv2.polylines(disp_poly2, [poly2], True, (255, 255, 255), 2)#拟合椭圆if (len(c) > 5):ellipse = cv2.fitEllipse(c)cv2.ellipse(disp_elli, ellipse, (255, 255, 255), 2)cv2.imshow("polygon fitting result", disp_poly2)#计算Hu不变性area = cv2.contourArea(c)length = cv2.arcLength(c, True)moments = cv2.moments(c)hu = cv2.HuMoments(moments)print(i+1, " : ", "length=%.1f" %length, "area=", area,"m00=%.3f, m01=%.3f, m10=%.3f, m11=%.3f" %(hu[0],hu[1],hu[2],hu[3]))#得到对应区域包围框,并在左上角显示序号x, y, w, h = cv2.boundingRect(c)cv2.putText(disp_poly, str(i+1), (x,y), cv2.FONT_HERSHEY_PLAIN, 0.8, (0xff, 0xff, 0xff))cv2.imshow("Polygon fitting", disp_poly)
cv2.imshow("Ellipse result", disp_elli)cv2.waitKey()
cv2.destroyAllWindows()

问题

  1. 完成程序,实现课程所述功能
  2. 扩展:根据计算的数字特征,区分不同形状(方形、圆形或其它)

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

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

相关文章

RISV-V未来将面临怎样的挑战?

来源&#xff1a;MoneyDJ、半导体行业观察继大陆的RISC-V联盟成立之后&#xff0c;台湾RISC-V联盟也在今年正式成立&#xff0c;这也让RISC-V的议题热度逐渐加温&#xff0c;事实上这也是许多人看好能够足以与ARM竞争的架构&#xff0c;加上目前许多国际大厂陆续采用RISC-V架构…

使用matlab程序,基于标准卡标定感压纸的压力分布

任务说明 使用富士感压纸(压力测试纸)测量压力&#xff0c;感压纸受压时会显现颜色&#xff0c;根据峰值应力呈现不同的颜色深度。感压制提供了标准比色卡&#xff0c;给出不同颜色深度对应的压力值。 要求使用matlab&#xff0c;对照标准比色卡&#xff0c;对实验中使用的比…

斯坦福大学陈丹琦等人解读机器阅读最新进展:超越局部模式匹配

来源&#xff1a;AI 科技评论不久前&#xff0c;斯坦福大学的计算机科学博士陈丹琦的一篇长达 156 页的毕业论文《Neural Reading Comprehension and Beyond》成为「爆款文章」&#xff0c;一时引起了不小轰动。而本文是她与同样师从 Christopher Manning 的同学 Peng Qi 一起发…

智能网联产业链深度报告

来源&#xff1a;智车科技未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#…

史上最全的物理学科普(值得收藏)

来源&#xff1a;中科院物理所&#xff08;ID&#xff1a;cas-iop&#xff09;本文素材主要摘录自加来道雄的《Hypersapce》和丘成桐的《The Shape of Inner Space》。作者希望凭籍本文&#xff0c;回顾一下两百年来的科学史&#xff0c;看看那些代表着人类最高心智的数学家、物…

量子通信是不是伪科学?潘建伟这样回应

来源&#xff1a;科技日报“墨子号”发射快三年了&#xff0c;到底有什么新发现&#xff1f;量子通信和公众有什么关联&#xff0c;到底是不是伪科学&#xff1f;10日&#xff0c;在全国政协十三届二次会议举行的记者会上&#xff0c;全国政协委员、中国科学技术大学常务副校长…

AI如何设计,才能人类利益最大化?

来源&#xff1a;国机智能机器人曾为现代互联网早期协议和架构设计做出贡献的Vint Cerf&#xff0c;用一个寓言来解释为什么在人工智能等新兴技术出现后&#xff0c;勇敢的领导力至关重要。想象一下&#xff0c;你住在一个被群山环绕的山谷底部的小社区里。在远处的山顶上有一块…

编译 | 5G时代的游戏世界:一年后的AR与VR将会发生的几个变化

来源&#xff1a;spectrum5G已不再是研发中的技术&#xff0c;它已经离我们非常的近&#xff0c;全球许多运营商都在都在部署这一新技术。那么我们可以从这个新一代无线系统中得到什么&#xff1f;不只是更好的智能手机服务。许多公司&#xff0c;比如德国电信&#xff0c;诺基…

《麻省理工科技评论》发布“21世纪迄今十大最糟科技”

来源&#xff1a;网络大数据必须承认&#xff0c;人类总会犯错&#xff0c;在科技的发展上也是一样。所以&#xff0c;当最新一期的《麻省理工科技评论》评出今天这份“ 2000-2019 年糟糕科技清单”时&#xff0c;你千万不要以为这是一件容易的事情。如果某项科技没有达到让人欣…

javascript Array对象

一&#xff0c;创建数组对象 JavaScript的数组支持了对任何数据类型的支持&#xff0c;并不会像java&#xff0c;C#那样指定了数组类型只能存储这种类型。 我们可以使用以下三种方法来创建JavaScript数组对象&#xff0c; 1&#xff0c;var arrnew Array(); 2 , var arrnew Arr…

67 亿美金搞个图,创建知识图谱的成本有多高你知道吗?

来源&#xff1a;算法与数学之美摘要&#xff1a;我们知道强大的深度模型需要很多计算力&#xff0c;那你知道创建一个知识图谱的成本到底是多少吗&#xff1f;德国 Mannheim 大学的研究者最近仔细估算了各种知识图谱每创建一条记录所需要的成本&#xff0c;他们表示对于大型知…

怎样修改MFC中应用程序标题的图标?

一、单文档中修改程序标题的图标 1. 切换到ResourceView视图&#xff0c;右键点击Icon&#xff0c;选择“import” ,导入图标(.ico)文件 2. 在CMainFrame中的OnCreate()函数中添加如下代码&#xff1a; //设置标题栏的图标 HICON m_hIcon AfxGetApp()->LoadIcon(IDI_ICON…

黄仁勋的“数据梦” 英伟达豪掷69亿美金虎口夺食

来源 &#xff1a; Bloomberg 编译&#xff1a;网易智能 晗冰3月12日消息&#xff0c;据国外媒体报道&#xff0c; 图形图像芯片制造商英伟达同意斥资69亿美元收购芯片制造商Mellanox&#xff0c;其欲通过此举大举进军不断增长的数据中心芯片市场。据悉&#xff0c;英伟达对Mel…

即使达到5级自动驾驶阶段,自动驾驶“卡车”也不可能完全“无人”

来源&#xff1a;IEEE编译&#xff1a;大数据文摘 李雷、周素云感谢Waymo和Uber等创业公司&#xff0c;让我们知道了无人驾驶汽车是怎么回事。这些汽车或卡车上配备了大量的传感器&#xff0c;并且依靠强大的计算能力使人们可以放心乘坐。愿景是美好的&#xff0c;但是却忽视了…

MFC中如何给对话框添加背景图片

定位到 void CXXXDlg::OnPaint()&#xff0c;在if()...else()中的else()下添加如下代码&#xff1a; else { //CDialog::OnPaint();//要禁止这个调用 CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&am…

孙正义万字访谈:AI是我现在唯一关注的事情,我是科技的绝对信徒

来源&#xff1a;腾讯科技科技变革丝毫没有减速&#xff0c;自动化就是科技的终极使命&#xff01;这是孙正义在最新采访中再次强调的理念。在接受CNBC超长采访中&#xff0c;软银创始人、千亿美元愿景基金掌舵者一再表示&#xff0c;AI能解决人类无法解决的问题&#xff0c;未…

Oracle 直方图理论

一.何为直方图 直方图是一种几何形图表&#xff0c;它是根据从生产过程中收集来的质量数据分布情况&#xff0c;画成以组距为底边、以频数为高度的一系列连接起来的直方型矩形图&#xff0c;如图所示 二.ORACLE 直方图 在Oracle中直方图是一种对数据分布情况进行描述的工具。它…

怎样把MySQL的编码方式改为utf8?

一、当我们安装好MySQL后&#xff0c;单击电脑开始&#xff0c;然后运行cmd&#xff0c;记得必须要用管理员的身份运行。然后输入net start mysql 前面操作如果忘记采用管理员身份运行的话&#xff0c;会出现系统访问错误。 二、修改MySQL的编码方式为utf8 1、找到默认MySQL的安…

要更有钱、更烧钱,OpenAI 重组,加速融资之路

来源&#xff1a;AI 科技评论OpenAI 是一个非盈利性的 AI 组织&#xff0c;他们雇佣了许多一流的研究和开发人员&#xff0c;在机器学习理论和深度学习应用方面多有诸多成果&#xff0c;我们曾经报道过的许多强化学习连续控制成果、5v5 DOTA AI「OpenAI Five」、自动生成人类水…

MFC基于单文档制作吹彩色泡泡程序

1、代码如下&#xff1a; // 吹彩色泡泡Doc.h : interface of the CMyDoc class // /#if !defined(AFX_DOC_H__559CF0A7_41F7_48A5_A356_774764C0E60F__INCLUDED_) #define AFX_DOC_H__559CF0A7_41F7_48A5_A356_774764C0E60F__INCLUDED_#if _MSC_VER > 1000 #pragma once #e…