500*_*500 15 wolfram-mathematica image image-processing
" Foveated成像是一种数字图像处理技术,其中图像分辨率或细节数量根据一个或多个"固定点"在图像上变化.固定点表示图像的最高分辨率区域并对应于中心眼睛的视网膜,中央凹."

我想使用这样的图像来说明人类的视力,波纹管图显示左眼的相对敏锐度(水平部分),以度为中心凹(维基百科):

有没有办法在Mathematica中使用其图像处理功能创建一个foveated图像?
Sjo*_*ies 10
以下几行可能对您有用.过滤细节应根据您的喜好进行调整.
lena = ExampleData[{"TestImage", "Lena"}]
Run Code Online (Sandbox Code Playgroud)

ImageDimensions[lena]
==> {512, 512}
mask = DensityPlot[-Exp[-(x^2 + y^2)/5], {x, -4, 4}, {y, -4, 4},
Axes -> None, Frame -> None, Method -> {"ShrinkWrap" -> True},
ColorFunction -> GrayLevel, ImageSize -> 512]
Run Code Online (Sandbox Code Playgroud)

Show[ImageFilter[Mean[Flatten[#]] &, lena, 20, Masking -> mask], ImageSize -> 512]
Run Code Online (Sandbox Code Playgroud)

继Sjoerd的回答之后,您可以Fold[]进行如下半径相关的模糊.
敏锐度模型(非常粗糙的模型):
Clear[acuity];
acuity[distance_, x_, y_, blindspotradius_] :=
With[{\[Theta] = ArcTan[distance, Sqrt[x^2 + y^2]]},
Clip[(Chop@Exp[-Abs[\[Theta]]/(15. Degree)] - .05)/.95,
{0,1}] (1. - Boole[(x + 100.)^2 + y^2 <= blindspotradius^2])]
Plot3D[acuity[250., x, y, 25], {x, -256, 256}, {y, -256, 256},
PlotRange -> All, PlotPoints -> 40, ExclusionsStyle -> Automatic]
Run Code Online (Sandbox Code Playgroud)

示例图片:
size = 100;
lena = ImageResize[ExampleData[{"TestImage", "Lena"}], size];
Manipulate[
ImageResize[
Fold[Function[{ima, r},
ImageFilter[(Mean[Flatten[#]] &), ima,
7*(1 - acuity[size*5, r, 0, 0]),
Masking -> Graphics[Disk[p/2, r],
PlotRange -> {{0, size}, {0, size}}]
]],
lena, Range[10, size, 5]],
200],
{{p, {size, size}}, Locator}]
Run Code Online (Sandbox Code Playgroud)
一些例子:

