CN1687966A - 图形图像数据信息提取方法 - Google Patents
图形图像数据信息提取方法 Download PDFInfo
- Publication number
- CN1687966A CN1687966A CN 200510013427 CN200510013427A CN1687966A CN 1687966 A CN1687966 A CN 1687966A CN 200510013427 CN200510013427 CN 200510013427 CN 200510013427 A CN200510013427 A CN 200510013427A CN 1687966 A CN1687966 A CN 1687966A
- Authority
- CN
- China
- Prior art keywords
- coordinate
- data message
- graph image
- data information
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
一种图形图像数据信息提取方法,将图形图像文件导入(BMP文件,如是纸质文件,扫描生成BMP文件)本程序,显示在计算机屏幕上,用户通过鼠标操作选择需要采取数据信息的位置(取点过程中可随意对图形图像进行缩小、放大和平移),程序自动记录取样点数据信息(屏幕坐标和取样点的其它信息)。取样完成后,程序将屏幕坐标转换成实际坐标。本发明的优点在于:这个工作现在一般是手工完成,而手工操作枯燥、低效、耗时,不精确、出错率高;本发明通过计算机完成,极大地提高提取工作的效率和数据信息精度。实现坐标信息精确提取,保证已取点在随后的图形图像操作中(放大、缩小、平移),与原图上该点的匹配显示,具备用户友好的操作界面。
Description
技术领域
本发明涉及图形图像数据信息提取的方法,特别涉及一种不少于三个已知坐标数据的图形图像进行数据信息提取的方法,在用户通过鼠标选取位置的情况下,程序计算得到该位置坐标。
背景技术
科研和生产实践工作中,常常需要从图形图像中提取大量数据信息,这个工作现在一般是手工完成,而手工操作枯燥、低效、耗时,不精确、出错率高。本发明设计程序、开发软件,通过计算机完成,极大地提高提取工作的效率和数据信息精度。
发明内容
本发明的目的在于提供这样一种图形图像数据信息提取的方法:将图形图像文件导入(BMP文件,如是纸质文件,扫描生成BMP文件)程序,显示在计算机屏幕上,用户通过鼠标操作选择需要采取数据信息的位置(取点过程中图形图像可随意缩小、放大和平移),软件自动记录取样点数据信息(屏幕坐标和取样点的其它信息)。取样完成后,程序将屏幕坐标转换成实际坐标。
本发明提出的目的通过以下方案来实现:
一种图形图像数据信息提取方法,用于接收作为提取对象的数据信息的图形图像文件的输入,对数据信息进行提取并给出数据信息的位置的坐标,所述方法包括:
a.用鼠标操作选择需要采取数据信息的位置,以及
b.对采取数据信息的位置进行与图形图像的匹配显示、计算采取数据信息的位置的坐标。
对用鼠标操作选择需要采取数据信息的位置采用了这样的方法:用操作DIB的Win32 API函数在计算机屏幕上显示带有数据信息的图形图像位图文件,用鼠标操作选择需要采取的数据信息的位置,程序记录该位置。
对采取数据信息的位置进行与图形图像的匹配显示采用了这样的方法:在所述的程序记录位置时,用到两个二维动态链表,一个记录该位置在位图文件输入时,其对应的图上坐标,随后程序绘制该坐标位置时,计算图上坐标转换后的坐标;另一个链表用于保存。
计算采取数据信息的位置的坐标采用了这样的方法:所述的在计算机屏幕上显示的带有数据信息的图形图像位图文件的图像上通过鼠标选取三个已知图上坐标的参考点,通过参考点坐标对话框输入实际坐标,则所有采取数据信息的坐标位置的图上坐标和实际坐标的映射关系都满足三个参考点的映射关系。
用户通过鼠标操作选择需要采取的数据信息的位置或将已选择的位置删除是个动态随机过程,程序将已选择的位置的坐标记录于动态二维链表中,实现鼠标操作选择需要采取的数据信息的位置或删除已选择的位置的随机性。
将所述三个参考点的图上及实际X、Y坐标联立,得到包含六个未知系数和六个线性方程的方程组,求解该方程组,得到六个系数,分别代入各数据点的实际坐标与图上坐标的映射关系式中,就能求得每个数据点对应的实际坐标。方程组如下:
x1=A*x01+C*y01+Ly1=B*x01+D*y01+Mx2=A*x02+C*y02+Ly2=B*x02+D*y02+Mx3=A*x03+C*y03+Ly3=B*x03+D*y03+M |
其中(x01,y01)、(x02,y02)、(x03,y03)分别为三个参考点的图上坐标,(x1,y1)、(x2,y2)、(x3,y3)分别为三个参考点的实际坐标,A、B、C、D、L、M为需求解的未知的系数。
所述的图形图像文件为BMP位图文件。
本发明的有益效果:
1、本发明针对在科研和生产实践中,从图形图像中提取数据(信息)的工作极其频繁、工作量极大这一实际情况,采用计算机技术(如C++编程技术),设计开发软件,使用户从过去“手工提取”中解放出来,提高提取工作的效率和数据信息精度。
2、本发明解决对鼠标操作已选择位置在随后的图形图像操作中(放大、缩小、平移),与原图上该位置的匹配显示。
3、将坐标信息精确提取在程序中进行实现,可移植性强。对任何一个包含数据信息的图像文件都可以将其数据提取出来。
附图说明
图1是本发明所述方法的流程图。
图2是位图读入及显示程序示意图。
图3是二维动态链表说明图。
具体实施方式
下面结合附图和并非特定的实施例来对本发明作更详尽的说明。
实施例1
下面将以BMP位图文件为例来对本发明做出更详细的说明。
Windows操作系统下有两大类位图格式——GDI(Graphics Device Interface,图形设备接口)位图和DIB(Device-Independent Bitmaps,设备无关位图)。在MFC(MicrosoftFoundation Class,微软基本类库)6.0版中,GDI位图对象被封装在CBitmap类中。由于该类使用一种与Windows GDI模块有关的Windows数据结构,因此具有设备相关性。即使程序得到位图数据的一个拷贝,其位(bit)安排仍是依赖于显示硬件的。因此,在同一台计算机中GDI位图可以自由地在不同程序中传输,但由于其设备依赖性,使得其通过磁盘或网络在不同类型计算机之间的传输变得毫无意义。
DIB则在程序设计方面提供许多超越GDI位图的优势:DIB本身携带有自己的颜色信息,使颜色调配管理变得更加简单;任何运行Windows操作系统的计算机均可处理存储于BMP文件或可执行文件内部资源中的DIB;尽管TIFF、GIF或JPEG等格式的图像文件在转换后也可以被使用,但却只有采用DIB格式的文件被Win32 API所直接支持;虽然在Win32中允许在不同进程之间通过传递GDI位图句柄到剪贴板进行位图的传递,但在后台所进行的操作却是借助DIB来完成的——将设备相关的GDI位图转换成一个DIB,并将此DIB复制到一段共内存。从中可以明显看出,相对设备独立的DIB较之GDI位图有着明显的优势,因此,本软件图像操作部分的程序实现代码均以DIB作为处理对象。
BMP文件是DIB中比较典型的一种,其文件格式可分为两大部分:文件头部分和象素点阵部分。文件头包含DIB的结构数据,并可进一步分为三段。
文件头第一部分是位图文件头结构BITMAPFILEHEADER,在wingdi.h中定义如下:
typedef struct tagBITMAPFILEHEADER{//bmfh
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
}BITMAPFILEHEADER;
其长度固定为14字节。第一个数据成员bfType固定为Ox424D(ASCII码“BM”),用来标识本文件为BMP位图文件。数据成员bfSize记录此位图文件的实际长度。bfReserved1和bfReserved2为保留字,通常为0,一般不予考虑。最后的bfOffBits为位图阵列相对于文件头的偏移距离。
第二部分是位图信息头结构BITMAPHEADER,也是在wingdi.h中定义的,其内部成员较多,主要记录DIB的尺寸和颜色格式等信息,完整定义如下:
typedef struct tagBITMAPINFOHEADER{//bmih DWORD biSize LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount; DWORD biCompression; DWORD biSizelmage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; }BITMAPINFOHEADER;
其中,成员biSize为该结构长度,固定为40字节。biWidth和biHeight分别保存DIB的宽度和高度。biPlanes描述目标设备的位面个数,必须为1。biBitCount记录图像的位深度,可选值为1(单色位图)、4(16色位图)、8(256位图)、16(16位增强色位图)、24(24位真彩色位图)和32(32位真彩色位图)。BiCompression指定图像的压缩格式,有效值分别为BI_RGB、BI_RLE8、BI_RLE4、BI_BITFIELDS和BI_JPEG等,一般情况下置为BI_RGB不压缩模式。成员biSizeImage为位图阵列的大小。biXPelsPerMeter和biYPelsPerMeter指定目标设备的分辨率。biClrUsed指定图像中实际用到的颜色数,如果为零,则使用的颜色与位深度指定的相一致。最后的成员biClrImportant如果非零,则指定图像中相对重要的颜色数。
最后一段用于存放图像的调色板(又称颜色分配表,color table),因此对于不需要调色板支持的16位、24位和32位位深度图像的头文件中将没有该段,在前两段之后直接为象素阵列数据。而对于16位以下的图像,该段为一个长度为biClrUsed的RGBQUAD结构数组。其中RGBQUAD结构定义如下:
typedef struct tagRGBQUAD {//rgbq
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
}RGBQUAD;
结构的前三个成员分别为颜色的蓝、绿、红分量,rgbReserved为保留值,通常为0。
在此之后便是图像的象素点阵序列,根据位深度的不同有着不同的定义。对于位深度在16位以下的图像为颜色的索引值;对于16位、24位和32位的则存放着图像实际的R、G、B各分量值。即使是真彩位图,由于位深度的不同其阵列结构也是有区别的。16位位深度的图像采用“565”的组织方式,即以两个字节存放一个RGB单元:RRRRRGGG(高字节)GGGBBBBB(低字节)。24位位深度图像则恰好可以用三个字节存放一个完整的RGB单元,因此在对象素进行操作时,可以很方便地按字节进行处理而不必进行位运算。32位位深度的位图构成原理也比较简单,它是将一个颜色字拓展成一个双字来实现的,比如,上述16位位深度的图像存放有一个完整RGB颜色的两个字节,在转换成32位位深度位图后就被拓展为00000RRRRRR00000 GGGGGG00 000BBBBB。
本发明在图像处理部分中,将注意力集中在图像处理的算法实现上,封装Windows系统提供的一些重要的DIB访问函数,建立一个实现DIB主要操作功能的类。在进行图像处理编程时,只需通过该类提供的公有型(public)接口函数调用,即可实现与之相关的功能。
基本函数有五个:SetDIBitsToDevice()、StretchDIBits()、GetDIBits()、CreateDIBitmap()和CreateDIBSection(),分别用于显示打印DIB、拉伸显示DIB、从GDI位图构造DIB、从DIB创建GDI位图以及创建DIB项(一种特殊的DIB)。
SetDIBitsToDevice()函数负责将DIB直接显示到屏幕或输出到打印机,而不进行任何缩放处理。函数原型在wingdi.h中声明如下:
int SetDIBitsToDevice( HDC hdc, //设备上下文句柄 int XDest, //目的区域左上角X坐标 int YDest, //目的区域左上角Y坐标 DWORD dwWidth, //源BIB宽度 DWORD dwHeight, //源DIB高度 int XSrc, //源DIB左上角X坐标 int YSrc, //源DIB左上角Y坐标 UINT uStarScan, //指定DIB扫描的起始行 UINT cScanLines, //指定扫描行数 <!-- SIPO <DP n="5"> --> <dp n="d5"/> CONST VOID*lpvBits, //指向DIB数据图像的指针 CONST BITMAPINFO*lpbmi, //指向位图信息结构的指针 UINTfuColorUse //指定使用的是RGB还是调色//板索引 );
拉伸显示函数StretchDIBits()对DIB进行拉伸变换后再显示到显示器或输出到打印机。函数原型如下:
int StretchDIBits( HDC hdc, //设备上下文句柄 int XDest, //目的区域左上角X坐标 int YDest, //目的区域左上角Y坐标 int nDestWidth, //目的区域宽度 int nDestHeight, //目的区域高度 int XSrc, //源DIB左上角X坐标 int YSrc, //源DIB左上角Y坐标 int nSrcWidth, //源DIB宽度 int nSrcHeight, //源DIB高度 CONST VOID*lpBits, //指向DIB数据图像的指针 CONST BITMAPINFO*lpBitsInfo, //指向位图信息结构的指针 UINT iUsage, //指定使用的是RGB还是调//色板索引 DWROD dwRop //指定绘制方式 );
如果参数nSrcWidth和nDestWidth的符号或是参数nSrcHeight和nDestHeight的符号不同,那么函数StretchDIBits()将创建一个原位图的镜像。具体而言,如果只有参数nSrcWidth和nDestWidth的符号不同,将沿X轴创建镜像;类似地,如果只有参数nSrcHeight和nDestHeight的符号不同,将沿Y轴创建镜像。
到目前为止,Microsoft一直没有将有关DIB的API函数封装进MFC,这样在进行面向对象(OOP)的程序设计时将十分不便。作者在此部分编程实现时,主要参阅参考文献《数字图像处理学Visual C++实现》(朗锐编著,北京希望电子出版社,2003年1月第1版,ISBN7-89498-026-9)提供的相关程序代码。本发明的软件源程序中附有详细的注释说明。
Microsoft提供的MFC封装Windows API,是一个面向对象的封装的C++类库。MFC 6.0版本封装大约200个类,其中一些可以被用户直接使用,而另一些则主要作为用户自己的类的基础类。MFC是一个应用程序的框架结构。它不仅仅是一个类的集合,还帮助定义应用程序的结构并为应用程序处理许多杂务。框架结构提供了抽象功能,它远远地超出Windows API的功能。
本发明的程序基于MFC类库,调用前述DIB类,即可实现BMP位图的显示;在恰当的消息函数中改变调用DIB类对象函数的参数,实现位图的缩放、平移。在此基础上,编程实现其它操作,如鼠标点击(获取数据信息)、数据信息记录、转换坐标计算、以及已取点在随后的图形图像操作中(放大、缩小、平移),与原图上该点的匹配显示等。
对图形图像数据信息进行提取最终要归结到对BMP位图的处理上来,程序基本功能如下所述:
在MFC Wizards自动生成的单文档程序中,添加前述DIB类,并在该单文档程序的文档类对象(名为CBMPDoc)中实例化DIB类,对象名为m_DIB。在CBMPDoc类对象的成员函数OnOpenDocument()中调用m_DIB对象的读入DIB文件成员函数,实现该单文档MFC程序中读入位图文件。
读入位图文件后,显示工作由MFC CView类的派生类对象CBMPView完成。MFC程序窗口视图区的绘制由CBMPView类对象的成员函数OnDraw()实现。在CBMPView类对象的成员函数OnDraw()中,首先调用CBMPView类对象的成员函数GetDocument(),得到指向CBMPDoc类对象的指针,用该指针指向CBMPDoc对象中的m_DIB对象,再在OnDraw()函数中用指向m_DIB的指针调用DIB类的显示成员函数,即可实现位图的显示。如说明书附图2所示。
进行位图的缩放、平移操作时,在MFC程序菜单项中添加新的菜单,并在工具栏里绘制相应新的工具按钮,分别对应缩放因子变量和X、Y轴平移象素变量。仍在CBMPView类对象的OnDraw函数中,改变传入m_DIB的显示函数的参数,则DIB类调用封装的Win32 API函数StretchDIB(),实现位图的缩放;或者改变绘制位图的区域的坐标,实现位图的平移。程序及注释如下:
CBMPDoc*pDoc=GetDocument(); //得到CBMPDoc的指针ASSERT_VALID(pDoc);CRect m_Rect;GetClientRect(m_Rect); //得到当前视图区的大小int Draw_Left,Draw_Top; //绘制DIB左上角坐标Draw_Left=(m_Rect.Width()-int(pDoc->m_Dib.Width()*amplifier))/2+x_move;//计算左上角X坐标,m_Rect.Width()为当前视图区的宽度,//pDoc为指向CBMPDoc的指针,pDoc->m_Dib.Width()得到DIB的宽度,//amplifier为定义的缩放因子,x_move为X方向平移距离Draw_Top=(m_Rect.Height()-int(pDoc->m_Dib.Height()*amplifier))/2+y_move;//同上个注释,计算左上角Y坐标pDoc->m_Dib.Draw(pDC,Draw_Left,Draw_Top,amplifier);//绘制DIB |
用鼠标托拽实现位图的平移操作时,首先定义一个bool型状态变量,当用户点击平移操作的菜单选项或相应工具栏按钮后,该状态量值为true,在CBMPView类对象的消息函数OnLButtonDown()(代表鼠标左键按下)中,记录当前单击点的坐标,并用函数捕捉鼠标的运动(函数的详细情况请见程序清单);按下鼠标左键并且鼠标移动(托拽)过程中,CBMPView类对象的消息函数OnMouseMove()响应该过程,检测是否捕捉鼠标,并由OnLButtonDown()函数中记录的单击点坐标,计算变化的平移距离变量x_move及y_move的值,即时刷新(Invalidate()函数)显示,便能显示位图随鼠标的托拽移动位置;最后,松开鼠标左键,消息函数OnLButtonUp()函数响应该过程,解除捕捉鼠标,完成一次鼠标托拽平移位图的操作。
由于用户添加曲线、选择数据点及删除数据点的操作是个动态随机过程,不可能预先知道用户将选取、删除多少个数据点或添加多少条曲线,所以数据点的存储用二维链表来实现,链表结构如说明书附图3所示。
链表由类构成,每个结点为一个类对象。该类中包括一个用户自定义类型的数据域data,在本软件中定义为CPoint类型;两个该类的指针,一个指向下一“行”的结点对象,另一个指向下一“列”的结点对象。
链表包括表头指针*first,其数据域data置零,“行”指针指向第一“行”,“列”指针(元素指针)指空(NULL);每一行的头结点的数据域也置零,“行”指针指向下一“行”的头结点,元素指针指向该“行”第一个结点;各“行”中所有结点的“行”指针都指空,元素指针指向该“行”下一个结点,数据域存储CPoint类型数据;如果是“行”内最后一个结点,则其“行”、“列”指针都指空;最后一“行”的头结点被指针*cur_row指向,表明该“行”为链表最后一行,该行最后一个结点被指针*cur_ele指向,表明该结点为链表最后一行最后一个结点。
该链表的类定义及注释如下:
class ChainNode{ //头结点类定义friend Chain:private:CPoint data; //data areaChainNode*row,*ele; //pointer of the row and elementpublic:ChainNode():row(0),ele(0){}};class Chain{private:ChainNode*first,*cur_row,*cur_ele; //first,current row,public: // current element pointerChain();~Chain();void add_ele(const CPoint & point); //add element in current rowvoid add_row(); //add a rowvoid del(const CPoint & point); //deleteint get_row_num(); //count the number of rowsint get_ele_num(const int & row); //count the number of element// in current rowCPoint& out(const int& i,const int&j); //output the element at(x,y)}; |
基于该二维动态链表,在MFC程序的响应函数中调用链表相应的成员函数,就能动态实现曲线、数据点的添加以及删除操作。
添加曲线时,相当于在二维链表中添加新的“行”;添加数据点时,即在当前“行”中添加新的结点,结点的数据域就是选取的坐标;删除时,由于不可能精确地点击到正好需要删除的点,需要先搜索整个链表,找出数据域距选取点最近的结点,再判定该结点数据域的值与选取的点的坐标是否在一定的范围内,才能最终确定该结点是否为应该删除的结点,若是,删除之,完成删除一个结点的操作,不是,取消操作。
为实现已选取的点在位图显示变化时的匹配显示,当对位图进行缩放或平移操作时,显示内容的位置将发生改变,此时,需要使用户选取的数据点(即时显示)同时匹配显示,而不发生“错位”现象。为解决该问题,作者在存储数据点时,实际用到两个“同步”的二维动态链表。
首先有一个开关变量表明进入选择数据点状态,当鼠标左键按下时,就调用选择坐标点的函数,该函数同时更新两个链表,一个名为Current_Points,直接存入当前鼠标单击点的坐标,另一个名为Real_Points,它的值为:
Real_Points.out(i,j).x=int(float(Current_Points.out(i,j).x-ccp.x)/amplifier+m_Rect.Width()/2);Real_Points.out(i,j).y=int(float(Current_Points.out(i,j).y-ccp.y)/amplifier+m_Rect.Height()/2); |
其中,out()为二维动态链表的成员函数;ccp为当前显示位图的中心坐标(需在OnDraw()函数中对其即时更新);amplifier和m_Rect如前所述。
可见,Real_Points实际记录的是选取的数据点在载入位图时,其对应的当时的图上坐标。随后,在OnDraw()函数中绘制这些己选取的坐标点时,只需计算Real_Points转换坐标后的Current_Points的坐标,就能实现所需的匹配显示。
另外,窗口的大小是可变的,载入位图时,总是让位图中心处于窗口中心。所以,窗口大小发生变化时,Real_Points的值随之发生改变。MFC中有处理窗口改变的消息函数OnSize(),其函数参数就是改变的值。则Real_Points的计算方法为将上述表达式中m_Rect的两个相应的值改为OnSize()函数的两个坐标参数。
实现参考点选取、删除及匹配显示的方法与上述方法一致,甚至更为简单,因为参考点需且仅需三个,所以只需要定义一个一维包含三个元素的数组即可,无需使用二维链表来实现。
参考点的实际坐标的输入通过一个MFC对话框实现。在MFC中制作一个对话框实例,其中包含EditBox控件,每个控件分别对应一个参考点的X或Y坐标值,记录三个参考点的实际坐标。
由于已知三个参考点的图上坐标(由用户通过鼠标点取)和实际坐标(由用户通过参考点坐标对话框输入),则所有数据点的图上坐标和实际坐标的映射关系都满足三个参考点的映射关系。将三个参考点的图上及实际X、Y坐标联立,得到包含六个未知系数和六个线性方程的方程组,求解该方程组,得到六个系数,分别代入各数据点的实际坐标与图上坐标的映射关系式中,就能求得每个数据点对应的实际坐标。方程组如下:
x1=A*x01+C*y01+Ly1=B*x01+D*y01+Mx2=A*x02+C*y02+Ly2=B*x02+D*y02+Mx3=A*x03+C*y03+Ly3=B*x03+D*y03+M |
其中(x01,y01)、(x02,y02)、(x03,y03)分别为三个参考点的图上坐标,(x1,y1)、(x2,y2)、(x3,y3)分别为三个参考点的实际坐标,A、B、C、D、L、M为需求解的未知的系数。
在选择参考点时,最佳情况是所有需要求解的数据点,都处于三个参考点形成的三角形区域的中心,且三角形形状尽量规则,此时求解的数据精度高;若选取的三个参考点共线或近似共线,则三角形面积为0或近似为0,在求解线性方程组时,系数行列式的值就会很小,程序可以根据该行列式的值判定用户选取的参考点的情况,以提醒用户是否重新选取参考点,确保计算数据的精度。
本发明所述的对图形图像数据信息进行提取的方法,不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明之领域,对于熟悉本领域的人员而言可容易地实现另外的优点和进行修改,因此在不背离权利要求及等同范围所限定的一般概念的精神和范围的情况下,本发明并不限于特定的细节、代表性的设备和这里示出与描述的图示示例。
Claims (7)
1、一种图形图像数据信息提取方法,用于接收作为提取对象的数据信息的图形图像文件的输入,对数据信息进行提取并给出数据信息的位置的坐标,所述方法包括:
a.用鼠标操作选择需要采取数据信息的位置,以及
b.对采取数据信息的位置进行与图形图像的匹配显示、计算采取数据信息的位置的坐标。
2、根据权利要求1所述的图形图像数据信息提取方法,其特征在于,对用鼠标操作选择需要采取数据信息的位置采用了这样的方法:用操作DIB的Win32 API函数在计算机屏幕上显示带有数据信息的图形图像位图文件,用鼠标操作选择需要采取的数据信息的位置,程序记录该位置。
3、根据权利要求1所述的图形图像数据信息提取方法,其特征在于,对采取数据信息的位置进行与图形图像的匹配显示采用了这样的方法:在所述的程序记录位置时,用到两个二维动态链表,一个记录该位置在位图文件输入时,其对应的图上坐标,随后程序绘制该坐标位置时,计算图上坐标转换后的坐标;另一个链表用于保存。
4、根据权利要求1所述的图形图像数据信息提取方法,其特征在于,计算采取数据信息的位置的坐标采用了这样的方法:所述的在计算机屏幕上显示的带有数据信息的图形图像位图文件的图像上通过鼠标选取三个已知图上坐标的参考点,通过参考点坐标对话框输入实际坐标,则所有采取数据信息的坐标位置的图上坐标和实际坐标的映射关系都满足三个参考点的映射关系。
5、根据权利要求2所述的图形图像数据信息提取方法,其特征在于,用户通过鼠标操作选择需要采取的数据信息的位置或将已选择的位置删除是个动态随机过程,程序将已选择的位置的坐标记录于动态二维链表中,实现鼠标操作选择需要采取的数据信息的位置或删除已选择的位置的随机性。
6、根据权利要求4所述的图形图像数据信息提取方法,其特征在于,将所述的三个参考点的图上及实际X、Y坐标联立,得到包含六个未知系数和六个线性方程的方程组,求解该方程组,得到六个系数,分别代入各数据点的实际坐标与图上坐标的映射关系式中,就能求得每个数据点对应的实际坐标。方程组如下:
x1=A*x01+C*y01+Ly1=B*x01+D*y01+Mx2=A*x02+C*y02+Ly2=B*x02+D*y02+Mx3=A*x03+C*y03+Ly3=B*x03+D*y03+M
其中(x01,y01)、(x02,y02)、(x03,y03)分别为三个参考点的图上坐标,(x1,y1)、(x2,y2)、(x3,y3)分别为三个参考点的实际坐标,A、B、C、D、L、M为需求解的未知的系数。
7、根据从1到6中任一权利要求所述的图形图像数据信息提取方法,其特征在于,所述的图形图像文件为BMP位图文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100134276A CN100412902C (zh) | 2005-05-09 | 2005-05-09 | 图形图像数据信息提取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100134276A CN100412902C (zh) | 2005-05-09 | 2005-05-09 | 图形图像数据信息提取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1687966A true CN1687966A (zh) | 2005-10-26 |
CN100412902C CN100412902C (zh) | 2008-08-20 |
Family
ID=35306007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100134276A Expired - Fee Related CN100412902C (zh) | 2005-05-09 | 2005-05-09 | 图形图像数据信息提取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100412902C (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499247B (zh) * | 2008-02-02 | 2010-11-03 | 安凯(广州)微电子技术有限公司 | 一种液晶显示控制器及其图像数据加载方法 |
CN102137039A (zh) * | 2011-04-25 | 2011-07-27 | 苏州阔地网络科技有限公司 | 一种基于社区平台的电子白板同步方法及系统 |
CN102170442A (zh) * | 2011-04-25 | 2011-08-31 | 苏州阔地网络科技有限公司 | 基于社区平台的电子白板安全同步方法及系统 |
CN102185853A (zh) * | 2011-06-16 | 2011-09-14 | 苏州阔地网络科技有限公司 | 一种基于网页的电子白板安全同步方法及系统 |
CN102185852A (zh) * | 2011-04-26 | 2011-09-14 | 苏州阔地网络科技有限公司 | 一种基于网页的电子白板同步方法及系统 |
CN102185844A (zh) * | 2011-04-25 | 2011-09-14 | 苏州阔地网络科技有限公司 | 一种基于社区平台的电子白板安全同步方法及系统 |
CN102195980A (zh) * | 2011-04-26 | 2011-09-21 | 苏州阔地网络科技有限公司 | 基于网页的电子白板安全同步方法及系统 |
CN107679339A (zh) * | 2017-10-20 | 2018-02-09 | 东南大学 | 微槽道散热冷板开槽方法 |
CN109978904A (zh) * | 2019-03-19 | 2019-07-05 | 南开大学 | 基于图像技术的挺水植物生长信息提取方法 |
CN114708342A (zh) * | 2022-06-06 | 2022-07-05 | 广东欧谱曼迪科技有限公司 | 文件转换方法、装置、设备、存储介质及仿真验证方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6573905B1 (en) * | 1999-11-09 | 2003-06-03 | Broadcom Corporation | Video and graphics system with parallel processing of graphics windows |
FR2820925A1 (fr) * | 2001-02-13 | 2002-08-16 | Koninkl Philips Electronics Nv | Systeme de traitement de motifs graphiques |
-
2005
- 2005-05-09 CN CNB2005100134276A patent/CN100412902C/zh not_active Expired - Fee Related
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499247B (zh) * | 2008-02-02 | 2010-11-03 | 安凯(广州)微电子技术有限公司 | 一种液晶显示控制器及其图像数据加载方法 |
CN102137039A (zh) * | 2011-04-25 | 2011-07-27 | 苏州阔地网络科技有限公司 | 一种基于社区平台的电子白板同步方法及系统 |
CN102170442A (zh) * | 2011-04-25 | 2011-08-31 | 苏州阔地网络科技有限公司 | 基于社区平台的电子白板安全同步方法及系统 |
CN102185844A (zh) * | 2011-04-25 | 2011-09-14 | 苏州阔地网络科技有限公司 | 一种基于社区平台的电子白板安全同步方法及系统 |
CN102185852A (zh) * | 2011-04-26 | 2011-09-14 | 苏州阔地网络科技有限公司 | 一种基于网页的电子白板同步方法及系统 |
CN102195980A (zh) * | 2011-04-26 | 2011-09-21 | 苏州阔地网络科技有限公司 | 基于网页的电子白板安全同步方法及系统 |
CN102185853A (zh) * | 2011-06-16 | 2011-09-14 | 苏州阔地网络科技有限公司 | 一种基于网页的电子白板安全同步方法及系统 |
CN107679339A (zh) * | 2017-10-20 | 2018-02-09 | 东南大学 | 微槽道散热冷板开槽方法 |
CN109978904A (zh) * | 2019-03-19 | 2019-07-05 | 南开大学 | 基于图像技术的挺水植物生长信息提取方法 |
CN114708342A (zh) * | 2022-06-06 | 2022-07-05 | 广东欧谱曼迪科技有限公司 | 文件转换方法、装置、设备、存储介质及仿真验证方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100412902C (zh) | 2008-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100412902C (zh) | 图形图像数据信息提取方法 | |
EP0727076B1 (en) | Object-oriented graphic system and method | |
JP4700423B2 (ja) | 形状を使用する共通チャーティング | |
US7661071B2 (en) | Creation of three-dimensional user interface | |
US5467441A (en) | Method for operating on objects in a first image using an object-based model data structure to produce a second contextual image having added, replaced or deleted objects | |
KR100996738B1 (ko) | 벡터 그래픽을 위한 마크업 언어 및 오브젝트 모델 | |
US8571338B2 (en) | Image file generation device, image processing device, image file generation method, and image processing method | |
CN100557596C (zh) | 视件和场景图接口 | |
WO2011052117A1 (ja) | 画像ファイル生成装置、画像処理装置、画像ファイル生成方法、画像処理方法、および画像ファイルのデータ構造 | |
US7058657B1 (en) | Architecture for developing and reusing analytic and visualization components and methods of use thereof | |
US20020174098A1 (en) | Method and system for providing a dynamic and real-time exchange between heterogeneous database systems | |
US20120320073A1 (en) | Multiple Spatial Partitioning Algorithm Rendering Engine | |
CN1461986A (zh) | 覆盖电子墨迹 | |
CN1469240A (zh) | 在图形系统内提供中间目标的系统和方法 | |
CN109964204B (zh) | 用于处理图形的方法和系统 | |
CN108352083A (zh) | 用于拉伸成3d对象的2d图像处理 | |
CN102129505A (zh) | 信息处理装置、信息处理方法以及计算机可读介质 | |
CN110516015B (zh) | 基于地图图形数据和dlg制作地理pdf地图的方法 | |
CN105550247A (zh) | 基于svg标准可自定义图符的电力系统图形显示方法 | |
JP2023033496A (ja) | 情報処理装置、情報処理プログラム及び情報処理方法 | |
CN101790749B (zh) | 多点采样绘制二维矢量图像 | |
CN104750937A (zh) | 基于Hadoop的集成电路版图转换方法 | |
CN1132121C (zh) | 图形处理器和应用该处理器的数据处理系统 | |
CN1924794A (zh) | 数字文件处理系统、数据处理系统和外围设备 | |
CN1103972C (zh) | 数据转换装置及图象发生装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080820 Termination date: 20110509 |