下图为某一干涉图,每一级明纹蕴含着相应的高度信息,通常相邻的条纹高度差是恒定的,如果是反射干涉的话,
高度差为半个波长。这里我们假定,最内部明纹高度最小。

处理思路如下,二值化,细化,提取明纹分配高度,然后绘图。代码如下,
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] &
结果如下,
