工业软件Halcon的常用功能及常用工具展示

工业软件Halcon的常用功能及常用工具展示

  • 1.BLOB+特征
  • 2.BLOB+差分+特征
  • 3.光度立体
  • 4.特征训练
  • 5. 测量拟合
  • 6. 频域+空间域结合法
  • 7.深度学习法
  • 总结

1.BLOB+特征

官方示例子:surface_scratch.hdev
该程序显示了通过局部阈值和形态学后处理提取表面划痕,一共分为三步:
1)获取图像;
2)分割图像,使用局部阈值进行分割;
3)形态学处理,选择大面积的区域,可视化分数划痕,通过形态学合并细分划痕,最后区分大小划痕。

输出的结果:

在这里插入图片描述
界面:

在这里插入图片描述
途中了解了一下局部阈值分割算子:dyn_threshold
dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )
参数:
OrigImage (input_object):原始图像
ThresholdImage (input_object):处理后图像(一般采用滤波处理)
RegionDynThresh (output_object):分割后区域
Offset (input_control):灰度值偏移量。
LightDark (input_control):提取区域类型( ‘dark’, ‘equal’, ‘light’, ‘not_equal’)
给定具体的条件,该算子可以分割出不同的区域:
在这里插入图片描述
ThresholdImage图可以通过mean_image, binomial_filter, gauss_filter等滤波方式处理。
滤波选择的掩膜尺寸越大,提取的区域越大。根据经验,掩膜大小选择应该是要提取目标直径的两倍。参数Offset不要设置0,否则将会提取到很多小的噪点区域,一般介于5-40最佳,其值越大,提取的区域越小。
示例代码和其子函数:

在这里插入图片描述
在这里插入图片描述
其中子函数的参数设置为:

在这里插入图片描述

在均值滤波后的四种不同的结果如下:

在这里插入图片描述

2.BLOB+差分+特征

例子:PCB电路板的缺陷检测
检测的步骤为:
1)进行灰度开运算,减少亮区;
2)进行灰度闭运算,增大亮区;
3)提取亮区和暗区,得到检测的缺陷。
代码为:

read_image (Image, 'pcb')
dev_close_window ()
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)
gray_opening_shape (Image, ImageOpening, 7, 7, 'octagon')
gray_closing_shape (Image, ImageClosing, 7, 7, 'octagon')
dyn_threshold (ImageOpening, ImageClosing, RegionDynThresh, 75, 'not_equal')
dev_display (Image)
dev_set_color ('red')
dev_set_draw ('margin')
dev_display (RegionDynThresh)

界面:

在这里插入图片描述

运行的结果:

在这里插入图片描述

3.光度立体

光度立体法可以看作是2.5维,适用于检测金属物料上面的凹凸特征。利用该方法可以重建法向量,将灰度图变成曲率图。
Halcon中的算子为:

1)photometric_stereo (Images : HeightField, Gradient, Albedo : Slants, Tilts, ResultType, ReconstructionMethod, GenParamName, GenParamValue : )
其中:

  • Images:输入图像(4张)
  • HeightField:返回重建高度场
  • Gradient:返回表面的梯度场
  • Albedo: 表面的反射率
  • Slants:光源光线与摄像机光轴的夹角(下面有示意图)
  • Tilts: 光源光线投影与被测物主轴的夹角
  • ResultType: 请求结果类型(高度场/梯度场/反射率)
  • ReconstructionMethod: 重建方法类型
  • GenParamName: 一般参数名称
  • GenParamValue: 一般参数设置

2)derivate_vector_field(VectorField : Result : Sigma, Component : )
其中:

  • VectorField: 梯度场图像
  • Result: 返回平均曲率场图像
  • Sigma: 高斯系数
  • Component: 组件计算
    示例:药片外包装破损的检测
    光度立体法的代码:
read_image (Images, './blister_back_0' + [1:4])
for I := 1 to 4 by 1select_obj (Images, ObjectSelected, I)*wait_seconds (0.1)
endfor
Tilts := [6.1,95.0,-176.1,-86.8]
Slants := [41.4,42.6,41.7,40.9]
* 光度立体
photometric_stereo (Images, HeightField, Gradient, Albedo, Slants, Tilts, 'all', 'poisson', [], [])
* 梯度场转平均曲率场
derivate_vector_field (Gradient, Result, 1, 'mean_curvature')
*scale_image_max (Result, ImageScaleMax)
* 种子生长
regiongrowing (Result, Regions, 1, 1, 0.01, 250)
select_shape (Regions, SelectedRegions, 'area', 'and', 16332.6, 28629.5)
shape_trans (SelectedRegions, RegionTrans, 'convex')
union1 (RegionTrans, RegionUnion)
erosion_circle (RegionUnion, RegionErosion, 3.5)
reduce_domain (Result, RegionErosion, ImageReduced)
* 求图像的绝对值
abs_image (ImageReduced, ImageAbs)
threshold (ImageAbs, Regions1, 0.3, 0.5)
* 显示
count_obj (Regions1, Number)
if(Number>0)area_center (Regions1, Area, Row, Column)gen_circle_contour_xld (ContCircle, Row, Column, 20, 0, 6.28318, 'positive', 1)dev_set_color ('blue')dev_set_line_width (2)dev_display (Result)dev_display (ContCircle)    
endif

主要是利用光度立体法和梯度场转换为平均曲率场来检测缺陷,结果为:

在这里插入图片描述

4.特征训练

特征训练的方法要求训练样本必须完美无瑕疵,整体步骤为:

1)创建模型:create_texture_inspection_model或者读取模型:read_texture_inspection_model;
2)添加训练样本:add_texture_inspection_model_image;
3)查看样本get_texture_inspection_model_image
4)训练模型train_texture_inspection_model

案例:apply_texture_inspection_model.hdev

该示例程序展示了如何微调纹理检查模型。首先,使用一组无误差纹理图像创建并训练纹理检查模型;然后,对其中一个有缺陷的测试图像进行参数微调;最后,测试有缺陷和无缺陷图像的集合
首先,创建模型,添加训练样本(完好无损的图像):

TrainingImageIndices := [1,2]
TextureModelFilename := 'texture_model_carpet'
dev_open_window_fit_size (0, 0, Width, Height, -1, -1, WindowHandle1)
dev_display (Image)
create_texture_inspection_model ('basic', TextureInspectionModel)
for Index := 0 to |TrainingImageIndices| - 1 by 1
read_image (Image, 'carpet/carpet_' + TrainingImageIndices[Index]$'02')
dev_display (Image)
Message := '添加图片 ' + (Index + 1) + ' of ' + |TrainingImageIndices| + '训练准备'
dev_disp_text (Message, 'window', 12, 12, 'black', [], [])
add_texture_inspection_model_image (Image, TextureInspectionModel, Indices)
endfor

在这里插入图片描述
在这里插入图片描述

然后,初步设置参数后,开始训练:

*参数设定'patch_normalization''weber'对亮度鲁棒,‘none’需要亮度作为评判(默认)
set_texture_inspection_model_param(TextureInspectionModel, 'patch_normalization', 'weber')
Levels := [2,3,4]
set_texture_inspection_model_param (TextureInspectionModel, 'levels', Levels)
train_texture_inspection_model (TextureInspectionModel)
*查看样本参数'novelty_threshold',阈值,自动计算得到,若结果不理想,可以手动微调。
get_texture_inspection_model_param (TextureInspectionModel, 'novelty_threshold', NoveltyThreshold)
*之后get_texture_inspection_result_object读取'novelty_score_image''novelty_region'set_texture_inspection_model_param (TextureInspectionModel, 'gen_result_handle', 'true')

在这里插入图片描述

其次,对缺陷图像初测试,显示测试结果:

WindowWidth := 320
WindowHeight := 280
dev_open_window (0, 0, WindowWidth, WindowHeight, 'black', WindowHandle1)
set_display_font (WindowHandle1, 16, 'mono', 'true', 'false')
dev_open_window(0, WindowWidth + 8, WindowWidth, WindowHeight, 'black', WindowHandle2)
set_display_font (WindowHandle2, 16, 'mono', 'true', 'false')
dev_open_window(0, 2 * WindowWidth + 16, WindowWidth, WindowHeight, 'black', WindowHandle3)
set_display_font (WindowHandle3, 16, 'mono', 'true', 'false')
dev_open_window(WindowHeight + 50, WindowWidth / 2 + 8, 2 * WindowWidth, 2 * WindowHeight, 'black', WindowHandle4)
set_display_font (WindowHandle4, 16, 'mono', 'true', 'false')
WindowHandles := [WindowHandle1,WindowHandle2,WindowHandle3]for Index := 1 to 3 by 1ImageIndex := 5read_image (TestImage, 'carpet/carpet_' + ImageIndex$'02')*测试当前图像apply_texture_inspection_model (TestImage, NoveltyRegion, TextureInspectionModel, TextureInspectionResultID)get_texture_inspection_result_object (NovScoreImage, TextureInspectionResultID, 'novelty_score_image')get_texture_inspection_result_object (NovRegion, TextureInspectionResultID, 'novelty_region')count_obj (NovScoreImage, Number)for Level := 1 to Number by 1CurrentWindow := WindowHandles[Level - 1]dev_set_window (CurrentWindow)dev_clear_window ()select_obj (NovScoreImage, NovScoreImageL, Level)select_obj (NovRegion, NovRegionL, Level)get_image_size (NovScoreImageL, Width, Height)dev_set_part (0, 0, Height - 1, Width - 1)dev_display (NovScoreImageL)Legend := 'Novelty region (level ' + Levels[Level - 1] + ')'dev_set_color ('red')dev_set_line_width (2)dev_display (NovRegionL)dev_disp_text (['Novelty score image (level ' + Levels[Level - 1] + ')','Novelty threshold: ' + NoveltyThreshold[Level - 1]$'.1f'], 'window', 12, 12, 'black', [], [])dev_disp_text (Legend, 'window', WindowHeight - 30, 12, 'white', ['box_color','shadow'], ['black','false'])endfordev_set_window (WindowHandle4)dev_display (TestImage)dev_set_line_width (2)dev_set_color ('red')dev_display (NoveltyRegion)area_center (NoveltyRegion, Area, Row, Column)if (Index < 3)dev_disp_text ('Result', 'window', 12, 12, 'black', [], [])elsedev_disp_text ('Final result', 'window', 12, 12, 'black', [], [])endif

在这里插入图片描述

最后,根据测试结果进行微调参数:

     if (Index == 1)Message[0] := '图像中有很多小错误.'Message[1] := '可以通过改变 novelty thresholds的值来调整灵敏度(sensitivity—)'Message[2] := '例如减少灵敏度参数的值'dev_disp_text (Message, 'window', 12, 12, 'black', [], [])set_texture_inspection_model_param (TextureInspectionModel, 'sensitivity', -10)get_texture_inspection_model_param (TextureInspectionModel, 'novelty_threshold', NoveltyThreshold)endifif (Index == 2)Message := '也可以通过直接操纵新颖性边界来单独调整单个级别的敏感度'dev_disp_text (Message, 'window', 12, 12, 'black', [], [])set_texture_inspection_model_param (TextureInspectionModel, 'sensitivity', 0)Offset := [25,10,30]get_texture_inspection_model_param (TextureInspectionModel, 'novelty_threshold', NoveltyThreshold)set_texture_inspection_model_param (TextureInspectionModel, 'novelty_threshold', Offset + NoveltyThreshold)get_texture_inspection_model_param (TextureInspectionModel, 'novelty_threshold', NoveltyThreshold)endifendfor 
for Level := 1 to |WindowHandles| by 1dev_set_window (WindowHandles[Level - 1])dev_clear_window ()
endfor
dev_set_window (WindowHandle4)
dev_clear_window ()

在这里插入图片描述
在这里插入图片描述

补充:
Patch:相邻像素的集合。
Novelty Score:在测试过程中,将测试图像的纹理特征与纹理检查模型进行比较,并计算它们的’novelty score’。 该值越大,单个纹理特征越不适合纹理检查模型的可能性越大。
Novelty Threshold:Novelty Score高于该阈值,则纹理有缺陷。
“ novelty_region”是通过组合不同金字塔等级的新颖性区域而生成的,即不同层级金字塔组成的交集区域。如果只有单层金字塔,那么该层的新颖性区域直接就是novelty_region。

5. 测量拟合

测量用到的算子:

gen_measure_rectangle2(Row, Column, Angle, Length1, Length2, Width, Height, ‘bilinear’, MeasureHandle)
该算子的参数:
Length1:半宽
Length2:半高
Width:测量图像的宽
Height:测量图像的高
measure_pairs(Fuse, MeasureHandle, 1, 1, ‘negative’, ‘all’, RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)
Sigma:平滑参数
Threshold:最小边缘振幅
Transition:找的正边缘还是负边缘(第一个边缘)
Select :选第一条边,还是最后一条,还是所有的边
RowEdgeFirst:边缘对中的第一个边缘的行坐标
ColumnEdgeFirst:边缘对中第一个边缘的列坐标
AmplitudeFirst:边缘对中第一个边缘的幅度值(就是一阶导数)
RowEdgeSecond:边缘对中的第二个边缘的行坐标
ColumnEdgeSecond:边缘对中第二个边缘的列坐标
AmplitudeSecond:边缘对中第二个边缘的幅度值(就是一阶导数)
IntraDistance :边缘对中左右边缘之间的距离
InterDistance:相邻两个边缘对中心的的距离
measure_pairs(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)
measure_pos (Fuse, MeasureHandle, 1, 30, ‘all’, ‘all’, RowEdge, ColumnEdge, Amplitude, Distance)
measure_pos(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdge, ColumnEdge, Amplitude, Distance)

一维测量:

1.gen_measure_rectangle2 (Row, Column, Angle, Length1, Length2, Width, Height, ‘bilinear’, MeasureHandle)
2.measure_pairs (Fuse, MeasureHandle, 1, 1, ‘negative’, ‘all’, RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)
3.close_measure (MeasureHandle)

结果:

在这里插入图片描述

测量助手:

在这里插入图片描述

拟合的示例:

首先提取边缘轮廓,然后进行阈值分割并提取骨架,最后生成轮廓。
read_image (Image, ‘fabrik’)
edges_image (Image, ImaAmp, ImaDir, ‘lanser2’, 0.5, ‘nms’, 12, 22)
threshold (ImaAmp, Edges, 1, 255)
skeleton (Edges, Skeleton)
gen_contours_skeleton_xld (Skeleton, Contours, 1, ‘filter’)
dev_display (Image)
dev_set_colored (6)
dev_display (Contours)

参数:

  • Image:原图
  • ImaAmp:边缘幅度图像
  • ImaDir:边缘方向图像
  • ‘lanser2’:边缘梯度算子
  • 0.5:平滑系数
  • ‘nms’:非极大值抑制
  • 12:比它小,就不是边缘
  • 22:比它大,就是边缘

结果:

在这里插入图片描述

6. 频域+空间域结合法

域结合空间,就是换一个角度看问题,傅里叶变换可以将一个信号函数,分解一个一个三角函数的线性组合。进行频域分析往往符合:
1)具有一定纹理特征的图像,纹理可以理解为条纹,如布匹、木板、纸张等材质容易出现;
2)需要提取对比度低或者信噪比低的特征;
3)图像尺寸较大或者需要与大尺寸滤波器进行计算,此时转换至频域计算,具有速度优势。因为空间域滤波为卷积过程(加权求和),频域计算直接相乘。

相关案例有:

  • 脏污检测(低通滤波,差分,线提取)

在塑料薄膜上有一些线条型的脏污,如下图所示,在空间域中向提取脏污的区域比较困难因为,方格会影响空间域的二值化,所以可以在频域中去处理它。
在这里插入图片描述
代码:

calculate_lines_gauss_parameters (43.5, [25,5], Sigma, Low, High)
read_image (Image, 'D:/1.png')decompose3 (Image, R, G, B)get_image_size(B, Width, Height)fft_generic (B, ImageFFT, 'to_freq', -1, 'none', 'dc_center', 'complex')gen_gauss_filter (ImageGauss, 100, 100, 0, 'n', 'dc_center', Width, Height)convol_fft (ImageFFT, ImageGauss, ImageConvol)fft_generic (ImageConvol, ImageFFT1, 'from_freq', 1, 'none', 'dc_center', 'byte')sub_image (B, ImageFFT1, ImageSub, 2, 100)lines_gauss (ImageSub, Lines, Sigma, Low, High, 'dark', 'true', 'gaussian', 'true')dev_display (B)dev_display (Lines)

结果:
在这里插入图片描述
在这里插入图片描述

其中,calculate_lines_gauss_parameters(根据线的最大宽度以及对比度计算出lines_gauss算子输入的Sigma、Low、High值)
calculate_lines_gauss_parameters( : : MaxLineWidth, Contrast : Sigma, Low, High)
MaxLineWidth (input_control) // lines_gauss要提取线条的最大宽度
Contrast (input_control) //lines_gauss要提取线的对比度。
Sigma (output_control) //获取用于lines_gauss输入的Sigma值
Low (output_control) //获取用于lines_gauss输入的Low 值
High (output_control) //获取用于lines_gauss输入的High 值

对于Contrast 参数:
Contrast 值不仅可以一个,也可以为两个:
当只选择一个值时,最小对比度将会默认为最大对比度的1/3,最小对比度越小,线条将会延伸到对比度较低的区域,即线条越长。反之,值越高,线条越短,但越突出。
当值为两个时,数组中的第二个值是要提取线的最小对比度,并且其值不能大于第一个值。比如:[20,10]。
lines_gauss(提取图像上的线条,提取的结果属于亚像素精度的XLD轮廓)
lines_gauss(Image , Lines ,Sigma, Low, High, LightDark, ExtractWidth, LineModel, CompleteJunctions )
Image (input_object) //输入图像
Lines (output_object) //检测线条(XLD)
Sigma (input_control) //高斯滤波值
Low (input_control) //滞后阈值分割的低阈值
High (input_control) //滞后阈值分割的高阈值
LightDark (input_control) //提取线条的类型,暗色还是亮色,(’dark’, ‘light’)
ExtractWidth (input_control) //是否提取线宽(‘false’,‘true’)
LineModel (input_control) //用来调整线条位置和宽度的线模型(‘bar-shaped’, ‘gaussian’, ‘none’, ‘parabolic’)
CompleteJunctions (input_control) //在断连的部分是否添加节点使线条连续(‘false’, ‘true’)

  • 检测表面微小凸起(高斯差分,灰度差,二值化)

如下图,使用频域处理细微的缺陷。

在这里插入图片描述

思路:首先,使用两个低通滤波器,进行相减后构造了一个带阻滤波器来提取缺陷分量;然后,读入图像,灰度化,转频域,进行滤波,转回空间域;最后在空间域上blob分析,并进行显示。结果:

在这里插入图片描述

相关参数:
gray_range_rect( Image , ImageResult , MaskHeight, MaskWidth: )
该函数用一个矩形掩膜计算图像中最大最小灰度的差,并体现到每个图像点,其中Image(in)用于被计算灰度值的图像;ImageResult(out)用于包含灰度值的图像;MaskHeight(in)用于滤波器掩模的高度;MaskWidth(in)用于滤波器掩模的宽度。在滤波后对图像进行 gray_range_rect (ImageFiltered, ImageResult, 10, 10)处理后(增强对比度,即亮部分)。

在这里插入图片描述
在这里插入图片描述

案例中通过两个高斯滤波器相减,构建一个带通滤波器,其函数GenGaussFilter为:GenGaussFilter(ImageFilter, Sigma1, Sigma2, Width, Height),常用于纹理缺陷检测。GenGaussFilter (ImageFilter, 2, 10, Width, Height)则是一个带通滤波器(或者“带阻滤波器”)——先通过高反差保留让中高频通过,然后通过高斯模糊抑制高频,最终让中频通过。

  • 测磨砂表面的缺陷(高斯滤波差分,分水岭,灰度共生矩阵)

由于磨砂表面粗糙、噪点多,影响二值化,如下图所示。因此首先使用频域高斯滤波进行差分;然后在空间域的blob分析使用分水岭域分割滤波后的图像;最后计算每个区域灰度共生矩阵,通过能量筛选缺陷。

在这里插入图片描述
在这里插入图片描述

cooc_feature_image(Regions, Image ,LdGray, Direction ,Energy, Correlation, Homogeneity, Contrast)函数用来计算图像的灰度共生矩阵,其中Regions(in)为要检查的区域,Image (in)为灰度图像,LdGray(in)为要区分的灰度值的数量(默认6),Direction (in)为矩阵的计算方向(‘0’,‘45’,‘90’,‘130’,‘mean’),Energy(out) 代表的是能量,Correlation(out)表示相关性,Homogeneity(out) 表示局部均匀性(熵),Contrast(out)为对比度(反差)。

能量(Energy):是对图像纹理的灰度变化稳定程度的度量,反应了图像灰度分布均匀程度和纹理粗细度。能量越大,表示灰度变化比较稳定,反映了纹理变化的均匀程度。对于灰度图来说,能量低说明灰度值低,对于彩色图来说,能量低说明光强低。
相关性(Correlation):表示纹理在行或者列方向的相似程度。相关性越大,相似性越高。
(熵)局部均匀性(Homogeneity):反映图像局部纹理的变化量(即复杂程度),熵值越大图像越复杂。
(反差)对比度(Contrast):表示矩阵的值的差异程度,也间接表现了图像的局部灰度变化幅度。反差值越大,图像中的纹理深浅越明显,表示图像越清晰;反之,则表示图像越模糊。

watersheds_threshold(Image ,Basins ,Threshold )算子:第一步:计算出分水岭(不使用该参数Threshold ),分割的盆地和调用算子watersheds得到的盆地是相同的;第二步:如果被一个分水岭分割的相邻盆地与对应分水岭的高度差小于Threshold ,盆地依次合并。假设B1和B2分别是两个相邻盆地的最小灰度值,W是盆地对应分水岭的最小灰度值。当满足以下条件时,两个盆地合并:max{W-B1,W-B2}<Threshold 。由此得到的盆地存储在Basins 变量中。

7.深度学习法

首先准备缺陷检测所需图片,然后编写代码,设置输入输出路径,设置参数,预处理数据集:
在这里插入图片描述
在这里插入图片描述
正样本:

在这里插入图片描述
负样本:
在这里插入图片描述
缺陷类型:

在这里插入图片描述
在这里选用Mnist类似的训练网络,将要测试的图像进行切块处理(和训练样本大小一致64 x 64)。由于是检测缺陷有无,所以切块样本集只要涵盖整张测试图像即可,这样可以节约检测时间。当然如果对节拍要求不严格,完全可以用分类网络将缺陷边界分割出来,只不过切块方式是逐像素的。最后,输入一张相机采集图,输出NGOK,如果NG则输出缺陷区域。

检测结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

传统算法检测缺陷:调试难度大,容易在检测不稳定情况下反复调参,且复杂缺陷误测多,兼容性差。
机器学习检测缺陷:一般使用类似MLP的一些单层神经网络,对缺陷特征进行训练分类,该方法需要事先提取出缺陷部分,一般用来与传统分割法搭配使用,达到缺陷检测分类的效果。
深度学习检测缺陷(打标签):一般需要客户提供大量的缺陷样本,而且缺陷种类越多、特征越不明显,需要的缺陷样本就越大。其次,打标签过程很难做到自动,需要手动辅助框出缺陷位置,工作量非常大。总结就是训练周期久,训练样本大,如果客户可以提供大量样本,那该方法是首选(半导体行业一般不会出现大量缺陷样品)。
深度学习检测缺陷(迁移学习法):该方法会成为后面工业领域检测瑕疵的一个大趋势,但是需要一些公司去收集各种行业的缺陷类型图片和训练的网络模型,并共享出来,然后可以使用迁移学习的方法学习别人训练好的模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1381579.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

BD网盘最新不限速下载方法支持任意平台

各位新老司机朋友好&#xff0c;我是小白&#xff01; 今天给大家分享的都是大家经常使用的百度网盘&#xff0c;很多进了小黑屋的号限速几KB的速度下载简直就是头大。有会员还好点&#xff01; 今天的分享的方法不需要下载任何的软件&#xff0c;只要一个网址&#xff0c;就…

sqlserver 分区

数据库单表数据量太大可能会导致数据库的查询速度大大下降&#xff08;感觉都是千万级以上的数据表了&#xff09;&#xff0c;可以采取分区分表将大表分为小表解决&#xff08;当然这只是其中一种方法&#xff09;&#xff0c;比如数据按月、按年分表&#xff0c;最后可以使用…

本地生成 bd-ticket-guard-client-cert,bd-ticket-guard-client-data

#我们目前可以发现很多协议已经加入了 bd-ticket-guard-client-cert, bd-ticket-guard-client-data 暂时先挂一下~

BD云20MB/s不限速,随时下架!

文章来源&#xff1a;不正经程序员 作者&#xff1a;哈哈浩 细心的小伙伴&#xff0c;也许发现了。 哈哥之前多次推荐的 PDown 不好使了。 尝试解析分享链接时&#xff0c;直接 error&#xff01; 其实 Github 上作者早已透露无力维护 作者的意思是收到了百度方面的警告&#x…

别说手机充电没讲究!其实这4种方法,才是手机正确的充电方式

智能手机现在已经是人手一部了&#xff0c;手机在使用的时候会引发很多争议&#xff0c;比如怎么给手机充电才好&#xff1f;手机续航为什么大不如前了呢&#xff1f; 其实很大一部分原因是因为错误的充电方式&#xff0c;今天笔者就教大家如何正确的给手机充电。 充电方式 相…

手机充电你充对了吗?这四种情况下不建议给手机充电,原因很简单

互联网时代下的我们&#xff0c;吃穿住行都离不开手机&#xff0c;于是给手机充电就成了每天都要去做的事&#xff0c;那么&#xff0c;如果你在给手机充电时&#xff0c;遇到以下情况&#xff0c;手机维修工程师建议暂停充电&#xff1a; 1.手机严重发烫 手机在充电的过程中本…

手机如何实现边有线上网边充电?

随着Type-C接口的普及&#xff0c;生活上使用的设备产品越来越多开始采用Type-C接口&#xff0c;接口的统一不仅给我们带来了一线通的方便&#xff0c;而且节省了资源&#xff0c;有益于环保。 下面我们进入正题&#xff0c;读者一看到手机边上网边充电可能有点诧异&#xff0…

手机内部充电电流控制原理图(如果手机支持快充,比如支持9V快充,则通过充电接口的D+、D-二根线,输出对应的高低电平组合,FP6601就会控制它的3脚接地,4脚悬空,此时R3与R2并联,改变反馈下拉)

手机内部充电电流控制原理图 来源&#xff1a;电工之家•作者&#xff1a;电工之家• 2019-12-08 10:48 • 7365次阅读 0 手机充电器电流控制方面&#xff1a; 现在的手机充电器&#xff0c;无一例外&#xff0c;都使用了隔离式开关电源电路&#xff0c;充电器的体积&#x…

手机如何实现边充电边传输数据?

日常我们在手机连接电脑或者U盘传输数据的时候&#xff0c;虽然都是传输数据&#xff0c;但是主从关系是不同的&#xff0c;在手机连接电脑的时候可以同时给手机充电&#xff0c;而连接U盘的时候是手机提供电力给U盘&#xff0c;造成这种区别到底是由什么控制呢&#xff1f; 首…

Android手机一直连接USB进行自动化,一直充电,可能导致电池鼓包,如何定时禁止充电和开启充电?

为了避免 Android 手机在连接 USB 进行自动化测试时充电过度导致电池鼓包的问题&#xff0c;可以通过以下步骤实现禁止充电若干小时后自动充电的功能。 步骤&#xff1a; 连接 Android 手机到电脑的 USB 端口。 在计算机管理窗口的左侧窗格中选择设备管理器[3]。 找到并展开…

通过SPSS使用命令语法实现快速删除变量的步骤

当我们面对一个庞大的数据集的时候&#xff0c;我们想要对该数据集进行一些操作&#xff0c;可能会觉得比较繁琐。为了快速精准的实现数据过滤操作&#xff0c; SPSS是自带了语法功能&#xff0c;通过语法即可快速实现复杂操作。今天小编将通过快速删除变量的操作&#xff0c;让…

如何使用SPSS进行判别分析

今天将为大家讲解使用spss进行判别分析的相关步骤。 1&#xff0e;Discriminant Analysis判别分析主对话框 如图 1-1 所示 图 1-1 Discriminant Analysis 主对话框 &#xff08;1&#xff09;选择分类变量及其范围 在主对话框中左面的矩形框中选择表明已知的观测量所属类…

spss使用教程

描述性统计结果 步骤从上到下 分析描述统计描述 制作矩阵散点图 4. 图形 5. 旧对话框 6. 散点图/点图 7. 矩阵散点图 求相关系数和p值

SPSS教程及常用操作参考表 —— 一篇文章解决对SPSS的所有疑问

SPSS教程 文章目录 SPSS教程* 怎样学习SPSS1. 操作界面(1) 数据窗口(2) 输出窗口 2. 如何导入数据3. 一般的数据处理流程4. SPSS数据分析基本框架5. 针对不同的使用场景与需求, 应该使用哪些SPSS内置的分析方法前置知识(1) SPSS中有四种不同种类的变量(2) 四种类型的变量介绍 分…

oppo reno 10倍变焦版

oppo reno 10倍变焦版 我觉得最好看

变焦与对焦(转自csdn)

转自&#xff1a;http://blog.csdn.net/lizhiguo0532/article/details/6918849#comments 声明&#xff1a;此原创非彼原创&#xff0c;资料来源于网络&#xff0c;只是经过加工整理罢了。如果引用了你的资料并没有说明出处&#xff0c;敬请原谅&#xff01;仅供学习参考。 一、…

鸿蒙手机摄影,华为P50亮利剑,麒麟9000+鸿蒙OS+200倍变焦,这才是华为的实力

华为今年推出了全新的华为P40系列&#xff0c;一时间在市场上获得广泛的欢迎&#xff0c;甚至华为P40pro成为了手机行业中最受青睐的一款国产手机。不过最近网上却曝光了了一款全新的华为5G旗舰手机&#xff0c;不过这款5G旗舰手机曝光的参数比较全面&#xff0c;所以根据参数判…

曲线救国?5G手机救不了智能手机市场

文|陈选滨 来源|智能相对论&#xff08;aixdlun&#xff09; 全球知名的IT研究与顾问咨询公司Gartner每年会通过分析来预测当前新兴科技产业的发展阶段及达到成熟期所需要的时间&#xff0c;并绘制在一条曲线上&#xff0c;名为技术成熟度曲线。 2018年8月&#xff0c;在Gar…

数字变焦_如何参加变焦会议

数字变焦 Zoom doesn’t hold back when it comes to allowing users to join a meeting. The company provides several ways to join—even if you haven’t downloaded Zoom’s software. Here’s every way a user can enter a Zoom meeting. 在允许用户加入会议方面&#…

手机camera新篇章

什么是CCM&#xff1f; 1、紧凑摄像模组&#xff08;Campact Camera Module&#xff09; 2、CMOS摄像模组&#xff08;CMOS Camera Module&#xff09; 3、手机摄像模组&#xff08;Cellphone Camera Module&#xff09; 手机摄像头模组由镜头、传感器、电容、FPC板、镜座、…