感谢imageJ库,我已经找到了图像的边缘。
现在,我想得到一个包含这些边缘的数组。
这里有一个关于它的主题,但我无法发表评论而且没有答案: Find Edges with ImageJ Programmatically
答案 0 :(得分:2)
如§29.3 Find Edges中所述,该命令使用Sobel operator。最终图像的每个点都是水平和垂直卷积的magnitude of the gradient。所选ImageProcessor
的get*Array()
方法返回整个数组的副本;可以使用各种get*()
方法访问数组的各个元素。
附录:你说,“我的目标是获得优势。我的问题不在于获得每个像素值。”
Edge detection不是trivial;它通常是一个多阶段的过程。数组的大小仅仅是应用first-order Sobel算子的初始结果。管道中的下一个stages,例如阈值,链接,细化,取决于你的目标。
答案 1 :(得分:0)
是的,我知道这是旧的,但这需要一个答案。以编程方式使用imageJ
float edgePixels[][];
ImagePlus imp = null;
Opener op = new Opener();
imp = op.openImage("lib/EP07-J.jpg");
ImageProcessor improc = imp.getProcessor().duplicate();
improc.medianFilter();
improc.findEdges();
edgePixels = improc.getFloatArray();
恭喜,您现在拥有一个多维数组,表示边缘检测后的像素。