下图为某一干涉图,每一级明纹蕴含着相应的高度信息,通常相邻的条纹高度差是恒定的,如果是反射干涉的话,

高度差为半个波长。这里我们假定,最内部明纹高度最小。

处理思路如下,二值化,细化,提取明纹分配高度,然后绘图。代码如下,

img0 = Import["C:/Users/1/Desktop/s2.png"];
img1 = img0 // Binarize // Thinning // DeleteBorderComponents;
data = (SortBy[
     ComponentMeasurements[
      img1, {"MeanCentroidDistance", "Mask"}], #[[2, 1]] &] // Values);
key = MapIndexed[{#1[[2]], 100 #2 // First} &, data];
deal = (Image[#[[1]]] // ImageValuePositions[#, 1] &) /. {a_, 
      b_} :> {a, b, #[[2]]} &;
(deal /@ key) // 
 ListPointPlot3D[#, PlotTheme -> "Detailed", Boxed -> False] &

结果如下,