有谁可以帮我理解Mean Shift分割实际上是如何工作的?
这是我刚刚编写的8x8矩阵
103 103 103 103 103 103 106 104
103 147 147 153 147 156 153 104
107 153 153 153 153 153 153 107
103 153 147 96 98 153 153 104
107 156 153 97 96 147 153 107
103 153 153 147 156 153 153 101
103 156 153 147 147 153 153 104
103 103 107 104 103 106 103 107
Run Code Online (Sandbox Code Playgroud)
使用上面的矩阵可以解释Mean Shift分割如何将3个不同的数字水平分开?
我用Mma主要解决相对较小的问题.
我也想开始使用它来准备我的演示文稿和文档,但是我很难从嵌入式帮助中学习如何做到这一点,我想其他地方可能会提供一些好的资源.
你知道任何有用的指针(书籍,论文,视频......)吗?
你有一个"技巧袋"在这里张贴?
编辑
到目前为止,这个问题得到了两个答案(@ mzabsky和Mr.Wizard's)虽然两者都很有用,但也许我的担忧更为基础.所以我张贴的一个例子样的事情我不能做(或了解如何辨别别人是怎么做他们).
我从The Mathematica Journal(以下图片左侧的笔记本 - 点击图片查看完整尺寸)中选择了以下示例:
所以,有些问题,只是为了弄清楚我的麻烦:
1)我将文本复制到我右边的.nb,用相同的样式(文本)格式化,但外观不同,所以我猜风格定义不同.如何将样式定义从一个.nb复制到另一个?
2)文本块下面的表格没有附加样式.它是如何格式化的?背景颜色在哪里定义?
我想要指出关于这些问题的阅读(或要观看的视频,或其他什么).我不想让你在这里写下一本关于Mathematica格式的书!
可以使用以下结构在Mathematica中实现有限形式的Currying:
f[a_][b_][c_] := (a^2 + b^2)/c^2
Run Code Online (Sandbox Code Playgroud)
允许一个人做,例如:
f[4][3] /@ Range@5
Run Code Online (Sandbox Code Playgroud)
{25, 25/4, 25/9, 25/16, 1}
有一个问题:Attributes
只适用于第一个(一组)参数.考虑:
ClearAll[f]
SetAttributes[f, HoldAllComplete]
f[a_][b_][c_] :=
{ToString@Unevaluated@a,
ToString@Unevaluated@b,
ToString@Unevaluated@c}
f[2 + 2][ 8/4 ][3 + 5]
Run Code Online (Sandbox Code Playgroud)
{"2 + 2", "2", "8"}
我的意图是返回"8 / 4"
,并"3 + 5"
在列表中.
所以:
有没有办法将属性扩展到此构造?
是否有其他方便的结构来实现这一目标?
除了属性之外,还有其他方法可以扩展Mathematica中的Currying吗?
我正在寻找一种方法来检测两个(相似)图像中的哪一个更清晰.
我认为这可以使用一些整体锐度的度量并产生分数(假设的例子:image1的清晰度得分为9,image2的清晰度得分为7;因此image1更清晰)
我已经对锐度检测/评分算法进行了一些搜索,但只是遇到了可以提高图像清晰度的算法.
有没有人做过这样的事情,或者有任何有用的资源/线索?
我将在webapp的上下文中使用此功能,因此首选PHP或C/C++.
在32位操作系统下,分配给任何一个程序的最大内存有限,Mathematica优雅地终止内核并返回最大内存分配错误.
然而,在64位操作系统上,Mathematica将自由使用所有可用内存并使系统停止运行.因此,限制内存使用的正确方法是什么?可以使用MemoryConstrained
组合$Pre
或CellEvaluationFunction
但我不想为此目的绑定其中任何一个,或者必须修改现有用途以合并此功能.
是否存在另一种全局限制内存使用的方法,例如内核标志或系统$ Option?
这是问题所在:我有许多由不同厚度的痕迹组成的二进制图像.下面有两张图片来说明问题:
我需要的是测量图像中痕迹的平均厚度(以像素为单位).实际上,图像中痕迹的平均厚度是一种有点主观的度量.所以,我需要的是一个与轨迹半径有一定关系的度量,如下图所示:
由于该措施不需要非常精确,我愿意以精确度换取速度.换句话说,速度是解决这个问题的重要因素.
痕迹中可能存在交叉点.
迹线厚度可能不是恒定的,但平均测量值是可以的(即使最大迹线厚度是可接受的).
跟踪总是比它宽得多.
language-agnostic algorithm image image-processing computer-vision
我将如何将一组int的列表转换为Python中的矩阵图?
示例数据集是:
[[3, 5, 3, 5, 2, 3, 2, 4, 3, 0, 5, 0, 3, 2],
[5, 2, 2, 0, 0, 3, 2, 1, 0, 5, 3, 5, 0, 0],
[2, 5, 3, 1, 1, 3, 3, 0, 0, 5, 4, 4, 3, 3],
[4, 1, 4, 2, 1, 4, 5, 1, 2, 2, 0, 1, 2, 3],
[5, 1, 1, 1, 5, 2, 5, 0, 4, 0, 2, 4, 4, 5],
[5, 1, 0, 4, 5, 5, 4, 1, …
Run Code Online (Sandbox Code Playgroud) 为了给你一些关于我正在做的事情的背景:我试图通过图像分析来定量记录可压缩流体的流量变化.一种方法是利用流体的折射率与其密度直接相关的事实.如果在流动后面设置某种图像,由于折射率在整个流体场中的变化导致的图像失真会导致密度梯度,这有助于表征流动模式.
我有一套例程,使用常规的2D点图案成功完成此操作.点图案稍微扭曲,通过比较失真图像中的点与非失真图像中的点的位置,我得到一个置换场,这正是我需要的.这种方法的问题是解决方案.分辨率仅限于字段中的点数,我正在探索能够提供更多数据的方法.
我有一个想法是使用水平和垂直线的规则网格.这个图像会以同样的方式扭曲,但不是只得到一个点的位移,我将有一个网格的连续失真.似乎必须有一些标准的算法或程序来比较一个几何网格和另一个几何网格并推断某种位移场.尽管如此,我的研究中还没有发现这样的东西.
有没有人有一些想法可能会指出我正确的方向?仅供参考,我不是计算机科学家 - 我是工程师.我之所以这么说,只是因为来自不同的领域,我可能会忽略一些明显的方法.但我可以编程.我正在使用MATLAB,但我可以阅读Python,C/C++等.
以下是我正在使用的图像类型的示例:
Regular: Distorted:
Run Code Online (Sandbox Code Playgroud)
--------
我正在尝试在矩形对象中绘制渐变,具有给定角度(Theta),其中渐变的末端接触矩形的周长.
我认为使用切线会起作用,但是我很难解决问题.有一个简单的算法,我只是缺少?
最终结果
因此,这将是(angle,RectX1,RectX2,RectY1,RectY2)的函数.我希望它以[x1,x2,y1,y2]的形式返回,以便渐变将在正方形上绘制.在我的问题中,如果原点是0,那么x2 = -x1和y2 = -y1.但它并不总是在起源上.
我正在编写一个基于Ukkonen算法在Mathematica中构造后缀树的算法.
我的问题是,将我的整个树结构(我已经存储在一个列表中)传递给一个要搜索的函数,为我的程序花费了大量的内存和时间,因为我必须多次使用一些函数.算法?
例如,我有一个搜索特定节点的子节点的Select
函数,我使用该函数搜索整个树.
getChildren[parentID_] := Select[tree, #[[3]] == parentID &];
Run Code Online (Sandbox Code Playgroud)
但是我需要访问树,所以将整个树结构传递给函数是否合理?因为似乎没有办法让整个笔记本变量全局变量.或者是否有其他方法来解决这个问题?