halcon学习笔记

读取图片:

read_image (Image, 'C: /test.png')

halcon学习笔记_第1张图片

Halcon的一些基本数据结构:

(1)Image:指Halcon的图像类型,由矩阵数据组成,矩阵中的每个值表示一个像素。Image中含有单通道或者多通道的颜色信息。
(2)Region:指图像中的一块区域。该区域数据由点的坐标组成,表达的意义类似于一个范围。可以用Region来创建一个感兴趣区域(Region of Interest,ROI),该区域可以是任意形状,可以包含孔洞,甚至可以是不连续的点。
(3)XLD:指图像中某一块区域的轮廓,由Region边缘的连续的点组成。
(4)Tuple:类似于数组,可以用于存储一幅或多幅图像。如果要对一些图像进行批处理,可以将这些图像存入Tuple进行一次性处理。

阈值处理并计数demo:

halcon学习笔记_第2张图片

read_image(ImageBase,'D:/data/a.png')
*获取图像的大小,以建立合适尺寸的窗口
*get_image_size (ImageBase, Width, Height)
*创建新的显示窗口
*dev_open_window (0, 0, Width/2, Height/2, 'black', WindowHandle)
*将图像转换为单通道灰度图像
rgb1_to_gray(ImageBase,GrayImage)
dev_display (GrayImage)
*使用阈值处理提取较暗部分
threshold (GrayImage, DarkArea, 0, 80)
*填充区域
fill_up (DarkArea, RegionFillUp)
*将不相连的区域整体分割成独立的区域
connection (RegionFillUp, ConnectedRegions)
*排除杂点,将面积较大的目标选择出来
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and',0, 1000)

halcon学习笔记_第3张图片

二、仿射变换

halcon学习笔记_第4张图片

halcon学习笔记_第5张图片

平移:

read_image(ImageBase,'D:/data/a.png')
*创建一个空的仿射变换矩阵
hom_mat2d_identity (HomMat2DIdentity)
*向y方向平移30个像素,x方向平移20个像素
hom_mat2d_translate (HomMat2DIdentity, 30,20, HomMat2DTranslate)
affine_trans_image(ImageBase, ImageAffineTrans, HomMat2DTranslate, 'constant', 'false')

旋转:

read_image(ImageBase,'D:/data/a.png')
*创建一个空的仿射变换矩阵
hom_mat2d_identity (HomMat2DIdentity)
*以(300,100)为参考点旋转30度
hom_mat2d_rotate(HomMat2DIdentity,30,300, 100, HomMat2DRotate)
affine_trans_image(ImageBase, ImageAffineTrans, HomMat2DRotate, 'constant', 'false')

缩放:

read_image(ImageBase,'D:/data/a.png')
*创建一个空的仿射变换矩阵
hom_mat2d_identity (HomMat2DIdentity)
*以(250,150)为参考点放大两倍
hom_mat2d_scale(HomMat2DIdentity,2, 2,250,150, HomMat2DScale)
affine_trans_image(ImageBase, ImageAffineTrans, HomMat2DScale, 'constant', 'false')

halcon学习笔记_第6张图片

三、透视变换(待完善):

halcon学习笔记_第7张图片

read_image(ImageBase,'D:/data/b.png')
rgb1_to_gray(ImageBase, GrayImage)
*获取图像的尺寸
get_image_size(GrayImage, Width, Height)
*新建显示窗口,适应图像尺寸
dev_open_window(0, 0, Width, Height, 'black', WindowHandle)
dev_display(GrayImage)
*初始化角点坐标
XCoordCorners:=[]
YCoordCorners:=[]
*阈值处理,提取较暗的区域
threshold(GrayImage,DarkRegion,0, 80)

halcon学习笔记_第8张图片

*分离不相连的区域
connection (DarkRegion, ConnectedRegions)

halcon学习笔记_第9张图片

*选择面积最大的暗色区域,即屏幕区域
select_shape_std (ConnectedRegions, displayRegion, 'max_area', 70)
*裁剪屏幕区域
reduce_domain (GrayImage, displayRegion, displayImage)
*创建边缘轮廓
gen_contour_region_xld (displayRegion, Contours, 'border')

*将轮廓分割为边
segment_contours_xld (Contours, ContoursSplit, 'lines', 5, 4, 2)
*获取边的数量
count_obj (ContoursSplit, Number)
*存储每条边的起点位置
for index:=1 to Number by 1 
    select_obj(ContoursSplit, ObjectCurrent, index)
*拟合每条边
    fit_line_contour_xld(ObjectCurrent, 'tukey', -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)
endfor

四、ROI

read_image(ImageBase,'D:/data/b.png')
get_image_size(ImageBase, Width, Height)
dev_open_window(0, 0, Width, Height, 'black', WindowHandle)
dev_display(ImageBase)
*选择ROI,指定矩形顶点坐标(y1,x1,y2,x2)
gen_rectangle1(Rectangle, 30, 10, 320, 450)
*从原图中分割出ROI
reduce_domain(ImageBase, Rectangle, ImageReduced)

五、图像增强

5.1、直方图均衡化

read_image(ImageBase,'D:/data/c.png')
rgb1_to_gray(ImageBase, GrayImage)
*直方图均衡化
equ_histo_image(GrayImage, ImageEquHisto)
*显示直方图
*原始直方图
gray_histo(GrayImage,GrayImage, AbsoluteHisto1, RelativeHisto1)
*均衡化后的直方图
gray_histo(ImageEquHisto,ImageEquHisto, AbsoluteHisto2, RelativeHisto2)

5.2、对比度增强

增强边缘对比度:

read_image(ImageBase,'D:/data/d.png')
emphasize(ImageBase, ImageEmphasize, 10, 10, 1.5)
dev_display(ImageEmphasize)

增强明暗对比度:

read_image(ImageBase,'D:/data/d.png')
scale_image_max(ImageBase, ImageScaleMax)
dev_display(ImageScaleMax)

5.3、处理失焦图像

read_image(ImageBase,'D:/data/e.png')
*使用canny
shock_filter(ImageBase, SharpenedImage, 0.5, 20, 'canny', 1)
*使用拉普拉斯
*shock_filter(ImageBase, SharpenedImage, 0.5, 20, 'laplace', 1)
dev_display(SharpenedImage)

5.4、图像平滑与去噪

read_image(ImageBase,'D:/data/f.png')
*均值滤波
*mean_image(ImageBase, ImageMean, 9, 9)
*中值滤波,circle表示邻域的形状,也可以选择square,卷积核的尺寸,这里选择3。continued表示边界的处理方式,因为边界处往往无法移动滤波“窗口”,因此需要对像素做一些补充。这里选择continued,表示延伸边界像素。也可以选择cyclic,表示循环延伸边界像素
*median_image(ImageBase, ImageMedian, 'circle', 3, 'continued')
*高斯滤波
gauss_filter(ImageBase, ImageGauss, 5)
dev_display(ImageGauss)

5.5 光照不均匀

采用通道分离的方式对彩色图像进行光线均衡化处理:
read_image(ImageBase,'D:/data/g.png')
*子将图像分离成红绿蓝3个通道,并将每个通道单独存成一幅图像。
decompose3(ImageBase, Image1, Image2, Image3)
mean_image(Image1, ImageMean1, 9, 9)
*对每个颜色通道的图像进行直方图均衡,使其色彩过渡更加平滑。
emphasize(ImageMean1,em1, 5, 5, 1.5)
illuminate(em1,Image1,20,20,0.55)
equ_histo_image(Image2, ImageEquHisto2)

六、图像分割

图像分割的标准可以是像素的灰度、边界、几何形状、颜色,甚至是纹理。

6.1、全局阈值处理

read_image(ImageBase,'D:/data/h.png')
rgb1_to_gray(ImageBase, GrayImage)
*DarkArea为输出的区域,类型为Region
threshold(GrayImage,DarkArea,0, 128)

6.2、基于直方图的自动阈值分割方法

其原理是,以灰度直方图中出现的谷底为分割点,对灰度直方图的波峰进行分割。因此,有多少个波峰,就会分割出多少个区域。
read_image(ImageBase,'D:/data/i.png')
rgb1_to_gray(ImageBase, GrayImage)
auto_threshold(GrayImage, Regions, 8)

二值阈值分割:

read_image(ImageBase,'D:/data/h.png')
rgb1_to_gray(ImageBase, GrayImage)
*max_separability,表示在直方图中对最大的可分性进行分割;也可以选择smooth_histo,表示平滑直方图
*dark,表示提取较暗的部分;也可以选择light,表示提取较亮的部分
binary_threshold(GrayImage, Region, 'max_separability', 'dark', UsedThreshold)

6.3、局部阈值分割方法

dyn_threshold算子利用局部像素灰度差进行分割:

read_image(ImageBase,'D:/data/h.png')
rgb1_to_gray(ImageBase, GrayImage)
*由于图像对比度比较低,因此对图像进行相乘,增强对比度
mult_image (GrayImage, GrayImage, ImageResult, 0.005, 0)
*使用平滑滤波器对原始图像进行适当平滑
mean_image (ImageResult, ImageMean, 50,50)
*动态阈值分割,提取字符区域
dyn_threshold (ImageResult, ImageMean, RegionDynThresh, 4, 'not_equal')
read_image(ImageBase,'D:/data/j.png')
rgb1_to_gray(ImageBase, GrayImage)
mean_image(GrayImage, ImageMean, 30, 30)
dyn_threshold(GrayImage, ImageMean, RegionDynThresh, 30, 'light')

halcon学习笔记_第10张图片

var_threshold算子分割的依据是局部的均值和标准差,选择图像中邻域像素满足阈值条件的区域进行分割,使用var_threshold算子进行阈值分割后的图像,灰度变化符合阈值的区域被提取了出来:
read_image(ImageBase,'D:/data/k.png')
rgb1_to_gray(ImageBase, GrayImage)
*设置矩形,选择感兴趣区域
gen_rectangle1(Rectangle,90,83,492,702)
reduce_domain(GrayImage, Rectangle, ImageReduced)
*主要是调整20这个参数
var_threshold(ImageReduced,Rectangle, 15, 15, 0.2,20, 'dark')

halcon学习笔记_第11张图片

halcon学习笔记_第12张图片

char_threshold适用于在明亮的背景上提取黑暗的字符:
read_image(ImageBase,'D:/data/l.png')
rgb1_to_gray(ImageBase, GrayImage)
char_threshold(GrayImage, GrayImage, Characters, 2, 95, Threshold)
适用于直方图的波峰之间没有明确的谷底的情况,或者是直方图没有明确 的峰值的情况。
双阈值处理dual_threshold。

6.4、区域生长法

halcon学习笔记_第13张图片

read_image(ImageBase,'D:/data/m.png')
mean_image(ImageBase, ImageMean, 5, 5)
regiongrowing(ImageMean, Regions, 3, 3, 6, 100)
regiongrowing_mean算子的输入需要是灰度均值图像
read_image(ImageBase,'D:/data/m.png')
median_image(ImageBase, ImageMedian, 'circle', 1, 'mirrored')
*寻找颜色相似的邻域
regiongrowing(ImageMedian, Regions, 3, 3, 6, 100)
*对图像进行粗略的区域分割,提取满足条件的各个独立区域
shape_trans(Regions, RegionTrans, 'convex')
connection(RegionTrans, ConnectedRegions)
*计算出初步提取的区域的中心点坐标
area_center(ConnectedRegions, Area, Row, Column)

6.5、分水岭算法

watersheds(Image : Basins, Watersheds : : )
(1)参数1:Image为输入的图像,一般为单通道图像。这里要注意,因为盆地一般指的是灰度值低的区域,所以如果前景目标比较亮而背景比较暗,可以在导入图像后使用invert_image算子将图像颜色进行反转。
(2)参数2:Basins为输出的盆地区域。
(3)参数3:Watersheds为输出的分水岭区域。一般一幅输入图像对应一个分水岭区域,而输出的Basins区域则是多个区域的集合。
watersheds_threshold(Image : Basins:Threshold: )
(1)参数1:Image为输入的图像,一般为单通道图像。如果前景目标比较亮而背景比较暗,可以在导入图像后使用invert_image算子将图像颜色进行反转。
(2)参数2:Basins为输出的盆地区域。
(3)参数3:Threshold为设置的灰度阈值。建议该值不要超过原图的最大灰度,否则将无法提取出分水岭,图像整体将作为一个区域被提取出来。
read_image(ImageBase,'D:/data/000.png')
rgb1_to_gray(ImageBase, GrayImage)
gauss_filter(GrayImage, ImageGauss, 11)
watersheds(ImageGauss, Basins, Watersheds)

七、彩色图像处理与纹理分析

Bayer图像,即每个像素只有一个颜色分量的图像。
texture_laws算子提供了各种纹理滤波器的集合。滤波器的类型有7种:level、edge、spot、wave、ripple、undulation、oscillation。
(1)参数1为输入图像Image。
(2)参数2为输出纹理。
(3)参数3为滤波的类型FilterType。这里的类型参数由两个字母组成,两个字母都取自7种滤波器类型的首字母,如l表示level,e表示edge,s表示spot等。第1个字母表示行方向上的滤波类型,第2个字母表示列方向上的滤波类型,如ss表示两个方向都使用spot滤波器。
(4)参数4为偏移量shift。当灰度值大于255时,可降低灰度值。
该参数用于调整结果图像的灰度,默认为2。
(5)参数5为滤波器的卷积核尺寸,默认为5,可选择的有3、5、7。
read_image(ImageBase,'D:/data/n.png')
*将图像分解成R、G、B3个通道
decompose3(ImageBase, Image1, Image2, Image3)
*将R、G、B3个通道的图像转化为HSV颜色空间
trans_from_rgb(Image1, Image1, Image1, ImageResult1, ImageResult2, ImageResult3, 'hsv')
*进行纹理检测,其中选择的滤波器类型是ls,即行方向用level,列方向用spot进行检测*这种滤波器类型适合检测垂直方向上的缺陷
texture_laws(ImageResult2, ImageTexture, 'ls', 2, 7)
*对经过滤波器处理后的图像进行均值化,使图像更平滑,缺陷区域更明显
mean_image(ImageTexture, ImageMean, 11, 11)
*对检测出的缺陷区域进行形态学处理并显示出来
threshold(ImageMean, Region,60, 255)
*将符合条件的区域分割成独立区域
connection(Region, ConnectedRegions)

例:木材截面图像的分割与计数

read_image(ImageBase,'D:/data/o.png')
get_image_size(ImageBase, Width, Height)
rgb1_to_gray(ImageBase, GrayImage)
*进行全局阈值分割,将亮色区域提取出来
threshold(GrayImage,Bright,60, 255)
*进行开运算处理,去除边缘毛刺
opening_rectangle1(Bright,Cut,1,7)
*将非连通区域分割成独立区域
connection(Cut, ConnectedRegions)
*选择截面比较小的木材的区域
select_shape(ConnectedRegions, smallRegions, 'area', 'and',500,20000)
*对粘连区域做腐蚀操作,根据腐蚀的情况和面积选出截面区域
count_obj(smallRegions,Number1)
*选择截面比较大的木材的区域,可能有粘连和区域重叠的情况
select_shape(ConnectedRegions,largeRegions, 'area', 'and', 20000,1000000)
erosion_circle(largeRegions, erisionedLargeRegions, 8.5)
*将非连通区域分割成独立区域
connection(erisionedLargeRegions, ConnectedRegions2)
*再次选择符合面积条件的区域,排除杂点
select_shape(ConnectedRegions2, SelectedRegions, 'area', 'and', 150, 99999)

八、特征提取

area_center返回面积和中心点。(阈值分割提取物体并计数实例)

read_image(ImageBase,'D:/data/k.png')
get_image_size(ImageBase, Width, Height)
dev_open_window(0, 0, Width, Height, 'black', WindowHandle)
rgb1_to_gray(ImageBase, GrayImage)
*创建矩形选区,选择感兴趣区域
gen_rectangle1(Rectangle, 90,83,492,702)
reduce_domain(GrayImage, Rectangle, ROI)
*阈值处理,提取其中的圆孔
threshold(ROI, Region,0,90)
*将提取的整个区域中不相连的部分分割成独立的区域
connection(Region, ConnectedRegions)
*获取不相连的区域的数量
count_obj(ConnectedRegions, Number)
*计算所有不相连区域的面积和中心点坐标
area_center(ConnectedRegions, Area, Row, Column)
area_holes算子计算图像中封闭区域(孔洞)的面积,返回所有孔洞区域的面积之和。
area_holes(Region, Area)

select_shape算子能高效地根据特征提取出符合条件的区域

select_shape(Regions :SelectedRegions : Features, Operation, Min, Max : )

参数1和参数2分别表示输入和输出的区域,值得关注的是参数3 Features。这里提供了一个包括多种特征参数的列表,基本包括了区域的常用特征,使用者只需要选择需要的特征,并设置筛选条件,就能得到需要的区域。
(1)area:输入区域的面积。
(2)row:输入区域中心点的行坐标。
(3)column:输入区域中心点的列坐标。
(4)width:输入区域的宽度。
(5)height:输入区域的高度。
(6)circularity:输入区域的圆度。
(7)compactness:输入区域的紧密度。
(8)convexity:输入区域的凸包性。
(9)rectangularity:输入区域的矩形度。
(10)outer_radius:输入区域的最小外接圆的半径。
(11)inner_radius:输入区域的最大内接圆的半径。
(12)inner_width:输入区域的与坐标轴平行的最大内接矩形的宽度。
(13)inner_height:输入区域的与坐标轴平行的最大内接矩形的宽度。
(14)connect_num:输入区域中非连通区域的数量。
(15)holes_num:输入区域包含的孔洞数量。
(16)max_diameter:输入区域的最大直径。
使用select _shape算子进行面积筛选,无须单独计算每个区域的具体面积。
read_image(ImageBase,'D:/data/p.png')
dev_open_window_fit_image(ImageBase, 0, 0, -1, -1, WindowHandle)
*设置绘制的颜色
dev_set_color('white')
rgb1_to_gray(ImageBase, GrayImage)
*创建矩形选区,选择感兴趣区域
gen_rectangle1(Rectangle,80, 100, 300, 400)
reduce_domain(GrayImage, Rectangle,ROI)
gen_image_proto(ROI, ImageCleared, 0)
*进行阈值处理,提取出图中较暗的包含孔洞的区域
threshold(ROI, Region,50, 255)
*将不连通的部分独立分割出来,成为一组区域
connection(Region, ConnectedRegions)
*设置绘制的颜色,为了标记选择的区域
dev_set_color('magenta')
select_shape(ConnectedRegions, SelectedRegions, 'width', 'and',100,200)
使用inner_circle算子求最大内接圆,smallest_rectangle2算子求最小外接矩形的中心和几何参数
read_image(ImageBase,'D:/data/p.png')
get_image_size(ImageBase, Width, Height)
dev_open_window(0, 0, Width, Height, 'black', WindowHandle)
rgb1_to_gray(ImageBase, GrayImage)
gen_rectangle1(Rectangle,80, 100, 300, 400)
reduce_domain(GrayImage, Rectangle,ROI)
threshold(ROI, Region,50, 255)
connection(Region, ConnectedRegions)
select_shape_std(ConnectedRegions, SelectedRegions, 'max_area', 70)
*圆
inner_circle(SelectedRegions, Row, Column, Radius)
*矩形
smallest_rectangle1(SelectedRegions, Row1, Column1, Row2, Column2)
*最小外接矩形
smallest_rectangle2(SelectedRegions, Row1, Column1, Phi, Length1, Length2)
inner_rectangle1算子可以用来求一个区域的最大内接矩形,smallest_rectangle1算子可以用来求最小外接矩形。

8.2、基于灰度值的特征

gray_features算子用于计算指定区域的灰度特征值。其输入是一组区域,每个区域的特征都存储在一组value数组中。
基于灰度值的特征如下
(1)area:灰度区域面积。
(2)row:中心点的行坐标。
(3)colum:中心点的列坐标。
(4)ra:椭圆的长轴。
(5)rb:椭圆的短轴。
(6)phi:等效椭圆的角度。
(7)min:灰度的最小值。
(8)max:灰度的最大值。
(9)mean:灰度的均值。
(10)deviation:灰度值的偏差。
(11)plane_deviation:近似平面的偏差。
gray_features ( Regions, Image : : Features : Value )
参数1:Regions(输入参数),表示要检查的一组区域。
参数2:Image(输入参数),表示灰度值图像。
参数3:Features(输入参数),表示输入的特征的名字
参数4:Value(输出参数),表示输出的特征的值。
read_image(Image, 'D:/data/q.png')
threshold(Image, Region, 1, 255)
*提取区域中的最小最大灰度值
gray_features(Region, Image, 'min',MinDisp)
gray_features(Region, Image, 'max',MaxDisp)
min_max_gray算子计算区域的最大与最小灰度值。
min_max_gray ( Regions, Image : : Percent : Min, Max, Range )
其各参数的含义如下。
参数1:Regions(输入参数),表示图像上待检查的一组区域。
参数2:Image(输入参数),表示输入的灰度值图像。
参数3:Percent(输入参数),表示低于最大绝对灰度值的百分比。
参数4:Min(输出参数),表示最小的灰度值。
参数5:Max(输出参数),表示最大的灰度值。
参数6:Range(输出参数),表示最大和最小值之间的区间
设置一个百分比值,设为5,即取直方图波峰与谷底之间的区域,向内收缩5
%:
read_image(Image, 'D:/data/q.png')
threshold(Image, Region, 1, 255)
*提取该区域中的最大和最小灰度值
min_max_gray(Region, Image,5, Min, Max, Range)
intensity算子用于计算单张图像上多个区域的灰度值的平均值和偏差
intensity ( Regions, Image : : : Mean, Deviation )
其各参数的含义如下
参数1:Regions(输入参数),表示图像上待检查的一组区域。
参数2:Image(输入参数),表示输入的灰度值图像。
参数3:Mean(输出参数),表示输出的单个区域的灰度平均值。
参数4:Deviation(输出参数),表示输出的单个区域的灰度偏差
read_image(Image, 'D:/data/q.png')
threshold(Image, Region, 1, 255)
*提取该区域中灰度值的平均值和偏差
intensity(Region, Image, Mean, Deviation)
area_center_gray算子计算一幅灰度值图像的面积和中心
area_center_gray(Region, Image: : : Area, Row, Colum)
其各参数的含义如下
参数1:Regions(输入参数),表示要检查的区域。
参数2:Image(输入参数),表示灰度值图像。
参数3:Area(输出参数),表示区域的总灰度值。
参数4:Row(输出参数),表示灰度值重心的行坐标。
参数5:Column(输出参数),表示灰度值重心的列坐标
read_image(Image, 'D:/data/q.png')
threshold(Image, Region, 1, 255)
area_center_gray(Region, Image, Area, Row, Column)

8.3、根据灰度特征值选择区域

select_gray算子能接受一组区域作为输入,然后根据选定的特征计算其是否满足特定的条件。当所有区域的特征都计算结束后,图像将在原来的灰度图上输出符合设定条件的区域。
select_gray ( Regions, Image : SelectedRegions : Features, Operation, Min, Max : )
参数1:Regions(输入参数),表示图像上待检查的一组区域。
参数2:Image(输入参数),表示输入的单通道图像。
参数3:SelectedRegions(输出参数),表示特征的局部关联性。
参数4:Features(输入参数),表示选择的特征。
参数5:Operation(输入参数),表示低于最大绝对灰度值的百分比。
参数6:Min(输入参数),表示最小的灰度值,默认为128。
参数7:Max(输入参数),表示最大的灰度值,默认为255。
用灰度偏差特征将偏差较小的区域提取出来:
read_image(Image, 'D:/data/m.png')
get_image_size(Image, Width, Height)
dev_open_window(0, 0, Width, Height, 'white', WindowHandle)
rgb1_to_gray(Image, GrayImage)
*使用均值滤波对灰度图像进行平滑处理,以去除细节杂点
median_image(GrayImage, ImageMedian, 'circle', 2, 'mirrored')
*进行阈值处理,提取出较暗部分
threshold(ImageMedian, Region,50,130)
*使用开运算将各区域分离
opening_circle(Region, RegionOpening, 3.5)
*将不连通的区域分隔开来
connection(RegionOpening, ConnectedRegions)
*将面积较大的区域提取出来
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and',10000, 99999)

8.3、根据纹理特征值选择区域

纹理特征是在包含多个像素点的区域进行统计和分析,反映的是物体表面的一些特性,它可以用来反映物体表面灰度像素的排列状况。
图像的纹理特征一般包括图像的能量、相关性、局部均匀性、对比度等。
Halcon中使用灰度共生矩阵来描述这些特征。
灰度共生矩阵就是表现这一对灰度值的取值范围和频率的矩阵。
该矩阵 的行或者列的维度为原图的灰度等级数。二值图像,灰度等级就为2,灰度共生矩阵的维度也为2。

你可能感兴趣的:(学习,笔记)