Page 168 - 《应用声学》2024年第1期
P. 168

164                                                                                  2024 年 1 月


                                            表 1  图像畸变校正算法处理流程伪代码
                             Table 1 Image distortion correction algorithm process pseudo-code

                  1. 对 A 扫描原始数据进行预处理:
                   输入所需变量数据,包括滤波器参数、以图 2(b) 为例的全部 A 扫描原始数据、图像分辨率 (x, y) (由扫描点数决定) 等;对全
                   部 A 扫描原始数据进行剪切、数字滤波和希尔伯特变换等处理,获得预处理数据,处理过程如图 5 所示。
                  2. 利用 MIP 获得灰度图像:
                   输入预处理数据:
                   for i ← 1 到 x
                     for j ← 1 到 y
                      a ← 第 i 行、第 j 列的 A 扫描预处理数据;
                      对 a 进行 MIP 计算,将计算结果保存到 D(i, j) 中;
                     end
                   end
                   将 D 矩阵中所有的数据归一化到 [0, 255];处理过程如图 6 所示。
                  3. 确定灰度图像的 ROI 左右边缘位置:
                   输入归一化数据 D,D 为 x 行、y 列的灰度矩阵;利用 Otsu 边缘检测算法或数据观察法确定阈值 v,该阈值 v 用于确定灰度
                   图像的 ROI 左右边缘位置;设置矩阵 L(x, 2),L 包含 x 行,每行包含左右 2 个边缘像素位置;
                   for i ← 1 到 x
                     for j ← 1 到 y
                      if D(i, j) 大于 v
                       则 L(i, 1) = j;
                       break;
                      end
                     end
                     如果没有符合条件的位置,则 L(i, 1) = y/2;
                     for j ← y 到 1
                      if D(i, j) 大于 v
                       则 L(i, 2) = j;
                       break;
                      end
                     end
                     如果没有符合条件的位置,则 L(i, 2) = y/2;
                   end
                  4. 对灰度图像进行中心坐标校正:
                   设置原始灰度图像中目标每行的中心位置为向量 C(x, 1);C(x, 1) = (L(x, 1) + L(x, 2))/2; 设置每行所需要的校正补偿量
                   为 offset(x, 1);offset(x, 1) = y/2 − C(x, 1); 设置 R(x, y) 为校正后的灰度矩阵;
                   for i ← 1 到 x
                     if (offset (i) 大于 0)
                      将第 i 行整体向右移动 n 次,n = offset(i);每次移动时,将最右侧像素值补充至最左侧第一个像素位置;移动完毕后,将
                      该行数据保存到 R 矩阵中的对应行;
                     end
                     if (offset(i) 等于 0)
                      不需要移动,将该行数据直接保存到 R 矩阵中的对应行;
                     end
                     if (offset (i) 小于 0)
                      将第 i 行整体向左移动 n 次,n = abs(offset(i));每次移动时,将最左侧像素值补充至最右侧第一个像素位置;移动完毕
                      后,将该行数据保存到 R 矩阵中的对应行;
                     end
                   end
                   R 矩阵即为校正后的灰度图像。
   163   164   165   166   167   168   169   170   171   172   173