| fft_image(Image : ImageFFT : : ) fft_image计算输入图像(image)的傅里叶变换,即,它将图像转换成频域。
 所使用的算法是快速傅里叶变换。这与下面调用相对应
 fft_generic(Image,ImageFFT,'to_freq',-1,'sqrt','dc_center','complex')
 
 
 2.gen_filter_mask( : ImageFilter : FilterMask, Scale, Width, Height : )
 gen_filter_mask将空间域中的筛选器掩码存储为实数图像。
 滤镜掩码的中心位于生成图像的中心。
 参数Scale决定了滤波器掩码的值乘以多少(这导致滤波器的傅里叶变换值更大)。
 在FilterMask中给出的相应的过滤矩阵可以从文件或元组生成。
 滤波器矩阵的格式由算子 convol_image描述。
 示例过滤器掩码可以在HALCON主目录中的“filter”目录中找到。
 该算子对于滤波器掩码的频响可视化非常有用(通过对该算子的结果图像进行傅里叶变换)。
 
 
 3.fft_image_inv(Image : ImageFFTInv : : )
 fft_image_inv计算输入图像(image)的傅里叶反变换,即,它将图像转换回空间域。
 这与下面调用相对应
 fft_generic(Image,ImageFFT,'from_freq',1,'sqrt','dc_center','byte')
 
 
 下面函数例程:
 gen_filter_mask (ImageFilterEE, 'laws_ee', 1.0, 512, 512)
 fft_image (ImageFilterEE, EE)
 gen_filter_mask (ImageFilterSS, 'laws_ss', 1.5, 512, 512)
 fft_image (ImageFilterSS, SS)
 gen_filter_mask (ImageFilterRR, 'laws_rr', 0.1, 512, 512)
 fft_image (ImageFilterRR, RR)
 fft_image_inv (RR, ImageFFTInv)
 
 4.correlation_fft(ImageFFT1, ImageFFT2 : ImageCorrelation : : )
 correlation_fft计算傅里叶变换后的输入图像在频域中的相关性。
 通过将ImageFFT1与ImageFFT2的复共轭相乘计算相关系数。
 需要注意的是,为了在空间域中实现相关性的正确缩放,
 正向转换必须使用带Norm = 'none'的fft_generic或rft_generic操作符,
 反向转换必须使用带Norm = 'n'的fft_generic或rft_generic操作符。
 如果ImageFFT1和ImageFFT2包含相同数量的图像,则对应的图像是成对关联的。
 否则,ImageFFT2必须只包含一个图像。在这种情况下,对ImageFFT1的每张图像与ImageFFT2进行关联。
 例程:
 read_image (Image, 'printer_chip/printer_chip_01')
 get_image_size(Image,Width,Height)
 rft_generic(Image,ImageFFT,'to_freq','none','complex',Width)
 correlation_fft(ImageFFT,ImageFFT,Correlation)
 rft_generic(Correlation,AutoCorrelation,'from_freq','n','real',Width)
 
 5.phase_correlation_fft(ImageFFT1, ImageFFT2 : ImagePhaseCorrelation : : )
 phase_correlation_fft计算傅里叶变换后的输入图像在频域内的相位相关性。
 通过将ImageFFT1与ImageFFT2的复共轭相乘,再除以乘积的绝对值,计算相位相关。
 需要注意的是,为了在空间域中实现相位相关性的正确缩放,
 正向变换必须使用带Norm = 'none'的fft_generic或rft_generic运算符,
 反向变换必须使用带Norm = 'n'的fft_generic或rft_generic运算符。
 如果ImageFFT1和ImageFFT2包含相同数量的图像,则对应的图像是相位相关的成对图像。
 否则,ImageFFT2必须只包含一个图像。
 在这种情况下,对ImageFFT1和ImageFFT2的每张图像进行相位相关。
 
 
 例程:
 read_image (Image, 'printer_chip/printer_chip_01')
 get_image_size(Image,Width,Height)
 rft_generic(Image,ImageFFT1,'to_freq','none','complex',Width)
 rft_generic(Image,ImageFFT2,'to_freq','none','complex',Width)
 phase_correlation_fft(ImageFFT1,ImageFFT2,PhaseCorrelationFFT)
 rft_generic(PhaseCorrelationFFT,PhaseCorrelation,'from_freq','n','real',Width)
 * 确定两个图像之间的平移。
 local_max_sub_pix (PhaseCorrelation, 'facet', 1, 0.02, Row, Column)
 
 
 
 
 6.gen_gabor( : ImageFilter : Angle, Frequency, Bandwidth, Orientation, Norm, Mode, Width, Height : )
 gen_gabor生成一个Gabor滤波器,该滤波器具有用户可定义的带通频率范围和Hilbert变换符号。
 这是通过计算频域中的对称滤波器来实现的,该滤波器可以通过参数Angle, Frequency, Bandwidth, Orientation来调整,
 从而在频域中滤除空间域中的某个频段和某个方向范围。
 
 
 参数Frequency(中心频率=到DC项的距离)和Orientation(方向)决定滤波器的中心。
 频率值越大,传递的频率越高。
 Orientation为0的值生成一个水平方向的“crescent”(新月点向上凸起)。
 较高的Orientation值导致新月的逆时针旋转。
 
 
 参数Angle和Bandwidth用于确定滤波器所传递的频率范围和角度。
 Angle越大,通过过滤器的角度范围就越小(因为“新月”变得越窄)。
 Bandwidth越大,通过的频带越小(因为“新月”变薄)。
 
 
 为了使滤波操作的整体效率达到最大,可以使用参数Norm来指定滤波器的归一化因子。
 如果使用fft_generic和Norm = 'n',则可以避免FFT中的规范化。
 Mode可用于确定滤波器的直流项位于何处。
 如果使用fft_generic,则可以使用'dc_edge'获得效率。
 如果使用fft_image和fft_image_inv进行过滤,则必须使用Norm = 'none'和Mode = 'dc_center'。
 注意,gen_gabor不能创建可以与rft_generic一起使用的过滤器。
 
 
 所得到的图像是一个双通道实图像,包含第一通道中的Gabor滤波器和第二通道中相应的Hilbert滤波器。
 
 
 7.convol_gabor(ImageFFT, GaborFilter : ImageResultGabor, ImageResultHilbert : : )
 convol_gabor将傅里叶变换后的图像与GaborFilter(参见gen_gabor)及其在频域中的希尔伯特变换进行卷积。
 结果图像类型为“complex”。
 
 
 8.energy_gabor(ImageGabor, ImageHilbert : Energy : : )
 energy_gabor计算两个输入图像的局部对比度(能量)。得到的图像能量定义为
 
 工业视觉halcon FFT相关滤波器介绍5   通常在计算能量之前,先用Gabor滤波器对图像进行卷积,
 再对Gabor滤波器进行希尔伯特变换(见convol_gabor)。
 在这情况下,传递给energy_gabor的图像的第一个通道是经过哈伯尔滤波的图像,转换回空间域(见fft_image_inv),
 第二个通道是与Hilbert变换卷积的结果,也转换回空间域。
 局部能量是对图像中结构(如边缘和线)的局部对比度的度量。
 
 
 6,7,8三函数的例程:
 read_image (Image, 'printer_chip/printer_chip_01')
 zoom_image_size (Image, Image, 512, 512, 'constant')
 gen_gabor(Filter,1.4,0.4,1.0,1.5,'n','dc_edge',512,512)
 fft_generic(Image,ImageFFT,'to_freq',-1,'none','dc_edge','complex')
 convol_gabor(ImageFFT,Filter,Gabor,Hilbert)
 fft_generic(Gabor,GaborInv,'from_freq',1,'none','dc_edge','byte')
 fft_generic(Hilbert,HilbertInv,'from_freq',1,'none','dc_edge','byte')
 energy_gabor(GaborInv,HilbertInv,Energy)
 
 9.gen_bandfilter( : ImageFilter : MinFrequency, MaxFrequency, Norm, Mode, Width, Height : )
 gen_bandfilter在频域内产生一个理想的带滤波器。
 参数MinFrequency, MaxFrequency决定滤波器的截止频率作为最大(水平和垂直)频率的一部分,
 可以表示为一个图像的尺寸Width* Height,即。,最小频率和最大频率应介于0和1之间。
 为了使滤波操作的整体效率达到最大,可以使用参数Norm来指定滤波器的归一化因子。
 如果使用fft_generic和Norm = 'n',则可以避免FFT中的规范化。
 Mode可以用来确定滤波器的DC项在哪里,或者在实值FFT中是否应该使用滤波器。
 如果使用fft_generic,则可以使用'dc_edge'获得效率。
 如果使用fft_image和fft_image_inv进行过滤,则必须使用Norm = 'none'和Mode = 'dc_center'。
 如果使用rft_generic,则必须使用Mode = 'rft'。
 得到的图像包含一个值为0的环,以及一个由该环外归一化确定的值。
 
 
 例程:
 read_image (Image, 'printer_chip/printer_chip_01')
 get_image_size (Image, Width, Height)
 gen_bandpass(Bandfilter,0.2,0.4,'n','dc_edge',Width,Height)
 fft_generic(Image,ImageFFT,'to_freq',-1,'none','dc_edge','complex')
 convol_fft(ImageFFT,Bandfilter,ImageConvol)
 
 
 10.gen_bandpass( : ImageBandpass : MinFrequency, MaxFrequency, Norm, Mode, Width, Height : )
 gen_bandpass在频域内产生一个理想的带通滤波器。
 MinFrequency, MaxFrequency的参数决定滤波器的截止频率作为最大(水平和垂直)频率的一部分,
 可以表示为一个图像的尺寸 Width* Height ,即。,最小频率和最大频率应介于0和1之间。
 为了使滤波操作的整体效率达到最大,可以使用参数Norm来指定滤波器的归一化因子。
 如果使用fft_generic和Norm = 'n',则可以避免FFT中的规范化。
 Mode可以用来确定滤波器的直流项在哪里,或者在实值FFT中是否应该使用滤波器。
 如果使用fft_generic,则可以使用'dc_edge'获得效率。
 如果使用fft_image和fft_image_inv进行过滤,则必须使用Norm = 'none'和Mode = 'dc_center'。
 如果使用rft_generic,则必须使用Mode = 'rft'。
 生成的图像包含一个值为255的环空,该环外的值为0。
 
 
 例程:
 read_image (Image, 'printer_chip/printer_chip_01')
 get_image_size (Image, Width, Height)
 gen_bandpass(Bandpass,0.2,0.4,'n','dc_edge',Width,Height)
 fft_generic(Image,ImageFFT,'to_freq',-1,'none','dc_edge','complex')
 convol_fft(ImageFFT,Bandpass,ImageConvol)
 
 11.gen_highpass( : ImageHighpass : Frequency, Norm, Mode, Width, Height : )
 gen_highpass在频域内产生一个理想的高通滤波器。
 参数Frequency决定了滤波器的截止频率作为最大(水平和垂直)频率的一部分,该频率可以用大小为Width* Height的图像表示,
 即,频率应介于0至1之间。为了使滤波操作的整体效率达到最大,可以使用参数Norm来指定滤波器的归一化因子。
 如果使用fft_generic和Norm = 'n',则可以避免FFT中的规范化。
 Mode可以用来确定滤波器的DC项在哪里,或者在实值FFT中是否应该使用滤波器。
 如果使用fft_generic,则可以使用'dc_edge'获得效率。
 如果使用fft_image和fft_image_inv进行过滤,则必须使用Norm = 'none'和Mode = 'dc_center'。
 如果使用rft_generic,则必须使用Mode = 'rft'。
 得到的图像有一个值为0的内部部分和一个值由归一化因子决定的外部部分。
 
 
 例程:
 read_image (Image, 'printer_chip/printer_chip_01')
 get_image_size (Image, Width, Height)
 gen_highpass(Highpass,0.2,'n','dc_edge',Width,Height)
 fft_generic(Image,ImageFFT,'to_freq',-1,'none','dc_edge','complex')
 convol_fft(ImageFFT,Highpass,ImageConvol)
 fft_generic(ImageConvol,ImageResult,'from_freq',1,'none','dc_edge','byte')
 
 
 
 12.gen_lowpass( : ImageLowpass : Frequency, Norm, Mode, Width, Height : )
 gen_lowpass在频域中生成一个理想的低通滤波器。
 参数Frequency决定了滤波器的截止频率作为最大(水平和垂直)频率的一部分,
 该频率可以用大小为Width*Height的图像表示,即,频率应介于0至1之间。
 为了使滤波操作的整体效率达到最大,可以使用参数Norm来指定滤波器的归一化因子。
 如果使用fft_generic和Norm = 'n',则可以避免FFT中的规范化。
 Mode可以用来确定滤波器的直流项在哪里,或者在实值FFT中是否应该使用滤波器。
 如果使用fft_generic,则可以使用'dc_edge'获得效率。
 如果使用fft_image和fft_image_inv进行过滤,则必须使用Norm = 'none'和Mode = 'dc_center'。
 如果使用rft_generic,则必须使用Mode = 'rft'。
 结果图像的内部部分的值设置为归一化因子,外部部分的值为0。
 例程:
 read_image (Image, 'printer_chip/printer_chip_01')
 get_image_size (Image, Width, Height)
 gen_lowpass(Lowpass,0.2,'n','dc_edge',Width,Height)
 fft_generic(Image,ImageFFT,'to_freq',-1,'none','dc_edge','complex')
 convol_fft(ImageFFT,Lowpass,ImageConvol)
 fft_generic(ImageConvol,ImageResult,'from_freq',1,'none','dc_edge','byte')
 
 13.gen_mean_filter( : ImageMean : MaskShape, Diameter1, Diameter2, Phi, Norm, Mode, Width, Height : )
 gen_mean_filter在频域中生成一个均值滤波器。均值滤波器的形状由MaskShape决定。
 对于MaskShape = 'rectangle',将生成一个矩形均值过滤器。
 对于MaskShape = 'ellipse',生成一个椭圆平均滤波器。
 直径(即。,均值滤波器在空间域中的平滑量)由Diameter1, Diameter2决定。
 Diameter1是由Phi决定的滤波器在空间域中主方向的直径。
 
 为了使滤波操作的整体效率达到最大,可以使用参数Norm来指定滤波器的归一化因子。
 如果使用fft_generic和Norm = 'n',则可以避免FFT中的规范化。
 Mode可以用来确定滤波器的DC项在哪里,或者在实值FFT中是否应该使用滤波器。
 如果使用fft_generic,则可以使用'dc_edge'获得效率。
 如果使用fft_image和fft_image_inv进行过滤,则必须使用Norm = 'none'和Mode = 'dc_center'。
 如果使用rft_generic,则必须使用Mode = 'rft'。
 例程:
 read_image (Image, 'printer_chip/printer_chip_01')
 get_image_size (Image, Width, Height)
 gen_mean_filter (FilterMean, 'ellipse', 15, 15, 0, 'n', 'dc_edge',Width, Height)
 fft_generic (Image, ImageFFT, 'to_freq', -1, 'none', 'dc_edge', 'complex')
 convol_fft (ImageFFT, FilterMean, Filtered)
 
 14.gen_sin_bandpass( : ImageFilter : Frequency, Norm, Mode, Width, Height : )
 gen_sin_bandpass生成一个旋转不变的带通滤波器,其响应在频域内为正弦函数。
 正弦函数的最大值是由Frequency决定的,Frequency是最大(水平和垂直)频率的一部分,
 可以用大小为Width*Height 的图像表示,即,频率应介于0至1之间。
 为了使滤波操作的整体效率达到最大,可以使用参数Norm来指定滤波器的归一化因子。
 如果使用fft_generic和Norm = 'n',则可以避免FFT中的规范化。
 Mode可以用来确定滤波器的直流项在哪里,或者在实值FFT中是否应该使用滤波器。
 如果使用fft_generic,则可以使用'dc_edge'获得效率。
 如果使用fft_image和fft_image_inv进行过滤,则必须使用Norm = 'none'和Mode = 'dc_center'。
 如果使用rft_generic,则必须使用Mode = 'rft'。
 对于DC项,滤波器始终为零,随着正弦函数的增大而增大,随着频率的增大而减小。
 所使用的正弦函数的范围是从0到pai。所有其它点都设为零。
 例程:
 read_image (Image, 'surface_scratch')
 invert_image (Image, ImageInverted)
 get_image_size (Image, Width, Height)
 gen_sin_bandpass (ImageBandpass, 0.4, 'none', 'rft', Width, Height)
 rft_generic (ImageInverted, ImageFFT, 'to_freq', 'none', 'complex', Width)
 convol_fft (ImageFFT, ImageBandpass, ImageConvol)
 rft_generic (ImageConvol, Lines, 'from_freq', 'n', 'byte', Width)
 *
 *使用形态学分割缺陷
 threshold (Lines, Region, 5, 255)
 connection (Region, ConnectedRegions)
 select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 5, 5000)
 dilation_circle (SelectedRegions, RegionDilation, 5.5)
 union1 (RegionDilation, RegionUnion)
 reduce_domain (Image, RegionUnion, ImageReduced)
 lines_gauss (ImageReduced, LinesXLD, 0.8, 3, 5, 'dark', 'false', 'bar-shaped', 'false')
 union_collinear_contours_xld (LinesXLD, UnionContours, 40, 3, 3, 0.2, 'attr_keep')
 select_shape_xld (UnionContours, SelectedXLD, 'contlength', 'and', 15, 1000)
 gen_region_contour_xld (SelectedXLD, RegionXLD, 'filled')
 union1 (RegionXLD, RegionUnion)
 dilation_circle (RegionUnion, RegionScratches, 10.5)
 * 显示结果
 dev_set_draw ('margin')
 dev_set_line_width (3)
 dev_set_colored (12)
 dev_display (Image)
 dev_display (RegionScratches)
 
 
 15.gen_std_bandpass( : ImageFilter : Frequency, Sigma, Type, Norm, Mode, Width, Height : )
 gen_std_bandpass生成一个旋转不变的带通滤波器,其响应由参数frequency和sigma确定:
 frequency确定相对于dc项的最大响应的位置,sigma确定通过滤波器的频带宽度。
 Frequency和sigma被指定为最大(水平和垂直)频率的一个分数,可以在一个尺寸为 Width*Height的图像中表示。
 频率应介于0和1之间。
 对于Type='gauss',将生成一个高斯响应,其中sigma是标准偏差。
 对于Type='sin',生成一个正弦函数,其最大值为Frequency和范围sigma。
 为了最大限度地提高滤波操作的整体效率,可以使用参数Norm来指定滤波器的归一化因子。
 如果使用fft_generic和norm='n',则可以避免fft中的规范化。
 Mode可用于确定滤波器的直流项在何处,或在实值FFT中是否应使用滤波器。
 如果使用fft_generic,可以使用“dc_edge”来提高效率。
 如果使用fft_image和fft_image_inv进行过滤,则必须使用norm='none'和mode='dc_center'。
 如果使用rft_generic,则必须使用mode='rft'。
 例程:
 read_image (Image, 'printer_chip/printer_chip_01')
 get_image_size (Image, Width, Height)
 gen_std_bandpass (ImageFilter, 0.1, 0.01, 'sin', 'none', 'dc_center', Width, Height)
 fft_generic(Image,ImageFFT,'to_freq',-1,'none','dc_edge','complex')
 convol_fft(ImageFFT,ImageFilter,ImageConvol)
 fft_generic(ImageConvol,ImageResult,'from_freq',1,'none','dc_edge','byte')
 
 16.phase_deg(ImageComplex : ImagePhase : : )
 phase_deg以度数计算complex图像的相位。使用的公式如下:
 
 
 工业视觉halcon FFT相关滤波器介绍4   因此,ImagePhase包含了相位角的一半。对于负相位角,加180。
 
 
 17.phase_rad(ImageComplex : ImagePhase : : )
 phase_rad以弧度计算complex图像的相位。使用的公式如下:
 phase = atan2(imaginary part,real part) .
 例程:
 read_image(Image,'monkey')
 fft_image(Image,FFT)
 phase_deg(FFT,Phase)
 phase_rad (FFT, ImagePhase)
 dev_close_window ()
 dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
 dev_display (Phase)
 dev_display (ImagePhase)
 
 18.power_byte(Image : PowerByte : : )
 power_byte从傅里叶变换后的图像(参见fft_image)的实部和虚部计算功率谱,即,频率模量。结果图像的类型为“byte”。
 使用的公式如下:
 
 工业视觉halcon FFT相关滤波器介绍3   请注意,由于生成的图像类型“byte”,超过255的结果灰度值将被剪切为255。
 
 
 19.power_real(Image : ImageResult : : )
 power_real从傅里叶变换后的图像的实部和虚部计算功率谱(参见fft_image),即,频率模量。结果图像类型为“real”。
 使用的公式如下:
 
 工业视觉halcon FFT相关滤波器介绍2   
 
 20.power_ln(Image : ImageResult : : )
 power_ln从傅里叶变换后的图像的实部和虚部计算功率谱(参见fft_image),即,频率模量。
 此外,对结果应用自然对数。结果图像类型为“real”。
 使用的公式如下:
 
 工业视觉halcon FFT相关滤波器介绍1   
 
 
 
 
 
 
 
 
 
 
 |