一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

图形分析方法与流程

2022-03-16 02:01:19 来源:中国专利 TAG:

1.本发明涉及电子数据处理领域,具体为一种图形分析方法。


背景技术:

2.对医学图像进行深入分析,挖掘数据是目前较为热门的研究课题,尤其是对于一些实验动物,因为眼球小,无法用常规测量方法进行测量,只能通过拍照的方式获取图像。在对图像进行数据分析中,可以通过图像中的参照物体,比较标尺,来获得对应的换算系数,从而可以得出图像真实的距离,在图像处理技术中,以边缘检测和曲线拟合技术应用最为广泛,边缘检测包括canny算子,sobel, prewitt, log等多种算法,其中,尤以canny算法应用最为广泛,通过边缘检测获取图像的边缘信息,就可以将边缘信息,拟合成一种已知的几何图形,比如圆或者椭圆。曲线拟合常用的包括二项式拟合,多项式拟合,圆拟合,以及圆锥曲线拟合,圆锥曲线拟合方程的优点即在于可以拟合倾斜的椭圆,这样就可以根据几何原理,进一步的计算出圆心点,长短轴,倾斜角,离心率,椭圆面积及周长等许多有用的信息。


技术实现要素:

3.为了克服现有技术的缺陷,提供一种精度高、效率高的图形分析手段,本发明公开了一种图形分析方法。
4.本发明通过如下技术方案达到发明目的:一种图形分析方法,对图像进行拍照,根据图像中的标尺进行像素及实际距离换算,其特征是:按如下步骤依次实施:i. 确定换算系数:打开要分析的图片,确定图片的分辨率,以x
×
y表示,其中x为长度方向的像素数,y为高度方向的像素数,取图片中一点设为原点,建立一个以图片长度方向为x轴、图片高度方向为y轴的直角坐标系,图片上的每一个点都确定一个唯一的坐标(x,y),在图片上截取一段线段ab,设线段ab两个端点的坐标分别为(xa,ya)和(xb,yb),则可解出线段ab所在直线的斜率k、截距b和以像素表示的长度d,并确定直线ab的方程y=kx b,用刻度尺量出线段ab的实际长度l,计算得线段ab的实际长度l和像素长度d之间的换算系数k,k=l/d;ii. 边缘检测:边缘检测选用如下ii.1~ii.3中的任意一种:ii.1 圆拟合:在图片上选取至少六个边缘点,拟合出一个圆o,各个边缘点到圆o圆周的距离的平方和最小,以圆o作为图像边缘;圆拟合可采用如下代码实现:def contcalls(fn):"decorator function count function calls"
@functools.wraps(fn)def wrapped(*args):wrapped.ncalls = 1return fn(*args)wrapped.ncalls = 0return wrappeddef calc r(xc,yc):return sqrt((x-xc)**2 (y-yc)**2@countcallsdef f_2(c)ri=calc_r(*c)return ri=ri.mean()ii.2 椭圆拟合:在图片上选取至少六个边缘点,拟合出一个椭圆o',各个边缘点到椭圆o'圆周的距离的平方和最小,同时确定椭圆o'的长半轴和短半轴,以椭圆o'作为图像边缘;椭圆拟合可采用python语言cv2模块中的fitellipse函数实现。
5.ii.3 自动拟合:根据图像边缘两侧像素的色差,确定图像边缘。
6.所述的图形分析方法,其特征是:边缘检测选择自动拟合时,色差的阈值取20~25。
7.本发明解决了目前对医学图像科研分析的技术空白,具有精度高、效率高的优点。
附图说明
8.图1是本发明的流程示意图,图2~图57是本发明使用时的界面图。
具体实施方式
9.以下通过具体实施例进一步说明本发明。
10.实施例1一种图形分析方法,如图1所示,按如下步骤依次实施:i. 确定换算系数:对图像进行拍照,根据图像中的标尺进行像素及实际距离换算,打开要分析的图片,确定图片的分辨率,以x
×
y表示,其中x为长度方向的像素数,y为高度方向的像素数,取图片中一点设为原点,建立一个以图片长度方向为x轴、图片高度方向为y轴的直角坐标系,图片上的每一个点都确定一个唯一的坐标(x,y),在图片上截取一段线段ab,设线段ab两个端点的坐标分别为(xa,ya)和(xb,yb),则可解出线段ab所在直线的斜率k、截距b和以像素表示的长度d,并确定直线ab的方程y=kx b,用刻度尺量出线段ab的实际长度l,计算得线段ab的实际长度l和像素长度d之间的换算系数k,k=l/d;ii. 边缘检测:
边缘检测选用如下ii.1~ii.3中的任意一种:ii.1 圆拟合:在图片上选取至少六个边缘点,拟合出一个圆o,各个边缘点到圆o圆周的距离的平方和最小,以圆o作为图像边缘;ii.2 椭圆拟合:在图片上选取至少六个边缘点,拟合出一个椭圆o',各个边缘点到椭圆o'圆周的距离的平方和最小,同时确定椭圆o'的长半轴和短半轴,以椭圆o'作为图像边缘;ii.3 自动拟合:根据图像边缘两侧像素的色差,确定图像边缘,色差的阈值取20~25。
11.参数计算可采用如下代码实现:import tkinter as tkfrom pil import imagetk, imagefrom tkinter import ttkfrom tkinter import scrolledtextfrom tkinter import menufrom tkinter import spinboxfrom tkinter import messagebox as mboximport osimport numpy as npimport win32apifrom pil import imagecolor # 用来画线的颜色from tkinter import end #光标定位到最后import cv2from numpy inport *from pylab import *from scipy import optimizeimport functoolsfrom matplotlib import pyplot as plt, cm, colorsimpor numpy as npimport matplotlib.pyplot as plt
12.以下作具体陈述。
13.一、确定换算系数:打开要分析的图片,如图2和图3所示。
14.这个分辨率3120*4208的图片,相当于放在了一个坐标系里,x是0-3120,y是0-4208,图片中的每一个点,都有一个固定的坐标点(x,y),放在坐标轴里,进行数据运算。
15.把图像放大,然后在软件实际距离的地方,写3,就代表要在图片上3mm的位置上取两个点,如图4和图5所示。
16.当在3mm的地方点两个点后,左侧的软件,会显示两个点的坐标,并进一步计算两点间的距离,是152.71像素,如图6所示。
17.这样,就获得了这个图像的1mm实际距离与像素距离的换算系数k=0.0196。
18.为了确保精确,可以多测量几次,然后,把这个系数填到换算系数的选框中。
19.这时,重新打开图像,点距离角度那个按键,点两个点,就可以测量出,这只豚鼠的睑裂长度是8.96mm,倾斜角度是159.2度,这条直线方程是:y=-0.38x 2860.0,如图7~图9所示。
20.同样,用这个方法,以一个视乳头直径为单位,可以测量出,黄斑和视盘的距离,是2.63个pd。可知,这个眼球的倾斜度是外旋5.1度,如图10~图12所示。
21.这个方法可以用来测量房角度数,前房深度,角膜厚度,瞳孔直径等,如图13所示。
22.这种测量方法的优点在于,光学非接触式测量,测量的精确程度,取决于相机的像素,可达千万像素。
23.在下面的标尺的中间和旁边分别取系数,系数在中间和周边都是0.0249~0.0251,这样算下来,误差不超过0.01mm,可以忽略不计,如图14~图16所示。
24.放大后,这个刻度尺1mm相当于39.84像素,换算后,取点的1像素,仅仅相当于0.0251mm,通过这种方法,图片的精度可以达到微米极别。
25.由于图像是以像素为单位的,因此,甚至可以通过图片,大致了解到角膜的泪膜,上皮层,前弹力层,基质层、后弹力层及内皮层的比例关系正常构成比例如图17所示。
26.测量出来的数据,可以复制到记事本中,随时保存数据,如下所示:分析结果:圆拟合:像素半径r=178
ꢀꢀ
圆心坐标(x,y)====》》(372,1596)系数换算:真实半径r=3.99
ꢀꢀ
圆的曲率k=84.59圆拟合:像素半径r=174
ꢀꢀ
圆心坐标(x,y)====》》(1872,1569)系数换算:真实半径r=3.92
ꢀꢀ
圆的曲率k=86.1
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
分析结果:圆拟合:像素半径r=770
ꢀꢀ
圆心坐标(x,y)====》》(802,-57)系数换算:真实半径r=7.71
ꢀꢀ
圆的曲率k=43.77圆面积为:186
ꢀꢀ
圆周长为:48===========================================
27.二、边缘检测:2.1 圆弧拟合:接下来,要做的是,做圆弧拟合,测量角膜曲率和曲率半径。
28.如图18所示。
29.经过测量,这只豚鼠的角膜垂直曲率是:右眼曲率半径 r=3.99mm
ꢀꢀ
角膜曲率 k=84.59,
左眼曲率半径 r=3.92mm
ꢀꢀ
角膜曲率 k=86.1。
30.方法演示如下:打开一张眼前节oct的图片,因为没有参照,假定,瞳孔的直径是3.5mm,这样,获得了换算的系数。如图19和图20所示。
31.在拟合类型中,选散点拟合,再调好线的粗细,然后点散点数据按钮,在中央3mm的位置,取12个点,然后点圆拟合,如图21~图25所示。
32.如果没有换算系数,就选否,结果以像素为单位表达,有的话就选是,以mm为单位表达,如图26所示。拟合结果如下所示:圆拟合:像素半径
ꢀꢀ
r=770
ꢀꢀ
圆心坐标(x,y)====》》
ꢀꢀ
(802,-57)系数换算:真实半径
ꢀꢀ
r=7.71
ꢀꢀ
圆的曲率
ꢀꢀ
k=43.77圆面积为:186
ꢀꢀ
圆周长为:48
33.最后,结果显示,该角膜的曲率为43.77,曲率半径为7.71,比较接近实际。
34.测量的准确程度,得看这个oct图像有没有失真,不准的话可以用电脑验光作为金标准,就可以测算出系统偏差,之后只要换算就可以拿来做实验数据分析了。如图27所示。
35.同样,可以精确地计算出:这个豚鼠眼球的角膜曲率是95.61,曲率半径是3.53mm。顺便还可以算一下豚鼠的瞳孔直径,是2.39mm,如图28和图29所示。
36.瞳孔直径可以用来做药物敏感实验。
37.2.2 椭圆拟合:因为多数的曲线,都是斜椭圆,椭圆因为有对称轴,圆心和离心率,可以计算更多的有用信息,尤其是对于像眼球这样的圆弧,可以计算倾斜角。如图30所示。
38.获取角膜边缘信息后,点椭圆拟合,就可以拟合。如图31所示。
39.分析结果如下:拟合的椭圆圆心坐标为:====》》x=848.4,y=1849.8倾斜角-1为====》》2.9000000000000057倾斜角-2为====》》92.9倾斜角方向请自行调整对称轴直线方程-1为====》》y=0.051x-1893.089对称轴直线方程-2为====》》y=-19.758x 18620.39===========================================
40.经分析,椭圆的对称轴是92.9度,也就是说:这个眼前节oct反映的眼球的视轴与眼轴之间,有2.9度的夹角。
41.通过这种方法,就可以计算kappa角,旁中心注视。
42.视轴是瞳孔中央到黄斑中心凹的连线,眼轴是垂直角膜中央的光线,两者之间的夹角就是kappa角。
43.这张b超图上,同样能看到光轴与视轴的夹角为5.5度。
44.这个方法可以对实验动物的眼球进行精确评估,不用担心接触压迫,可以计算出
眼球的最长处,最短处,以及眼球的角度,如下所示:对称轴直线方程-2为====》》y=-0.679x 510.868===========================================双轴长度为(实际)====》》9.09.2e值为====》》0.22椭圆面积为(实际)====》》64.5椭圆周长为(实际)====》》28.6
45.通过椭圆拟合,可以算出,这个豚鼠眼球冠状面上的倾斜角是34.19度,眼球最长的直径为9.2mm,最短处为9.0mm,整个眼球的e值是0.22,眼球的横截面积是64.5mm2,如图32所示。
46.分析结果:拟合的椭圆圆心坐标为=====》》 x=776.3, y=952.8倾斜角-1为=====》》 0.4000000000000057倾斜角-2为=====》》 90.4对称轴直线方程-1为=====》》 y=0.007x-958.234对称轴直线方程-2为=====》》 y=-149.764x 117214.593===================================双轴长度为(实际)=====》》6.98.8e值为=====》》 0.62椭圆面积为(实际)=====》》 48.0椭圆周长为(实际)=====》》 25.5===================================还可以对活体豚鼠的眼位进行观测。如图33所示。
47.可以评估眼球的张开角,可以看出来豚鼠作为啮齿类动物,眼球和人眼还是有很大差别的。
48.在人眼上,同样可以根据椭圆的对称轴角度来评估斜视的眼位,通过椭圆的离心率来判断斜视度。如图34所示。
49.可以通过离心率来评估眼球的偏斜角膜,如图35所示。
50.2.3 自动拟合:上述方法,用的是手动取点的方法获取边缘数据,这种方法优点在于方便,简单,缺点是存在人为误差,每次取点不同,结果就会有偏差。自动拟合技术可以达到更高精确度的,且无需人为干扰的自动检测。自动拟合的前提是图片的边缘要足够清晰。
51.把拟合类型切换到边缘检测,边缘检测的默认方法是自动拟合,在阈值选项填20,点边缘检测,如图36和图37所示。
52.自动拟合的结果如图38所示,可以清晰看到眼球的边缘。
53.这个阈值调得低了,边缘就会比较多,阈值取2时如图39所示。
54.调得高了,阈值取40如图40所示。
55.最大是255,为全黑效果,最低是0,为全白效果。
56.阈值过高或过低都将无法自动拟合,一般取20~25。
57.把图片放到photoshop里,用橡皮擦处理一下,就可得到想要的物体的边缘,如图41所示。
58.图像边缘的图形必须连续,不能分段,否则会导致拟合失败。
59.把处理好的图片,放在边缘图片选项里,点边缘数据,就可以获得该物体的边缘数据。如图42所示。
60.自动拟合法的结果更加精确,最主要的是不会受人为因素的干扰,保留提取边缘的图片之后,每次的检测结果都是固定的。
61.如果边缘足够清晰,推荐优先使用这种方法。
62.再点拟合,就同样可以得到拟合图片了:如图43和图44所示。
63.这个拟合线段,是可以调整线的粗细的。
64.以鸡蛋图形为例:这个鸡蛋的尖头的e值是0.79,圆头是0.58,也就是说,左边是高e值,右边是常规e值,角膜的离心率,对于验配ok镜是重要的指标。如图45所示。
65.三、不规则图形:不规则图形的面积、周长、中心点、极点、外切圆、倾斜角和质心点,如图46所示的电镜中的不规则部分。
66.第一步,根据1um的刻度,先获取换算系数0.0017,再把图片的非目标部分在photoshop里用魔棒去除掉,如图47所示。
67.做成黑白图片更好,如图48所示。
68.这里需要注意的是,边缘不能太锐利,不能有尖角,否则会拟合失败。如图49所示。
69.把处理过的图片放在图片处理的选项中,点一下按键,就完成了。如下所示:边界点为====》》
ꢀꢀ
左侧:(619,1820)
ꢀꢀ
右侧:(3647,2085)边界点为====》》
ꢀꢀ
上方:(3059,2696)
ꢀꢀ
下方:(2129,1289)最小内切圆心坐标为====》》
ꢀꢀ
(2131,2002)拟合直线方程为====》》
ꢀꢀ
y=0.15x 1369选取的图形倾斜角为====》》
ꢀꢀ
8.5
°
所选图形的实际面积为====》》
ꢀꢀ
7.99724846所选图形的实际周长为====》》
ꢀꢀ
13.906357055最小内切圆半径为====》》
ꢀꢀ
2.5907999999999998水平距离为====》》
ꢀꢀ
5.1476垂直距离为====》》
ꢀꢀ
2.3918999999999997
70.这个不规则图形的最小内切圆,圆心点,图形质心点,左右上下4个极点,最佳拟合直线,都清清楚楚地显示了出来。如图50所示。
71.如图51所示:这个电镜里的图形的面积是7.99724846um2,周长是13.906357055um,倾斜角是8.5度,
水平最长距离是5.1476um,垂直最远距离是2.39um。
72.这个功能,还可以用于测病毒性角膜炎的浸润进展程度。如下所示:边界点为====》》左侧:(271,242)
ꢀꢀ
右侧:(498,151)边界点为====》》上方:(337,356)
ꢀꢀ
下方:(400,82)最小内切圆心坐标为====》》(378,220)拟合直线方程为====》》y=-2.12x 3877选取的图形倾斜角为====》》115.3
°
所选图形的实际面积为====》》2.99562416所选图形的实际周长为====》》29.919153957最小内切圆半径为====》》1.8602水平距离为====》》2.9737垂直距离为====》》3.5894000000000004
73.可以对角膜溃疡这样的不规则图片进行精确分析。如图52和图53所示,分析结果如下所示:边界点为====》》左侧:(267,310)
ꢀꢀ
右侧:(416,315)边界点为====》》上方:(341,359)
ꢀꢀ
下方:(347,273)最小内切圆心坐标为====》》(341,314)拟合直线方程为====》》y=0.05x 223选取的图形倾斜角为====》》2.9
°
所选图形的实际面积为====》》21.87647352所选图形的实际周长为====》》22.285940032最小内切圆半径为====》》3.5963999999999996水平距离为====》》7.2414垂直距离为====》》4.1796边界点为====》》左侧:(246,329)
ꢀꢀ
右侧:(437,305)边界点为====》》上方:(339,394)
ꢀꢀ
下方:(353,249)最小内切圆心坐标为====》》(341,317)拟合直线方程为====》》y=-0.07x 326选取的图形倾斜角为====》》176.0
°
所选图形的实际面积为====》》48.46505724所选图形的实际周长为====》》31.648817601最小内切圆半径为====》》4.6655999999999995水平距离为====》》9.282599999999999垂直距离为====》》7.047。
74.通过这种方法,可以对浸润的范围,方向做精确的判定。
75.这张高血压眼底图片,现计算颞上方血管的长度,按如下步骤实施:如图54所示。
76.先做边缘检测,露出大血管边缘,如图55~图57所示。
77.以视乳头的竖立距离为单位,计算出血管的周长是20.96pd,除以2,就可以得出,
血管的长度是10.48pd。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献