除了每个像素循环判断过去,还有什么快一些的办法吗?
1
Jooooooooo 2022-08-31 16:56:42 +08:00 1
纯色什么定义?
|
2
murmur 2022-08-31 17:02:26 +08:00
搜了一下,方法大多是使用 c 库缩放图片到小尺寸,比如 16*16 ,这样肯定有误差,但是总比对着几 k 分辨率图片遍历性能要好
|
3
AoEiuV020CN 2022-08-31 17:06:16 +08:00
对计算机来说,没有比遍历更高效准确的了,
可以牺牲准确的话直接在遍历的时候选择性跳过一些就是了, |
4
villivateur 2022-08-31 17:10:46 +08:00
如果是用通用 CPU 去计算,肯定只能遍历。
当然你可以想象其他办法,比如用 GPU 加速,或者用 FPGA 专门写个用于判断图片纯色的方案。 |
6
ipwx 2022-08-31 17:30:22 +08:00
|
7
jdhao 2022-08-31 17:33:33 +08:00 via Android 1
理论上不遍历,你不可能确定,另外需要考虑是否需要像素值完全一样,还是感官上一样,例如 (255,255,255) 和 (255, 254, 255) 是否一样?
|
8
paramagnetic 2022-08-31 17:41:30 +08:00 via iPhone
对图片做 FFT 然后检查是否只有 DC 分量( doge )
|
9
LeegoYih 2022-08-31 17:58:57 +08:00 2
1. 如果图片大部分不是纯色的,那么遍历是最快的
2. 允许小概率出现错误,采样就行,随机取 30%的像素点判断 3. 外包给印度人,肉眼判断 |
10
cpstar 2022-08-31 18:09:12 +08:00
利用压缩?特别是摘要压缩?
|
11
xtreme1 2022-08-31 18:13:51 +08:00
@ipwx 这种大量小对象的情况就是 native 语言的核心阵地, java 多一个 12 bytes 的 header, 很多时候就决定了内循环能不能放进 L1.
|
12
z1113456051 2022-08-31 18:14:19 +08:00
先按段或者求余分 n 组,比较每组的第 m 个都相同。
|
13
murmur 2022-08-31 18:20:02 +08:00
|
14
lakehylia 2022-08-31 18:23:19 +08:00
判断所有点是否聚集,不是用方差吗?
|
15
lakehylia 2022-08-31 18:29:40 +08:00
回忆了下,这不就是聚类算法嘛。。。
|
16
wasd6267016 2022-08-31 18:49:22 +08:00
准确算法的话无论如何都要遍历吧 少读一个像素都不行
|
17
XuHuan1025 2022-08-31 18:50:34 +08:00
.isBlank
|
18
TimePPT 2022-08-31 19:57:59 +08:00
搞几百张你认为的纯色图片,直接训个二分类器就行。
|
19
fox0001 2022-08-31 23:55:55 +08:00 via Android
1 )图片都是位图吗?有没有矢量图?
2 )回复里都提到,纯色是怎样定义?要不要考虑色差范围? 3 )如果纯色的定义是每一个像素的颜色值都相同,那只能逐个像素遍历。正如 16 楼所言。 4 )文件处理,不是 Java 的强项。好像 stream 针对这种情况的遍历优化过,但也不会快太多。并发处理的话,理论上更快。这方面我缺乏经验,也不能给太多详细建议。 |
20
TimPeake 2022-09-01 00:03:12 +08:00
随机取 N 次 个点坐标色值?如果相同则是纯色 哈哈
|
21
icyalala 2022-09-01 00:08:02 +08:00
如果是位图,那无论如何都要遍历所有像素。上面说的什么缩小、压缩,同样也是遍历。
优化点无非是比如用 simd 加速一下,我觉得够快了。 如果是特定的压缩格式,比如 png 带调色板的,那直接根据压缩方式查一下肯定最快。 |
22
pennai 2022-09-01 00:13:08 +08:00
压缩操作本身就需要遍历,抛开前置条件谈没有意义啊
|
23
jifengg 2022-09-01 09:02:47 +08:00
如果是要判断完全一致的纯色,个人觉得除了遍历没有其他办法了。
遍历的话,可以根据实际场景优化,比如从四个角往中心,或者反着来,就是尽早遇到不一样的颜色,退出遍历。 |
24
bibitiger 2022-09-01 16:10:51 +08:00
切片,多线程
比较换成位运算 当然你要是大多数都不是纯色的话,遍历应该最快 |
25
anonymous2351d00 2022-09-01 17:16:29 +08:00
这个我熟,拉取各大 java 去掉末位 a 的网站,对比车牌号就能识别是不是纯纯的色图[狗头]。
|