Reviews on Dr. Jekyll and Mr. Hyde(化身博士读后感)

Reviews on Dr. Jekyll and Mr. Hyde(化身博士读后感)

In the past a few weeks, I read a book named Dr. Jekyll and Mr. Hyde written by a talented Scottish author Robert Louis Stevenson. The story is told through the eyes of Mr. Utterson, a well-known and respected lawyer. Hearing about some strange occurrences concerning his client, Dr. Henry Jekyll, and a new comer, Edward Hyde, he starts his own investigation. After Dr. Henry Jekyll’s death, it finally turns out that Dr. Jekyll and Mr. Hyde is actually the same person. Dr. Jekyll has been taking a special self-invented potion, which can turn him into a pure devil, Mr. Hyde. After a few days however, he finds himself unable to get rid of Mr. Hyde, which leads to his suicide in the laboratory.

Despite the similarity between Dr. Jekyll and Mr. Hyde and some modern detective books, Stevenson in fact did not pay much attention to how Mr. Utterson gradually discovers the truth. Rather, he focused merely on both the inner virtue and evil of an ordinary person by creating Dr. Jekyll and Mr. Hyde, so that readers would not be distracted by other less important plots. By doing so, he managed to evoke a strong inner response in the viewer for the past 128 years. As many people have pointed out, Dr. Jekyll and Mr. Hyde are not merely two characters with distinct characteristic. Instead, they represent the two contradictory sides of human nature that exist in every single individual- both virtue and evil.

Some people argue that the book actually reveals the cruelty of the real world. From their perspective, the book indicates that the power of evil is much stronger than that of virtue. However, I totally disagree with it. We have to admit the power of evil in ruining one’s soul, but the death of Dr. Jekyll, as I see it, is still the victory of virtue- an angel would rather die than submit to a devil and that’s the power of virtue. No one can deny the presence of evil in his or her soul, but does this necessarily mean we would finally become a bastard? There’s a devil hidden in the bottom of my heart, which I have never suspected. And everyone, I suppose, has such a moment in his or her life when something evil comes up to his or her mind. Most of these evil ideas might derive from the desire for power, for fame or for wealth. But there are even some that come from nowhere. But we never classified human beings as a group of bullies, because virtue in our heart is like a candle- as long as there is one, darkness would never really come. Human beings have survived the fierce nature for the past millions of years’time, not because of their evil, but because of the virtue they bear. When our ancestors started to be willing to bring something good to the society, regardless of their own profit, or even at the sacrifice of their lives, they united as a whole and gained advantage over those beasts. It was the very moment that human beings became the true giants that could never be defeated.

And that’s exactly what Dr. Jekyll’s death has shown us.

Halcon_VC相关

如何使用VC在Halcon中得到像素的信息 作者:支源,时间2007-3-16 Halcon的强大功能使我们省去很多图像处理(机器视觉)中的很多麻烦而又重复性的工作。但是,面向不同的应用,应该编写自己最核心的算法,从而达到最佳的处理效果;而且Halcon并不可能把各种情况都考虑进去。以下是我初步入门Halcon和VC的一点感触和想法,已经被实验证明了是正确的。 1,在VC中,使用Halcon打开图像文件,这里要注意read_image()和get_image_pointer1()指令被HDevelop翻译过来以后如下: Hobject Image HTuple Pointer, Type, Width, Height get_image_pointer1(Image, &Pointer, &Type, &Width, &Height); VC中如下声明: Halcon::Hobject Image Halcon::HTuple Pointer, Type, Width, Height VC中也可以如下声明使用: Hobject Image Char lpcsType[MAX_STRING] Hlong Pointer, Width, Height 或long Width, Height (如果定义为HTuple Pointer ; Hlong Width, Height; 编译会出现错误; 使用Halcon::HTuple Pointer, Type, Width, Height的话,后续中需要 图像的高宽时,强制类型转换不可用; 当然Hlong可以换成long,推荐使用Hlong。) get_image_pointer1(Image, &Pointer, lpcsType, &Width, &Height); 这里注意,在VC中如果get_image_pointer1( )中的字节类型使用tuple变量,那么Width和Height也必须使用tuple变量,否则编译时候容易出错误,至于原因是什么,可能halcon编译的时候需要各个参数的类型形式一致。 2,tuple类型的返回指针Pointer指向图像数据区域(如果是彩色则指向色彩的第一通道),图像的RGB色彩存放是同一种色彩信号最放在一起。注意Pointer所指向区域的大小比图像必须的色彩信息要大许多,这里可能是因为必须为tuple变量定义一定的类型限制,从而使用的空间变大了(由于不了解tuple的内部存储格式,所以不敢断定)。请看下面一段例子程序:使用Halcon,把彩色图像转化为灰度图像,然后使用Pointer指针得到灰度图像并显示,包括在VC窗口中进行显示部分。 using namespace Halcon; char lpcsType[MAX_STRING]; Hlong PointerGray,WidthGray, HeightGray; rgb1_to_gray(objImage, &objImageGray); get_image_pointer1(objImage, &PointerGray, lpcsType, &WidthGray, &HeightGray); BYTE * lpByte; BYTE * ImageGray; int bytewidth; bytewidth = ((long) WidthGray * 3 + 3 ) / 4 * 4 ;

vb连接halcon读取图像

halcon基本,vb连接halcon读取图像,视频 halcon学习方法:安装完halcon之后,在开始里出现一些文档 quick_guide.pdf 快速入门halcon hdevelop_users_guide.pdf 详细讲解在hdevelop中使用halcon,及hdevelop的操作 programmers_guide.pdf 详细讲解在高级语言中的使用halcon reference_hdevelop.pdf 讲解各个算子、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、vb中使用halcon窗口加载图像 1.读取图像 [cpp]view plaincopyprint? 1.read_image (Lena, 'F:/image/lena.jpg') 2.get_image_size (Lena, Width, Height) 3.dev_close_window () 4.dev_open_window (0, 0, Width/2, Height/2, 'black', WindowHandle) 5.set_display_font (WindowHandle, 14, 'mono', 'true', 'false') 6.dev_display (Lena) 7.disp_continue_message (WindowHandle, 'black', 'true') 8.stop () 2.导出vb的bas代码 选择文件/导出,弹出

注意:此处选择使用halcon窗口 3.vb中调用read_image.bas 先看一下read_image.bas的内容,可知在需要的地方直接调用main即可 [vb]view plaincopyprint? 1.... 2. 3.' Main procedure 4.Private Sub action() 5. 6. ' Local iconic variables 7. Dim ho_Lena As HUntypedObjectX 8. 9. 10. ' Local control variables 11. Dim hv_Width As Variant, hv_Height As Variant 12. Dim hv_WindowHandle As Variant 13. 14. 15. Call Op.ReadImage(ho_Lena, "F:/image/lena.jpg") 16. Call Op.GetImageSize(ho_Lena, hv_Width, hv_Height) 17. If COMExpWinHandleStack.IsOpen() Then 18. Op.CloseWindow (COMExpWinHandleStack.Pop()) 19. End If 20. Call Op.SetWindowAttr("background_color", "black") 21. Call Op.OpenWindow(0, 0, Tuple.TupleDiv( _ 22. hv_Width, 2), Tuple.TupleDiv(hv_Height, 2), 0, "", "", hv_WindowHandle) 23. COMExpWinHandleStack.Push (hv_WindowHandle) 24. Call set_display_font(hv_WindowHandle, 14, "mono", "true", "false") 25. If COMExpWinHandleStack.IsOpen() Then 26. Call Op.DispObj(ho_Lena, COMExpWinHandleStack.GetActive()) 27. End If 28. Call disp_continue_message(hv_WindowHandle, "black", "true") 29. HDevelopStop 30.End Sub 31. 32. 33. 34.#If Not NO_EXPORT_APP_MAIN Then 35.Sub InitHalcon() 36. ' Default settings used in HDevelop 37. Call Op.SetSystem("do_low_error", "false") 38.End Sub 39. 40.Sub Main() 41. Call InitHalcon 42. Call action 43.End Sub 44. 45.#End If

Halcon机器视觉二维码实例及分步注解

Halcon机器视觉二维码实例及分步注解 [plain]view plaincopy 1.*2D Code generated by Image Acquisition01 2.*QR Code 3.dev_close_window() 4.dev_open_window(0,0,400,400,'black',WindowHandle) 5.*先关闭活动图形窗口,再打开这个窗口,标识符为WindowHandle; 6.*相对于界面左上角第0行、第0列,大小为400×400像素,颜色为黑色。 7.open_framegrabber('DirectShow',1,1,0,0,0,0,'default',8,'rgb',-1,'false','defa ult','Gsou USB2.0Camera',0,-1,AcqHandle) 8.*打开帧接收器(图像采集设备,如摄像头,工业相机等),参数(Parameter)详见这个算子 9.*注意摄像头的名称,可以用工具栏中的“助手”——打开新的Image Acquisition获取摄像头及插入代码 10.grab_image_start(AcqHandle,-1) 11.while(true) 12.grab_image_async(Image,AcqHandle,-1) 13.create_data_code_2d_model('QR Code',[],[],DataCodeHandle) 14.*二维码的创建开头的算子,clear为结束清除的算子,见下。 15.set_display_font(WindowHandle,16,'mono','true','false') 16.dev_set_color('forest green') 17.dev_set_draw('margin') 18.dev_set_line_width(3) 19.set_data_code_2d_param(DataCodeHandle,'default_parameters','enhanced_recognition') 20.*设置选定参数的二维数据模型,参数详见这个算子 21.find_data_code_2d(Image,SymbolXLDs,DataCodeHandle,[],[],ResultHandles,DecodedDa taStrings) 22.*检测和读取二维代码符号,也支持读取二维数据模型的序列,参数详见这个算子 23.for i:=0to|ResultHandles|-1by1 24.select_obj(SymbolXLDs,SymbolXLD,i+1) 25.get_contour_xld(SymbolXLD,Row,Col) 26.get_string_extents(WindowHandle,DecodedDataStrings[i],Ascent,Descent,TxtWidth ,TxtHeight) 27.disp_message(WindowHandle,DecodedDataStrings[i],'image',max(Row-50),max([min( Col+30)-TxtWidth/2,1]),'black','true') 28.endfor 29.*这段for循环语句的目的是让解码到的字符串(二维码的内容)显示到二维码深绿色(forest green上 面定义)的解码区域框的行列位置。 30.*disp_message(WindowHandle,DecodedDataStrings,'window',12,12,'black','true') 31.*如果不需要设置显示到区域框中间的位置,而是显示到窗体的上方或其他位置,那么不需要上面那段for 语句,只需这段信息显示的语句即可显示到窗体相应位置。 32.if(|DecodedDataStrings|>0) 33.disp_continue_message(WindowHandle,'black','true')

halcon算子注解查询手册

Chapter 1 :Classification (4) 1.1 Gaussian-Mixture-Models (4) 1.2 Hyperboxes (4) 1.3 Neural-Nets (5) 1.4 Support-Vector-Machines (6) Chapter 2 Control (7) Chapter3 :Develop (8) Chapter 4 :File (10) 4.1 Images (10) 4.2 Misc (10) 4.3 Region (10) 4.4 Text (10) 4.5 Tuple (11) Chapter 5:Filter (12) 5.1 Arithmetic (12) 5.2 Bit (12) 5.3 Color (13) 5.4 Edges (13) 5.5 Enhancement (14) 5.6 FFT (15) 5.7 Geometric-Transformations (16) 5.8 Inpainting (17) 5.9 Lines (17) 5.10 Match (18) 5.11 Misc (18) 5.12 Noise (18) 5.13 Optical-Flow (19) 5.14 Points (19) 5.15 Smoothing (19) 5.16 Texture (20) 5.17 Wiener-Filter (20) Chapter 6 :Graphics (21) 6.1 Drawing (21) 6.2 Gnuplot (22) 6.3 LUT (22) 6.4 Mouse (23) 6.5 Output (23) 6.6 Parameters (24) 6.7 Text (26) 6.8 Window (27) Chapter 7 :Image (28) 7.1 Access (28) 7.2 Acquisition (28) 7.3 Channel (29)

Halcon学习笔记之缺陷检测(二)教学教材

Halcon学习笔记之缺陷检测(二)例程:detect_indent_fft.hdev 说明:这个程序展示了如何利用快速傅里叶变换(FFT)对塑料制品的表面进行目标(缺陷)的检测,大致分为三步: 首先,我们用高斯滤波器构造一个合适的滤波器(将原图通过高斯滤波器滤波); 然后,将原图和构造的滤波器进行快速傅里叶变换; 最后,利用形态学算子将缺陷表示在滤波后的图片上(在缺陷上画圈)。 注:代码中绿色部分为个人理解和注释,其余为例程中原有代码 *Initialization(初始化) dev_updata_off() //这一句包含如下三个算子: //dev_updata_pc(‘off’) 关闭更新程序计数器//dev_updata_var(‘off’) 关闭更新变量窗口 //dev_updata_window(‘off’) 关闭更新图像窗口(即通过命令来显示想要在图像窗口显示的图片) dev_close_window() //关闭活动的图像窗口 read_image(Image,’plastics / plastics_01’) //载入图片//参数说明:为读入图片命名(Image)// 文件名(’plastics/plastics_01’) get_image_size(Image,Width,height) //获取图片的长宽;//参数说明:之前读入或生成的图片(Image)// 图片的宽(Width)// 图片的高(Height) dev_open_window(0,0,Width,Height,’Black’,WindowHandle) //打开一个新的图像窗口//参数说明:起始坐标(0,0)// 大小(Width,Height)// 背景颜色(’Black’)// 窗口句柄(WindowHandle) set_display_font (WindowHandle,14,’mono’,’ture’,’false’)//设置不依赖操作系统的字体 //参数说明:窗口句柄(WindowHandle)

Halcon算子中文功能注解

Chapter_1_:Classification 1.1 Gaussian-Mixture-Models 1.add_sample_class_gmm 功能:把一个训练样本添加到一个高斯混合模型的训练数据上。 2.classify_class_gmm 功能:通过一个高斯混合模型来计算一个特征向量的类。 3. clear_all_class_gmm 功能:清除所有高斯混合模型。 4. clear_class_gmm 功能:清除一个高斯混合模型。 5. clear_samples_class_gmm 功能:清除一个高斯混合模型的训练数据。 6. create_class_gmm 功能:为分类创建一个高斯混合模型。 7.evaluate_class_gmm 功能:通过一个高斯混合模型评价一个特征向量。 8. get_params_class_gmm 功能:返回一个高斯混合模型的参数。 9. get_prep_info_class_gmm 功能:计算一个高斯混合模型的预处理特征向量的信息内容。 10. get_sample_class_gmm 功能:从一个高斯混合模型的训练数据返回训练样本。 11. get_sample_num_class_gmm 功能:返回存储在一个高斯混合模型的训练数据中的训练样本的数量。 12. read_class_gmm 功能:从一个文件中读取一个高斯混合模型。 13. read_samples_class_gmm 功能:从一个文件中读取一个高斯混合模型的训练数据。 14. train_class_gmm 功能:训练一个高斯混合模型。 15. write_class_gmm 功能:向文件中写入一个高斯混合模型。 16. write_samples_class_gmm 功能:向文件中写入一个高斯混合模型的训练数据。 1.2 Hyperboxes 1. clear_sampset 功能:释放一个数据集的内存。 2. close_all_class_box 功能:清除所有分类器。 3. close_class_box 功能:清除分类器。 4. create_class_box 功能:创建一个新的分类器。 5. descript_class_box 功能:分类器的描述。 6. enquire_class_box 功能:为一组属性分类。 7. enquire_reject_class_box 功能:为一组带抑制类的属性分类。8. get_class_box_param 功能:获取关于现在参数的信息。 9. learn_class_box 功能:训练分类器。 10. learn_sampset_box 功能:用数据组训练分类器。 11. read_class_box 功能:从一个文件中读取分类器。 12.read_sampset 功能:从一个文件中读取一个训练数据组。 13. set_class_box_param 功能:为分类器设计系统参数。 14. test_sampset_box 功能:为一组数组分类。 15. write_class_box 功能:在一个文件中保存分类器。 1.3 Neural-Nets 1. add_sample_class_mlp 功能:把一个训练样本添加到一个多层感知器的训练数据中。 2. classify_class_mlp 功能:通过一个多层感知器计算一个特征向量的类。3. clear_all_class_mlp 功能:清除所有多层感知器。 4. clear_class_mlp 功能:清除一个多层感知器。 5. clear_samples_class_mlp 功能:清除一个多层感知器的训练数据。 6. create_class_mlp 功能:为分类或者回归创建一个多层感知器。 7. evaluate_class_mlp 功能:通过一个多层感知器计算一个特征向量的评估。 8. get_params_class_mlp 功能:返回一个多层感知器的参数。 9. get_prep_info_class_mlp 功能:计算一个多层感知器的预处理特征向量的信息内容。 10. get_sample_class_mlp 功能:从一个多层感知器的训练数据返回一个训练样本。 11. get_sample_num_class_mlp 功能:返回存储在一个多层感知器的训练数据中的训练样本的数量。 12. read_class_mlp 功能:从一个文件中读取一个多层感知器。 13. read_samples_class_mlp 功能:从一个文件中读取一个多层感知器的训练数据。 14. train_class_mlp、 功能:训练一个多层感知器。 15. write_class_mlp 功能:向一个文件中写入一个多层感知器。 16. write_samples_class_mlp 功能:向一个文件中写入一个多层感知器的训练数据。

HALCON中文中文注解

Halcon查询图像参数 1、get_grayval ( Image : : Row, Column : Grayval ) 计算Image图像中坐标为(Row,Column)的点的灰度值Grayval。 2、get_image_pointer1 ( Image : : : Pointer, Type, Width, Height ) 计算Image图像的数据指针Pointer,图像类型Type,图像宽度Width和高度Height。Pointer指向了Image data的起点位置。 3、get_image_pointer3 ( ImageRGB : : : PointerRed, PointerGreen, PointerBlue, Type, Width, Height ) 计算彩色图像ImageRGB的参数。 4、get_image_pointer1_rect ( Image : : : PixelPointer, Width, Height, VerticalPitch, HorizontalBitPitch, BitsPerPixel ) 计算Image图像中定义区域的最小的长方形的区域的指针Pointer,宽度Width,高度Height,VerticalPitch代表Image的Width*(HorizontalBitPitch/8)。两个相邻象素的水平距离(以比特计算)HorizontalBitPitch,每像素的比特数BitsPerPixel。 5、get_image_time ( Image : : : MSecond, Second, Minute, Hour, Day, YDay, Month, Year ) 获取图像生成的时间。

Halcon学习笔记之缺陷检测(二)

Halcon学习笔记之缺陷检测(二)例程: 说明:这个程序展示了如何利用快速傅里叶变换(FFT)对塑料制品的表面进行目标(缺陷)的检测,大致分为三步: 首先,我们用高斯滤波器构造一个合适的滤波器(将原图通过高斯滤波器滤波); 然后,将原图和构造的滤波器进行快速傅里叶变换; 最后,利用形态学算子将缺陷表示在滤波后的图片上(在缺陷上画圈)。 注:代码中绿色部分为个人理解和注释,其余为例程中原有代码 *Initialization(初始化) dev_updata_off() //这一句包含如下三个算子: //dev_updata_pc(‘off’) 关闭更新程序计数器//dev_updata_var(‘off’) 关闭更新变量窗口 //dev_updata_window(‘off’) 关闭更新图像窗口(即通过命令来显示想要在图像窗口显示的图片) dev_close_window() //关闭活动的图像窗口 read_image(Image,’plastics / plastics_01’) //载入图片//参数说明:为读入图片命名(Image)// 文件名(’plastics/plastics_01’)get_image_size(Image,Width,height) //获取图片的长宽;//参数说明:之前读入或生成的图片(Image)// 图片的宽(Width)// 图片的高(Height) dev_open_window(0,0,Width,Height,’Black’,WindowHandle) //打开一个新的图像窗口//参数说明:起始坐标(0,0)// 大小(Width,Height)// 背景颜色(’Black’)// 窗口句柄(WindowHandle) set_display_font (WindowHandle,14,’mono’,’ture’,’false’)//设置不依赖操作系统的字体 //参数说明:窗口句柄(WindowHandle) // 字体大小(14) // 字体类型(’mono’) // 是否黑体(’ture’) // 是否倾斜(’false’) dev_set_draw(‘Margin’) //定义区域填充模式//参数说明:填充模式(’Margin’或者’Fill’) dev_set_line_width(3)//设置输出区域轮廓线的线宽//可以修改参数来看最后缺陷区域标示的区别dev_set_color(’red’)//设置一种或者多种输出颜色 * *Optimize the fft speed for the specific image size(根据指定图像大小进行fft速度最优化) optimize_rft_speed(Width,Height,’standard’)//对指定大小的图片的fft速度进行优化//参数说明:图片大小(Width,Height)// 优化模式(’standard’) * *Construct a suitable filter by combining two Gaussian filters(结合两个高斯滤波器构造一*个合适的滤波器)Sigma1 :=

HALCON中的算子大全(中英对照)

HALCON中的算子大全(中英对照) Chapter 1 :Classification 1.1 Gaussian-Mixture-Models 1.add_sample_class_gmm 功能:把一个训练样本添加到一个高斯混合模型的训练数据上。 2.classify_class_gmm 功能:通过一个高斯混合模型来计算一个特征向量的类。 3. clear_all_class_gmm 功能:清除所有高斯混合模型。 4. clear_class_gmm 功能:清除一个高斯混合模型。 5. clear_samples_class_gmm 功能:清除一个高斯混合模型的训练数据。 6. create_class_gmm 功能:为分类创建一个高斯混合模型。 7.evaluate_class_gmm 功能:通过一个高斯混合模型评价一个特征向量。 8. get_params_class_gmm 功能:返回一个高斯混合模型的参数。 9. get_prep_info_class_gmm 功能:计算一个高斯混合模型的预处理特征向量的信息内容。 10. get_sample_class_gmm

功能:从一个高斯混合模型的训练数据返回训练样本。 11. get_sample_num_class_gmm 功能:返回存储在一个高斯混合模型的训练数据中的训练样本的数量。 12. read_class_gmm 功能:从一个文件中读取一个高斯混合模型。 13. read_samples_class_gmm 功能:从一个文件中读取一个高斯混合模型的训练数据。 14. train_class_gmm 功能:训练一个高斯混合模型。 15. write_class_gmm 功能:向文件中写入一个高斯混合模型。 16. write_samples_class_gmm 功能:向文件中写入一个高斯混合模型的训练数据。 1.2 Hyperboxes 1. clear_sampset 功能:释放一个数据集的内存。 2. close_all_class_box 功能:清除所有分类器。 3. close_class_box 功能:清除分类器。 4. create_class_box

Halcon十九类算子汇总

HALCON算子一Classification 1.1 Gaussian-Mixture-Models 1.add_sample_class_gmm把一个训练样本添加到一个高斯混合模型的训练数据上。 2.classify_class_gmm通过一个高斯混合模型来计算一个特征向量的类。 3. clear_all_class_gmm清除所有高斯混合模型。 4. clear_class_gmm清除一个高斯混合模型。 5. clear_samples_class_gmm清除一个高斯混合模型的训练数据。 6. create_class_gmm为分类创建一个高斯混合模型。 7.evaluate_class_gmm通过一个高斯混合模型评价一个特征向量。 8. get_params_class_gmm返回一个高斯混合模型的参数。 9. get_prep_info_class_gmm计算一个高斯混合模型的预处理特征向量的信息内容。 10. get_sample_class_gmm从一个高斯混合模型的训练数据返回训练样本。 11. get_sample_num_class_gmm返回存储在一个高斯混合模型的训练数据中的训练样本的数量。 12. read_class_gmm从一个文件中读取一个高斯混合模型。 13. read_samples_class_gmm从一个文件中读取一个高斯混合模型的训练数据。 14. train_class_gmm训练一个高斯混合模型。 15. write_class_gmm向文件中写入一个高斯混合模型。 16. write_samples_class_gmm向文件中写入一个高斯混合模型的训练数据。 1.2 Hyperboxes 1. clear_sampset释放一个数据集的内存。

基于HALCON的双目立体视觉系统实现

基于HALCON的双目立体视觉系统实现 段德山(大恒图像公司) 摘要双目立体视觉的研究一直是机器视觉中的热点和难点。使用双目立体视觉系统可以确定任意物体的三维轮廓,并且可以得到轮廓上任意点的三维坐标。因此双目立体视觉系统可以应用在多个领域。本文将主要介绍如何基于HALCON实现双目立体视觉系统,以及立体视觉的基本理论、方法和相关技术,为搭建双目立体视觉系统和提高算法效率提供了参考。 关键词双目视觉三维重建立体匹配摄像机标定视差 双目立体视觉是机器视觉的一种重要形式,它是基于视差原理并由多幅图像获取物体三维几何信息的方法。双目立体视觉系统一般由双摄像机从不同角度同时获得被测物的两幅数字图像,或由单摄像机在不同时刻从不同角度获得被测物的两幅数字图像,并基于视差原理恢复出物体的三维几何信息,重建物体三维轮廓及位置。双目立体视觉系统在机器视觉领域有着广泛的应用前景。 HALCON是在世界范围内广泛使用的机器视觉软件。它拥有满足您各类机器视觉应用需求的完善的开发库。HALCON也包含Blob分析、形态学、模式识别、测量、三维摄像机定标、双目立体视觉等杰出的高级算法。HALCON支持Linux和Windows,并且可以通过C、C++、C#、Visual Basic和Delphi语言访问。另外HALCON与硬件无关,支持大多数图像采集卡及带有DirectShow和IEEE 1394驱动的采集设备,用户可以利用其开放式结构快速开发图像处理和机器视觉应用软件。 一.双目立体视觉相关基本理论介绍

1.1 双目立体视觉原理 双目立体视觉三维测量是基于视差原理,图1所示为简单的平视双目立体成像原理图,两摄像机的投影中心的连线的距离,即基线距为b。摄像机坐标系的原点在摄像机镜头的光心处,坐标系如图1所示。事实上摄像机的成像平面在镜头的光心后,图1中将左右成像平面绘制在镜头的光心前f处,这个虚拟的图像平面坐标系O1uv的u轴和v轴与和摄像机坐标系的x轴和y轴方向一致,这样可以简化计算过程。左右图像坐标系的原点在摄像机光轴与平面的交点O1和O2。空间中某点P在左图像和右图像中相应的坐标分别为P1(u1,v1)和P2(u2,v2)。假定两摄像机的图像在同一个平面上,则点P图像坐标的Y坐标相同,即v1=v2。由三角几何关系得到: 上式中(xc,yc,zc)为点P在左摄像机坐标系中的坐标,b为基线距,f为两个摄像机的焦距,(u1,v1)和(u2,v2)分别为点P在左图像和右图像中的坐标。 视差定义为某一点在两幅图像中相应点的位置差:

语音控制无人机设计说明

国家级大学生创新实验项目 基于人机交互技术的多旋翼飞行器控制 研究报告 项目主持人:姚佳乐 项目组成员:石磊杨梦飞姜裳 指导教师:匡银虎、张虹波 物理电气信息学院 2014年3月

目录 1 研究背景 (3) 1.1 AR.Drone2.0四轴飞行器介绍 (3) 1.2 科大讯飞语音识别系统介绍 (4) 1.3 Halcon机器视觉软件介绍 (4) 2 开发过程 (5) 2.1 AR.Drone2.0 SDK研究 (5) 2.1.1 翻译AR.Drone2.0 SDK原文 (5) 2.1.2 初期研究 (5) 2.1.3 深入研究 (11) 2.2 通过PC语音识别,发送语音控制命令 (11) 2.3 飞行器视频流采集,分析图片,自动判定飞行区域 (13) 2.3.1 学习halcon软件,达到图像标志识别的目的 (13) 2.3.2 通过获取的圆形区域的参数建立与实际距离之间的关系 (20) 3 后续开发展望 (26) 4 总结 (27)

1研究背景 1.1AR.Drone 2.0四轴飞行器介绍 AR.Drone2.0是一款遥控四轴飞行航模,拥有四个螺旋桨控制其飞行动作,如图1所示。 图1 四轴飞行器 其结构包括:四轴机架、螺旋桨、无刷电机、电调、飞控板、传感器模块、wifi模块、机壳、摄像头、电池。 以下为AR飞行器的基本参数: 飞行速度:5米/秒;18千米/小时; 重量:有机壳-400克/436克;无机壳-366克; 尺寸:有机壳-51.5x51.5/45.2x45.2;无机壳-45x29cm; 电池:3芯锂电池-11.1V 1000毫安时;充电时间-1.5小时;飞行时间-12分钟; 内置系统:ARM cortex A8位处理器;DDR SDRAM 128MB;NAND Flash memory 128MB WiFi/g/n;Linux OS; 超声波高度计:发射频率-40kHz;范围-6米; 操作温度:0~55摄氏度;

HALCON运算符及功能-中文

HALCON运算符及功能Chapter1:Classification 1.1Gaussian-Mixture-Models 1.add_sample_class_gmm 功能:把一个训练样本添加到一个高斯混合模型的训练数据上。 2.classify_class_gmm 功能:通过一个高斯混合模型来计算一个特征向量的类。 3.clear_all_class_gmm 功能:清除所有高斯混合模型。 4.clear_class_gmm 功能:清除一个高斯混合模型。 5.clear_samples_class_gmm 功能:清除一个高斯混合模型的训练数据。 6.create_class_gmm 功能:为分类创建一个高斯混合模型。 7.evaluate_class_gmm 功能:通过一个高斯混合模型评价一个特征向量。 8.get_params_class_gmm 功能:返回一个高斯混合模型的参数。 9.get_prep_info_class_gmm 功能:计算一个高斯混合模型的预处理特征向量的信息内容。 10.get_sample_class_gmm 功能:从一个高斯混合模型的训练数据返回训练样本。 11.get_sample_num_class_gmm 功能:返回存储在一个高斯混合模型的训练数据中的训练样本的数量。 12.read_class_gmm 功能:从一个文件中读取一个高斯混合模型。 13.read_samples_class_gmm 功能:从一个文件中读取一个高斯混合模型的训练数据。 14.train_class_gmm 功能:训练一个高斯混合模型。 15.write_class_gmm 功能:向文件中写入一个高斯混合模型。 16.write_samples_class_gmm 功能:向文件中写入一个高斯混合模型的训练数据。 1.2Hyperboxes 1.clear_sampset 功能:释放一个数据集的内存。 2.close_all_class_box 功能:清除所有分类器。 3.close_class_box 功能:清除分类器。

机器视觉之halcon学习——机器视觉工程应用的开发思路

halcon学习笔记——机器视觉工程应用的开发思路 机器视觉工程应用主要可划分为硬件和软件两大部分。 硬件:工程应用的第一步就是硬件选型。硬件选型很关键,因为它是你后面工作的基础。主要是光源、工业相机和镜头选择。 软件:目前业内商业库主要有Halcon,康耐视,DALSA,evision,NI等,开源库有Ope nCV.其中NI的labview+vision模块。 机器视觉工程应用的基本开发思路是: 一、图像采集,二、图像分割,三、形态学处理,四、特征提取,五、输出结果。 下面在Halcon下对这四个步骤进行讲解。 一、图像采集: Halcon通过imageacquisition interfaces对各种图像采集卡及各种工业相机进行支持。其中包括:模拟视频信号,数字视频信号Camera Link,数字视频信号IEEE 1394,数字视频信号USB2.0,数字视频信号Gigabit Ethernet等。 Halcon通过统一的接口封装上述不同相机的image acquisition interfaces,从而达到算子统一化。不同的相机只需更改几个参数就可变更使用。 Halcon图像获取的思路:1、打开设备,获得该设备的句柄。2、调用采集算子,获取图像。

1、打开设备,获得该设备的句柄。

2、调用采集算子,获取图像。 图像采集其他相关算子: grab_image_start,该算子开始命令相机进行异步采集。只能与grab_image_async (异步采集)一起使用。

例子: 3、相机参数读写 读取相机参数: info_framegrabber( : : Name, Query : Information, ValueList) 写相机参数: set_framegrabber_param( : : AcqHandle, Param, Value : ) 二、图像分割: 图像分割的定义: 所谓图像分割是指将图像中具有特殊含义的不同区域分割开来,这些区域是互相不交叉的,每个区域都满足特定区域的一致性。 1、基于阈值的图像分割 threshold —采用全局阈值分割图像。 格式:threshold(Image : Region : MinGray, MaxGray : )

相关文档
最新文档