2011-09-19 49 views
0

请考虑(我使用Mathematica 8)执行以下操作:过滤和操纵CurrentImage []

mask = DensityPlot[-Exp[-(x^2 + y^2)/5], {x, -4, 4}, {y, -3, 4}, 
     Axes -> None, Frame -> None, Method -> {"ShrinkWrap" -> True}, 
     ColorFunction -> GrayLevel, ImageSize -> 512]; 

     Show[ImageFilter[Mean[Flatten[#]] &, CurrentImage[], 20, 
      Masking -> mask], ImageSize -> 512] 

使用上Can we generate "foveated Image" in Mathematica Sjoerd溶液。

我希望这是动态的。现在它只拍摄一张照片。 在我的演示过程中,如何在不“崩溃”电脑的情况下实现“实时”工作的最佳方式是什么?我可以调整刷新率吗?操作面罩?停止“视频模式”拍摄照片?

+0

当我在V 8.01中运行代码时出现错误“Show :: gtype:ImageFilter不是一种图形类型”CurrentImage :: checkcam:Mathematica无法连接到相机。检查相机是否已正确连接并且当前没有被其他应用程序使用 – Nasser

+1

@Nasser检查相机是否已正确连接并且该相机目前未被其他应用程序使用:) –

+0

@ 500您还应在您的问题是你正在使用Mma 8或者用[tag:mathematica-8]标记它。我无法尝试你的大部分问题,因为它们不能在v7上运行(我使用)... – abcd

回答

2

只需将您的Show包装在Dynamic中,它就会尽可能快地进行更新。结合Refresh设置刷新率。或使用timed background task

虽然手工模糊滤镜耗时过长,但结果有点慢。一个更好的选择是这样的:

mask = DensityPlot[-Exp[-(x^2 + y^2)/5], {x, -4, 4}, {y, -3, 3}, 
    Axes -> None, Frame -> None, Method -> {"ShrinkWrap" -> True}, 
    ColorFunction -> GrayLevel, ImageSize -> {320, 240}]; 

ImageCompose[im = CurrentImage[], SetAlphaChannel[Blur[im, 20], mask]]//Dynamic 

它实时更新。请注意,我已经更改了蒙版的图像尺寸以适合笔记本电脑摄像头的尺寸。 x和y的范围比例应该与相机的宽高比相同。

enter image description here

记住,如前面提到的,这只是假货视力模糊。这远非现实。

+0

谢谢你Sjoerd。我知道这是对视觉模糊的粗略估计。我想你会对此感兴趣:http://www.jeremyfreeman.net/public/downloads/Freeman-Simoncelli-2011-Metamers.pdf – 500

+0

@ 500谢谢,看起来很有趣。我正在转移视觉心理物理学,但... –

+0

我真的很好奇你在做什么。我浏览了您的出版物,并发现与我的顾问(http://www.psych.nyu.edu/maloney/)有相似之处。你现在正朝着什么方向前进? – 500

1

从未与Mma一起使用过相机,但似乎通过使用ImageCapture[],您可以指定帧速率和其他参数。

然后在“循环”中使用CurrentImage []来处理任何你想要的。您甚至可以从ImageCapture []界面停止设备。