‹›Обработка изображений и сигналовИнтерактивные измерения аспектов изображения
Функция DynamicImage облегчает построение пользовательских интерфейсов для интерактивного измерения объектов в изображениях.
Рассмотрим измерение радиуса ячейки, 
.
Введeм комбинацию Alt+click, чтобы расположить желтый круг измерения по центру. Переместим ползунок, чтобы изменить радиус окружности 
.
код на языке Wolfram Language целиком
measurementCircle[Dynamic[center_], Dynamic[r_]] := {Yellow, Thick, 
   Dynamic@Circle[center, r], 
   Dynamic@Text[
     Style[StringJoin[ToString@Round@r, "px"], FontSize -> 18], 
     Scaled@{0.1, 0.9}, Background -> RGBColor[0, 0, 0, 0.5]]};
DynamicModule[
 {center = ImageDimensions[img1]/2, r},
 Manipulate[
  EventHandler[
   DynamicImage[
    img1,
    Epilog -> measurementCircle[Dynamic[center], Dynamic[r]]
    ],
   {"MouseDown" :> 
     If[CurrentValue["OptionKey"], 
      center = MousePosition["Graphics"]]},
   PassEventsDown -> Dynamic[Not[CurrentValue["OptionKey"]]]
   ],
  {{r, 32}, 8, 800},
  FrameMargins -> 0
  ]
 ]Измерим длину нити ДНК путем отслеживания вручную.
Введeм комбинацию Alt+click чтобы определить точки вершин. Alt+Shift+click удаляет последнюю вершину, отмеченную пользователем. 
код на языке Wolfram Language целиком
measurementLine[Dynamic[pts_], Dynamic[length_]] := {Yellow, Thick, 
  Dynamic@Line[pts], 
  Dynamic@Text[
    Style[StringJoin[ToString@Round@length, "px"], FontSize -> 18], 
    Scaled@{0.1, 0.9}, Background -> RGBColor[0, 0, 0, 0.5]]}
DynamicModule[
 {pts = {}, length = 0},
 Panel@EventHandler[
   DynamicImage[
    img2,
    Epilog -> measurementLine[Dynamic[pts], Dynamic[length]]
    ],
   {"MouseDown" :> 
     If[CurrentValue["OptionKey"], 
      If[CurrentValue["ShiftKey"], pts = Most[pts], 
       AppendTo[pts, MousePosition["Graphics"]]]; 
      length = 
       Total@Apply[EuclideanDistance, Partition[pts, 2, 1], {1}]]},
   PassEventsDown -> Dynamic[Not[CurrentValue["OptionKey"]]]
   ]
 ]