将单色图像转换为 x,y 坐标转换为数据框
Convert monochrom image into x,y coordinates into a dataframe
我想将单色图像的“黑色值”转换为 x-y 点,以便稍后在散点图中绘制它们。
link 中的下图很容易解释我在寻找什么。
我也想控制“每区点数”的数量!
让我们采取:
(来源:tieudesigns.com)
作为我们的示例图像。
编辑:
这是我想出的:
> library("magick")
> test <- image_read('*CENSORED*\white-circle-black-background.jpg')
> testDS <- as.raster(test)
只是展示我在评论中暗示的内容。您必须将方法调整为 R
,因为我在命令行中使用 ImageMagick 展示了 技术 :
convert mask.jpg -threshold 50% -colorspace gray -fx "(1-u)*rand()>0.8 ? 0:1" result.png
或更改阈值:
convert mask.jpg -threshold 50% -colorspace gray -fx "(1-u)*rand()>0.9 ? 0:1" result.png
有趣的部分显然是 -fx
表达式,它使用每个像素的值 - 称为 u
- 并在 [0,1] 范围内缩放,其中 0 为黑色, 1 是白色的。基本上,我反转像素 (1-u
) 并乘以一个随机数,然后对其进行阈值处理。改变阈值会改变像素的密度。根据结果,我输出黑色或白色像素。
我不确定你所说的 "translate those values into coordinates" 是什么意思,但如果你真的想要一个黑色像素坐标的列表:
convert mask.jpg -threshold 50% -colorspace gray -fx "(1-u)*rand()>0.8?0:1" -depth 8 txt: | grep "(0)"
示例输出
2,0: (0) #000000 gray(0)
4,0: (0) #000000 gray(0)
6,0: (0) #000000 gray(0)
7,0: (0) #000000 gray(0)
8,0: (0) #000000 gray(0)
10,0: (0) #000000 gray(0)
13,0: (0) #000000 gray(0)
14,0: (0) #000000 gray(0)
我想将单色图像的“黑色值”转换为 x-y 点,以便稍后在散点图中绘制它们。
link 中的下图很容易解释我在寻找什么。
我也想控制“每区点数”的数量!
让我们采取:
(来源:tieudesigns.com)
作为我们的示例图像。
编辑:
这是我想出的:
> library("magick")
> test <- image_read('*CENSORED*\white-circle-black-background.jpg')
> testDS <- as.raster(test)
只是展示我在评论中暗示的内容。您必须将方法调整为 R
,因为我在命令行中使用 ImageMagick 展示了 技术 :
convert mask.jpg -threshold 50% -colorspace gray -fx "(1-u)*rand()>0.8 ? 0:1" result.png
或更改阈值:
convert mask.jpg -threshold 50% -colorspace gray -fx "(1-u)*rand()>0.9 ? 0:1" result.png
有趣的部分显然是 -fx
表达式,它使用每个像素的值 - 称为 u
- 并在 [0,1] 范围内缩放,其中 0 为黑色, 1 是白色的。基本上,我反转像素 (1-u
) 并乘以一个随机数,然后对其进行阈值处理。改变阈值会改变像素的密度。根据结果,我输出黑色或白色像素。
我不确定你所说的 "translate those values into coordinates" 是什么意思,但如果你真的想要一个黑色像素坐标的列表:
convert mask.jpg -threshold 50% -colorspace gray -fx "(1-u)*rand()>0.8?0:1" -depth 8 txt: | grep "(0)"
示例输出
2,0: (0) #000000 gray(0)
4,0: (0) #000000 gray(0)
6,0: (0) #000000 gray(0)
7,0: (0) #000000 gray(0)
8,0: (0) #000000 gray(0)
10,0: (0) #000000 gray(0)
13,0: (0) #000000 gray(0)
14,0: (0) #000000 gray(0)