这是个不多见,却很简单的问题,之所以提出来,是因为在某一次计算流体力学作业中,程序会计算生成一个倾斜的椭圆,

为了跟理论对比,需要测出长短轴之比,当时都是手动测量,误差较大,是迫不得已的做法。现在利用图像处理的方法来处理

这一问题。

首先我们自己生成一个椭圆,旋转,把图像转化为Image,利用ComponentMeasurements函数提取椭圆长短轴与角度,最后与原图

做一对比,可以发现,像素越高,误差越小,一般的像素下,误差已经可以接受了。代码与结果如下,

ang = Pi/6;
eq = (x1^2/16 + y1^2/9 <= 1) /. {x1 -> x Cos[ang] + y Sin[ang], 
    y1 -> -x Sin[ang] + y Cos[ang]};
img = Show[
   RegionPlot[eq, {x, -6, 6}, {y, -5, 5}, AspectRatio -> Automatic, 
    Axes -> {False, False}, Frame -> False], ImageSize -> 800] // Image
data = img // Binarize // 
     ComponentMeasurements[#, {"Centroid", "Length", "Width", 
        "Orientation"}] & // Values // Flatten[#, 1] &;
(data[[3]]/data[[2]] - 0.75)/0.75
img2 = Graphics[{Yellow, Thickness[0.002], 
      Rotate[Circle[#[[1]], {#[[2]]/2, #[[3]]/2}], #[[4]]]}] &@data;
Show[img, img2]