opencv实现xld_初识 Image,region,xld(1)

本文介绍了OpenCV中的图像基础知识,包括二值图、灰度图和RGB图像,并提供了读取多张图片的示例。接着讨论了Region的概念,它是像素子集,具有多种形状特征和几何矩。最后,文章阐述了XLD(轮廓)的用途,它是亚像素精度数据的表示,支持多种转换和拟合操作。
部署运行你感兴趣的模型镜像

一、 图像

根据每个像素信息不同,通常将图像分为:二值图,灰度图,RGB图像

1.二值图:

每个像素只有0(黑)1(白)两种颜色的图像成为二值图。

2.灰度图:

在黑与白之间构建更多的颜色深度,一般灰度从暗黑色到最亮的白色过渡,根据保存灰度数值所使用的的数据类型的不同,可以有2^k种,k=1时是二值图,k=8时是常见的灰度图。

3:RGB图像:

有Red、Green、Blue三个颜色组合而成,三个颜色各有256个级别,每种原色采用8位二进制整数表示,于是三通道RGB共需要24位二进制数,共可以表示颜色种类数为256*256*256=2^24,大约1600万种颜色。

第一种:

ImagePath := []ImagePath[0] := 'D:/halcon_test/读取多张图片的方式/1.jpg'ImagePath[1] := 'D:/halcon_test/读取多张图片的方式/2.jpg'ImagePath[2] := 'D:/halcon_test/读取多张图片的方式/3.jpg'ImagePath[3] := 'D:/halcon_test/读取多张图片的方式/4.jpg'ImagePath[4] := 'D:/halcon_test/读取多张图片的方式/5.jpg' for Index := 0 to 4 by 1    dev_close_window ()    read_image (Image, ImagePath[Index])    get_image_size (Image, Width, Height)    dev_open_window (0, 0, Width, Height, 'black', WindowHandle)    dev_display (Image)endfor

第二种:

for i := 1 to 5 by 1    dev_close_window ()    read_image (Image, 'D:/halcon_test/读取多张图片的方式/'+i+'.jpg')    get_image_size (Image, Width, Height)    dev_open_window (0, 0, Width, Height, 'black', WindowHandle)    dev_display (Image)endfor

第三种:

for I := 1 to 5 by 1     dev_close_window ()    *I$表示引用I的值,而'1d'的'd'则表示采用十进制数表示,取一位数,如1、2、3此类,    *故'3d'则表示为取三位十进制数,如001、002、003诸如此类    read_image (Image, 'D:/halcon_test/读取多张图片的方式/'+I$'1d')    get_image_size (Image, Width, Height)    dev_open_window (0, 0, Width, Height, 'black', WindowHandle)    dev_display (Image)endfor

第四种:

第四种方法  (读取一个文件夹下的所有图片)

【助手】-->【打开新的image acquisition 】-->【图像助手】-->【选择路径】-->【代码生成】-->【插入代码】

二、Region

Region可以理解为符合某些性质像素的子集。Region的形状可以是任意的,单独的个点都可以成为一个Region,Region结构是游程编码的一种变体;

游程(行程)编码:用一个符号值或串长代替具有相同值的连续符号,使符号长度少于原始数据的长度,属于无损压缩编码。

例子: AAABBBBBCCDDDD

游程编码:A3B5C2D4

threshold (Image, Region, 128, 255)

使用阈值分割图像,得到灰度值在最小到最大之间的那些像素区域(二值化算子对于彩图只针对第一通道二值化可以通过access_channel(MultiChannelImage : Image : Channel : )获取不同通道的图像再进行二值化)

3c7482860cd8c8f2ee21504e40c77b51.png

(1)basic基础特征:面积,中心,宽高,左上角及右下角坐标,长半轴短半轴椭圆方向,粗糙度,联通数,最大半径,方向等;

(2)shape形状特征:外接圆半径,内接圆半径,圆度,紧密度,长度,矩形度,凸性,偏心率,外接矩形的方向及两边长度等;

(3)几何矩特征:二阶矩,三阶矩,主惯性轴等;

48304ba5e6f9fe08f3fa1abda7d326ab.png

regiongrowing(Image : Regions : Row, Column, Tolerance, MinSize : )

* 区域填充分割图像 (生成的region可以通过select_shape算子选取凸性特征,convexity)

Row:掩膜Height;

Column:掩膜Width;

Tolerance:掩膜内灰度值差小于等于这个值则认为是同一个region;

MinSize:单个region的最小面积值;

48304ba5e6f9fe08f3fa1abda7d326ab.png

area_center(Regions : : : Area, Row, Column)

* 计算面积和任意形状的区域中心位置(中心位置不一定在region上)

union2(Region1, Region2 : RegionUnion : : )

* 把两个region合并成一个region

* region2中的对象会先合并成一个对象再与region1中的对象进行合并,合并后的regionUnion对象个数与region1一致;

difference(Region, Sub :RegionDifference : : )

* 计算两个区域的差 RegionDifference = Region - Sub

d36816c849e57e579d9806b2e64c814f.png

complement(Region : RegionComplement : : )

* 计算一个区域的补集

d59dca4ac2ae3163cc53b45df4599afd.png

92dd8b988049c278b7b48a28f8de2dd1.png

三、 XLD

相对于图像image和区域region,这些数据结构是像素精度的,在实际工业应用中,需要比图像像素分辨率更高的精度,这时就需要提取亚像素精度数据,亚像素精度数据可以通过亚像素阈值分割或者亚像素边缘提取来获得,这些处理得到的结果就是用亚像素轮廓来表示,XLD可以描述直线或者多边形,是一组有序控制点的集合。

threshold_sub_pix(Image : Border : Threshold : )

* 提取图像的XLD(提取XLD并不是沿着像素与像素交界的地方,而是经过插值处理后的位置)

select_shape_xld(XLD : SelectedXLD : Features, Operation, Min, Max : )

* 选择特定形状特征要求的XLD轮廓或多边形 (如面积,中心坐标,宽度,长度,圆度,紧密度等等)

select_contours_xld(Contours : SelectedContours : Feature, Min1, Max1, Min2, Max2 : )

* 选择多种特征要求的XLD轮廓(如轮廓长度,开闭特征等)

XLD与Region可以相互转化,与Region有许多相似之处。

5857537d125637e1c150f31e980f2356.png

1.basic基础特征:XLD面积,中心,宽高,左上角及右下角坐标;

2.shape形状特征:圆度,紧密度,长度,矩形度,凸性,偏心率,外接圆半径,外接矩形方向及长度等;

3.points云点特征:云点面积,中心,方向,等效椭圆半轴及角度等;

4.moments几何矩特征:二阶矩等;

XLD合并算子

union_collinear_contours_xld(Contours : UnionContours : MaxDistAbs, MaxDistRel, MaxShift, MaxAngle, Mode : )

* 合并近似同一直线的XLD

d25ddbd93945b6547cc4c936f58ae381.png

union_adjacent_contours_xld(Contours : UnionContours : MaxDistAbs, MaxDistRel, Mode : )

* 合并端点相近的XLD

XLD转换操作

shape_trans_xld(XLD: XLDTrans : Type : )

* 转换xld轮廓的形状

XLD分割操作

segment_contours_xld(Contours : ContoursSplit : Mode, SmoothCont, MaxLineDist1, MaxLineDist2 : )

* 将XLD分割成:直线,直线和圆,直线和椭圆

XLD拟合操作

fit_line_contour_xld

fit_circle_contour_xld

fit_ellipse_contour_xld

fit_rectangle2_contour_xld

trans_from_rgb

功能:转换一个图像从RGB空间转换到任意一个空间

HSV通道

色相(Hue):色彩的基本属性,如红色,黄色,蓝色,值范围0~360

饱和度(Saturation):色彩的纯度,值越高颜色越纯,值越低颜色越浅,它表示所选颜色和该颜色最大纯度之间的比率,范围0~1,当取值为0时只有灰度

明度(Intensity):表示色彩的明亮程度

一般Hue范围情况:

'Orange' -------> 10~30

'Red' -------> 0~10

'Blue' -------> 125~162

'Green' -------> 96~128

'Yellow' -------> 30~64

您可能感兴趣的与本文相关的镜像

Anything-LLM

Anything-LLM

AI应用

AnythingLLM是一个全栈应用程序,可以使用商用或开源的LLM/嵌入器/语义向量数据库模型,帮助用户在本地或云端搭建个性化的聊天机器人系统,且无需复杂设置

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值