月球之谜的大小
我相信您已经听说月亮改变了它的大小。当您恋爱了并且很幸运时,月亮的大小几乎是正常情况下的两倍。有人说,原因是大气充当了镜头。其他人则认为,这仅仅是与附近树木等其他物体进行比较的问题。无论您阅读了什么说明,都是相当主观的。
月球科学的大小
好吧,我们是程序员,不是吗?我们依靠事实,对吗?所以这是实验:
- 拿一个不错的相机,它支持手动设置时间和光圈。
- 将相机设置为最大变焦等级。
- 外出时,为月亮拍摄一些照片,以检测最佳设置,以使月亮清晰且光线充足。
- 记住设置
- 每当您认为月球大小时,都使用这些设置为月球拍照。
- 计算月亮的大小(以像素为单位)
相机不会说谎,是吗?通过计算明亮的像素,我们可以有效地测量月亮的大小-至少以像素为单位。
如果所有照片的大小都相同,那么这就是我们大脑中的错误。如果大小不同,那么就有炒作的空间
- 月亮真的长了(但是它吃什么?)
- 有大气的镜头效果
- 月亮呈椭圆形,有时更近,有时更远离地球
- ...
但是我将保持打开状态,直到您的任务完成。当然,您想事先知道您的软件是否可以准确计算月球尺寸。
任务
给定一些优化的月球图片,请计算月球的大小。优化是:像素为黑色或白色。两者之间什么都没有。没有抗锯齿。这很容易,不是吗?
注意事项:月亮并不总是充满,您知道...它可能是镰刀!但是即使是镰刀形状,月亮的大小也会更大。因此,请计算出完整尺寸。
stdin
如果您编写的是函数而不是程序,则程序将PNG作为输入,例如作为文件名命令行参数,通过管道传输到(或作为标准框架库的)Bitmap对象。- 您的程序可以使用任何合理的输入位图大小,而不必是正方形。保证最小宽度和高度为150像素。
- 满月至少覆盖了图片的25%。
- 您的程序将以像素为单位输出计算出的月亮大小,就好像它是满月一样。
- 我们假设月亮是一个完美的球体。
- 确切的大小始终是整数,但是如果计算返回该数字,则可以输出一个十进制数。
- 精度应在98%到102%之间。(这只是一个猜测,而不是我可以保证可以实现的目标。如果您认为很难实现,请发表评论。)
更新:
- 月亮的中心不一定在图片的中间。
- 最小可见区域为月球的5%或像素总数的1.25%。
- 以使整个月亮适合图像的方式拍摄照片,即,像素总数是月亮大小的上限。
- 月亮不会被裁剪/修剪。
样品
如果愿意,您可以使用混合文件生成自己的样本。我为您制作了以下图片。您可以使用WhitePixelCounter.exe(需要.NET)对PNG文件中的像素进行计数,以检查图像是否仅包含黑白像素以及它们包含多少个。
以下256x256像素图像的白色像素数量有所不同,但所有这些图像的计算出的月亮大小应为16416像素。
这些177x177像素的图像应返回10241像素。图像基本相同,但是这次使用的是焦距不同的相机。
结果为9988的非正方形和非中心样本:
哦,我目前没有参考实现,我什至不知道我是否能够实现某些功能。但是在我的大脑中,有一个强烈的信念告诉我它必须在数学上可以解决。
规则
这是Code Golf。2015-03-30上最短的代码被接受。