社区
数据结构与算法
帖子详情
颜色匹配算法求解!!!(急)
yb_yb
2002-04-08 06:43:47
我这里有一个标准的256色颜色表,我想给出一个任意的RGB结构的数据,怎样求出与之匹配的索引?
方法有:1近似法
2抖动法
...全文
221
7
打赏
收藏
颜色匹配算法求解!!!(急)
我这里有一个标准的256色颜色表,我想给出一个任意的RGB结构的数据,怎样求出与之匹配的索引? 方法有:1近似法 2抖动法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
IT_worker
2002-04-12
打赏
举报
回复
不知道你是否看懂了我的思路。
可能你没有看懂,我这里介绍一下我的思路的背景吧。
在做GIS系统的时候,一个比较重要的功能就是空间查询。说得明白一点:
假设系统中有n个对象(n非常大)每个对象都看成一个矩形。假如在平面上选取一个点要求快速查找出所有包含这个点的矩形(算法复杂度为O(log(n))。
要实现快速查找的功能就必须建立空间索引。各个GIS生产商都有它们的R树索引。这里最简单(可能也是最烂)的索引就是4叉树索引。
你的颜色匹配要求就是3维的点索引。而我的索引设计就是在4叉树索引的基础上改进出来的。因为你的数据太少了(才256)索引效果可能不明显,但是精心安排索引还是可以保证的是比简单的 遍历一遍所有数据 要快8倍
yb_yb
2002-04-10
打赏
举报
回复
这是我用的颜色表,它是先是16色,再灰度级,再是一般的颜色定义。怎么样才能找到一种好的方法实现颜色匹配。
U8 ColorTable[256][3]=
{
{ 0, 0, 0},{ 0, 0,168},{ 0,168, 0},{ 0,168,168},
{168, 0, 0},{168, 0,168},{168, 84, 0},{168,168,168},
{ 84, 84, 84},{ 84, 84,255},{ 84,255, 84},{ 84,255,255},
{255, 84, 84},{255, 84,255},{255,255, 84},{255,255,255},
{ 12, 12, 12},{ 25, 25, 25},{ 38, 38, 38},{ 52, 52, 52},
{ 66, 66, 66},{ 97, 97, 97},{114,114,114},{128,128,128},
{150,150,150},{192,192,192},{210,210,210},{232,232,232},
{ 0, 0, 77},{ 0, 0,255},{ 0, 19, 0},{ 0, 19, 77},
{ 0, 19,162},{ 0, 19,255},{ 0, 39, 0},{ 0, 39, 77},
{ 0, 39,162},{ 0, 39,255},{ 0, 62, 0},{ 0, 62, 77},
{ 0, 62,162},{ 0, 62,255},{ 0, 87, 0},{ 0, 87, 77},
{ 0, 87,162},{ 0, 87,255},{ 0,115, 0},{ 0,115, 77},
{ 0,115,162},{ 0,115,255},{ 0,145, 0},{ 0,145, 77},
{ 0,145,162},{ 0,145,255},{ 0,178, 0},{ 0,178, 77},
{ 0,178,255},{ 0,215, 0},{ 0,215, 77},{ 0,215,162},
{ 0,215,255},{ 0,255, 0},{ 0,255, 77},{ 0,255,162},
{ 0,255,255},
{ 42, 0, 0},{ 42, 0, 77},{ 42, 0,162},
{ 42, 0,255},{ 42, 19, 0},{ 42, 19, 77},{ 42, 19,162},
{ 42, 19,255},{ 42, 39, 77},{ 42, 39,162},{ 42, 39,255},
{ 42, 62, 0},{ 42, 62, 77},{ 42, 62,162},{ 42, 62,255},
{ 42, 87, 0},{ 42, 87, 77},{ 42, 87,162},{ 42, 87,255},
{ 42,115, 0},{ 42,115, 77},{ 42,115,162},{ 42,115,255},
{ 42,145, 0},{ 42,145, 77},{ 42,145,162},{ 42,145,255},
{ 42,178, 0},{ 42,178, 77},{ 42,178,162},{ 42,178,255},
{ 42,215, 0},{ 42,215, 77},{ 42,215,162},{ 42,215,255},
{ 42,255, 0},{ 42,255, 77},{ 42,255,162},{ 42,255,255},
{ 88, 0, 0},{ 88, 0, 77},{ 88, 0,162},{ 88, 0,255},
{ 88, 19, 0},{ 88, 19, 77},{ 88, 19,162},{ 88, 19,255},
{ 88, 39, 0},{ 88, 39, 77},{ 88, 39,162},{ 88, 39,255},
{ 88, 62, 0},{ 88, 62, 77},{ 88, 62,162},{ 88, 62,255},
{ 88, 87, 0},{ 88, 87,162},{ 88,115, 0},{ 88,115, 77},
{ 88,115,162},{ 88,115,255},{ 88,145, 0},{ 88,145, 77},
{ 88,145,162},{ 88,145,255},{ 88,178, 0},{ 88,178, 77},
{ 88,178,162},{ 88,178,255},{ 88,215, 0},{ 88,215, 77},
{ 88,215,162},{ 88,215,255},{ 88,255, 0},{ 88,255,162},
{138, 0, 0},{138, 0, 77},{138, 0,162},{138, 0,255},
{138, 19, 0},{138, 19, 77},{138, 19,162},{138, 19,255},
{138, 39, 0},{138, 39, 77},{138, 39,162},{138, 39,255},
{138, 62, 0},{138, 62, 77},{138, 62,162},{138, 62,255},
{138, 87, 0},{138, 87, 77},{138, 87,162},{138, 87,255},
{138,115, 0},{138,115, 77},{138,115,162},{138,115,255},
{138,145, 0},{138,145, 77},{138,145,162},{138,145,255},
{138,178, 0},{138,178, 77},{138,178,162},{138,178,255},
{138,215, 0},{138,215, 77},{138,215,162},{138,215,255},
{138,255, 0},{138,255, 77},{138,255,162},{138,255,255},
{194, 0, 0},{194, 0, 77},{194, 0,162},{194, 0,255},
{194, 19, 0},{194, 19, 77},{194, 19,162},{194, 19,255},
{194, 39, 0},{194, 39, 77},{194, 39,162},{194, 39,255},
{194, 62, 0},{194, 62, 77},{194, 62,162},{194, 62,255},
{194, 87, 0},{194, 87, 77},{194, 87,162},{194, 87,255},
{194,115, 0},{194,115, 77},{194,115,162},{194,115,255},
{194,145, 0},{194,145, 77},{194,145,162},{194,145,255},
{194,178, 0},{194,178, 77},{194,178,162},{194,178,255},
{194,215, 0},{194,215, 77},{194,215,162},{194,215,255},
{194,255, 0},{194,255, 77},{194,255,162},{194,255,255},
{255, 0, 0},{255, 0, 77},{255, 0,162},{255, 0,255},
{255, 19, 0},{255, 19, 77},{255, 19,162},{255, 19,255},
{255, 39, 0},{255, 39, 77},{255, 39,162},{255, 39,255},
{255, 62, 0},{255, 62, 77},{255, 62,162},{255, 62,255},
{255, 87, 0},{255, 87,162},{255,115, 0},{255,115, 77},
{255,115,162},{255,115,255},{255,145, 0},{255,145, 77},
{255,145,162},{255,145,255},{255,178, 0},{255,178, 77},
{255,178,162},{255,178,255},{255,215, 0},{255,215, 77},
{255,215,162},{255,215,255},{255,255, 0},{255,255,162},
};
IT_worker
2002-04-10
打赏
举报
回复
我想你可以给你的256标准色做一个索引。我设计一个索引如下,不知道能否用得着。
为了讨论方便假设RGB的取值范围都为[0,1];
那么将标准色中所有R<2/3的颜色放入子索引a中,所有R>1/3的颜色放入子索引b中。注意a,b中可能有颜色相同。
假如现在有一种颜色rgb其中r<1/2那么我们到a中找到与它最近的颜色。如果最近颜色与他的距离<2/3-r那么我们可以断定b中不会找到距离更近的颜色了。如果不幸找到的最近距离>2/3-r那么只好到b中找距离最近的颜色了,二者取其小的。
说明:我的距离定义为:max( |r1-r2|,|g1-g2|,|b1-b2| )
我前面说的在a中找最近颜色是指过一遍所有a中的颜色。如果a中的颜色还是太多,那么就要将a继续分成2块,不过这次不能在R这维分了。
总之通过分块的方法缩小过一遍颜色的个数。
为什么:
为什么我按[0,2/3],[1/3,1]这种方式而不是[0,1/2],[1/2,1]这种方式分块呢?应为我考虑当x接近于1/2的时候第二种分块方式在很大概率上要去查找两个块,这就损失了索引的意义。
yb_yb
2002-04-09
打赏
举报
回复
cplusc(5i海洋)你的这种算法我也想到了,但是每次执行时运算量太大,知道我是用单片机中的,要是经常对颜色操作,效率不高。还有就是不能找到每种颜色的渐变色。谢谢你给的帮助。我会给分的。
不知道那们还有更好一点的办法,最好能用抖动算法。那样就没有主颜色差之说了。
cplusc
2002-04-08
打赏
举报
回复
我也不知道这是什么算法, 效果还可以, 时间太紧,没加注视
typedef struct RGBTag
{
int R,G,B
};
RGBTag Pal[256];
int FindNearest( int R,G,B)
{
int D=999999, P, Best;
int i;
for (i = 0; i < 255; i++)
{
P = ( R-Pal[i].R) *( R-Pal[i].R) + ( G-Pal[i].G) *( G-Pal[i].G) + ( B-Pal[i].B) *( B-Pal[i].B)
if ( P < D )
{
D = P;
Best = i;
}
}
return(Best);
}
youwill
2002-04-08
打赏
举报
回复
256色, not many colors, 给出与之匹配Table , scan table every time.
挺拔的劲松
2002-04-08
打赏
举报
回复
gz
Java40道最经典
算法
Java最够经典的
算法
题,初学者必懂。好好学,好好练,这就是学习的最终的秘诀。
程序员编程艺术系列之经典
算法
研究 电子书【高清中文带书签】
围绕“面试”、“
算法
”、“编程”三个主题的程序员编程艺术系列(简称TAOPP系列),从今年4月写第一篇起,至今快有一年。近1年的创作中,写了二十七章,共计22篇文章。这是本人的第4大原创作品,不过与之前微软面试100题系列,红黑树系列,及十三个经典
算法
研究系列相比,编程艺术系列的某些篇文章的作者除了我本人自己,或多或少还得到了不少朋友的支持,我把这些朋友组织起来,成立了一个工作室,它的名字叫做编程艺术室。 编程艺术系列最初名为程序员面试题狂想曲,即为面试服务,后来随着加入与我一起创作的人越来越多,我们逐渐意识到,为面试服务不应该成为我们最终或最主要的目的,而应该注重提高广大初学者的编程能力,以及如何运用编程技巧和高效的
算法
解决实际应用问题。这才是计算机科学与编程的本质。于是,我们便把程序员面试题狂想曲系列更名为程序员编程艺术系列,然后把狂想曲创作组确定为编程艺术室。 并提出了我们的宗旨,即如下,编程艺术室致力于以下三点工作: 1. 针对一个问题,不断寻找更高效的
算法
,并予以编程实现。 2. 解决实际中会碰到的应用问题。 3. 经典
算法
的研究与实现。 总体突出一点:编程,如何高效的编程解决实际问题。
MATLAB车牌识别代码 完整源码 下载
MATLAB - 从网上收集的各种车牌识别 多个程序打包。 有神经网络和模板识别
双目立体
匹配
算法
:SGM
立体
匹配
旨在为校正后的左右视图提供稠密的
匹配
对,这种问题称为"stereo correspondence problem"。有大量的
算法
用于
求解
立体
匹配
问题,根据Scharstein和 Szeliski的研究,所有这些
算法
的计算流程基本上都可以分为四个步骤:A.
匹配
代价计算;B.代价聚合;C.视差计算/优化;D.视差细化。其中
匹配
代价用来度量像素或者像素块之间的相似性,计算
匹配
代价的方法有AD、SAD、BT、NCC、Census-Hamming、HMI、Daisy以及基于深度学习方法的
匹配
代价等等。
立体
匹配
算法
概述
立体
匹配
算法
一、立体
匹配
算法
的分类 在立体
匹配
中,
匹配
问题可以看成是寻找两组数据相关程度的过程。立体
匹配
算法
由多种分类。 ①根据
算法
运行时约束的作用范围:分为局部(local)
匹配
算法
和全局(Global)
匹配
算法
。 ②基于生成的视差图:可分为稠密(Dense)
匹配
和稀疏(Sparse)
匹配
。稠密
匹配
:是基于生成的视差图,对于所有像素都能生成确定视差值,称为稠密
匹配
。稀疏
匹配
:只选择关键像素点[...
数据结构与算法
33,028
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章