要为 Mathematica imcrop 非文本 PDF?

To imcrop non-textual PDF for Mathematica?

我想从我的高质量 PDF 文档中准备一个 selection 数据,该文档没有文本元素(只是一个图表),最初由 Matlab 准备。 我不想为我的同事们提供全貌,因为它太过分了。

#1 Matlab 中的工具

我知道这个帖子 How can I read an image file that is stored in PDF format (much like reading a jpeg file with I = imread('image.jpg')? 但我的同事拒绝了我的经验,对于我的任务来说,PDF 应该足够了,因为我的数据只是一个没有文本元素的高质量图表。 最相关的主题是这个 How to extract data from pdf file in matlab? 大多数尝试都是基于将 PDF 提取为 TXT,例如 How to Read PDF file in Matlab? about pdftotext.

我现在想要 imcrop PDF,以便输出可以用于 Mathematica 的时间序列分析 here, but I did not find that the default imcrop tool of Matlab is supporting PDF, Crop an Image。 一些发现

对 Mathematica 的评论

如果区域 selected 能够相互对应就好了。 因此,我希望有一些视觉工具可以从图中 select 适当的区域。 我注意到在放大原始图像时会出现一些混叠。 很高兴知道 Mathematica 如何使用 ImageTake.

处理此类情况

如何为 Mathematica 的时间序列工具箱准备 PDF 图像的 imcrop? 我认为这个问题是关于图像提取的。 但是,我将问题扩展到 Mathematica 的线程 Better Colormap of Matlab and Image Extraction for Time-Series Toolbox of Mathematica?

Mathematica 会将您的 pdf 作为图形对象导入,您可以使用 plotrange 'crop'。

pdf = Import[filename.pdf];
Show[pdf[[1]], PlotRange -> {{50, 200}, {100, 300}}]  

请注意 "points"

中的值为 {{xmin,xmax},{ymin,ymax}}

你也可以光栅化然后使用ImageTake

ImageTake[Rasterize[pdf[[1]]], {10, 100}, {20, 100}]

这里的值为{ymin,ymax} , {xmin,xmax}(注意倒序)

注意这里的 [[1]] 实际上是页码。我很确定 Import returns 一个页面列表,即使 pdf 是一个页面。

如果您想实际提取绘图数据,那是另一个问题。为此,我建议 mathematica.stackexchange.com 并提供示例文件。