本帖最后由 holybang 于 2025-11-11 11:16 编辑
- * 1. 读取彩色图片
- read_image (Image, 'input.png')
- * 2. 简单降噪一下并转换为HSV颜色空间并提取亮度通道
- gauss_filter (Image, ImageGaussed, 5)
- decompose3(ImageGaussed, ImageR, ImageG, ImageB)
- trans_from_rgb (ImageR, ImageG, ImageB, ImageH, ImageS, ImageV, 'hsv')
- * 3. 获得频谱图
- fft_generic (ImageV, VFFT, 'to_freq', -1, 'none', 'dc_center', 'complex')
- power_ln (VFFT, VFFT_ln)
- * 4. 将频谱图最大最小归一化到0-255,方便后续用图像处理算法处理它
- get_image_size(Image, Width, Height)
- gen_rectangle1(ImageEntireReg, 0, 0, Width, Height)
- min_max_gray(ImageEntireReg, VFFT_ln, 0, Min, Max, Range)
- scale_image_range(VFFT_ln, VFFT_ln_scaled, Min, Max)
- convert_image_type (VFFT_ln_scaled, VFFT_ln_8u, 'byte')
- * 5. 对频谱图简单降噪一下
- gauss_filter (VFFT_ln_8u, GaussFiltered, 3)
- * 6. 自适应阈值处理,得到频谱局部极值点的region,因为图中要增强的网格特征是一种重复纹理,所以频谱图上一定会表现为距离相等的一些极值点
- local_threshold (GaussFiltered, img_thresh, 'adapted_std_deviation', 'light', ['mask_size', 'scale'], [61, 0.1])
- * 7. 对频谱极值点区域进行形态学膨胀
- dilation_circle (img_thresh, Dilated, 1.5)
- * 8. 将区域转换成real类型的蒙版图像,因为后续要将区域作为频域滤波器使用,所以也得做最大最小归一化
- region_to_bin(Dilated, ImageMaskFiltered, 255, 0, Width, Height)
- invert_image(ImageMaskFiltered, ImageMaskFiltered)
- convert_image_type(ImageMaskFiltered, ImageMaskFiltered, 'real')
- scale_image(ImageMaskFiltered, ImageMaskFiltered, 1.0/255, 0)
- * 9. 应用自定义蒙版图像作为滤波器
- convol_fft (VFFT, ImageMaskFiltered, ImageComplex)
- * 10. 逆傅里叶变换得到消除芯片之后的亮度通道
- fft_generic(ImageComplex, ImageResult, 'from_freq', 1, 'none', 'dc_center', 'real')
- * 保存结果
- min_max_gray(ImageEntireReg, ImageResult, 0, Min, Max, Range)
- scale_image(ImageResult, ImageResult, 255.0/(Max-Min), -255.0*Min/(Max-Min))
- convert_image_type(ImageResult, ImageResult, 'byte')
- write_image(ImageResult, 'png', 0, 'result.png')
复制代码
结果和前面我发的略有区别,不过应该够用了
|