背景技术:
一般而言,计算装置可基于颜色搜索信息。在一个系统中,可将颜色描述标记成与数据库中的图像或任何对象相关联。用户可输入关键词(例如,“绿色”)并且可在搜索中返回与标记/关键词“绿色”匹配的任何对象。用户然后可浏览搜索结果以找到特定绿色。
用户还可指定颜色以通过拾色器用户界面进行搜索。例如,搜索引擎可提供颜色图像搜索,其中作为搜索的一个准则,可用鼠标选择十二种显示颜色中的一种。搜索引擎然后将返回包含所选择颜色的图像,诸如互联网图像或来自许多数据库中任一个的图像。例如,可使用搜索引擎的界面选择紫色。当结合关键词进行搜索时,搜索引擎可返回与所述关键词有关并且还包含所选择紫色的图像。
附图简述
图1是描绘快速颜色搜索系统的说明性网络拓扑结构的方框图;
图2是示出用于生成或配置图1中所包括的快速颜色搜索数据存储区的过程的实例的流程图;
图3是示出交织位以将多维颜色模型变换成颜色的一维表示的实例的示意图;
图4是示出用于进行快速颜色搜索的过程的实例的流程图;
图5是示出用于进行快速颜色搜索预处理的过程的实例的流程图;并且
图6是示出根据范围前缀的置换计算的交织的一维颜色范围的实例的示意图。
具体实施方式
一般而言,本公开的各方面涉及产生快速颜色搜索数据存储区和/或由一个或多个计算装置执行快速颜色搜索。由于颜色的多维性质,利用结构化数据存储区中的颜色(例如,特定rgb颜色或rgb颜色范围)进行搜索可能富有挑战。这种数据存储区可包括与关系数据库或一些其他类型的数据存储区中的对象相关联的3维rgb颜色。例如,可将rgb颜色值(例如,#c108e5)存储在与绿色连衣裙、绿色图像或与绿色相关联的任何其他数据对象相关联的数据存储区中。
这种数据存储区中的rgb颜色值可被索引以用于搜索。数据存储区索引可以是以另外的写入和使用更多存储空间来维持数据的额外副本为代价来提高数据检索操作在数据存储区表上的速度的数据结构。索引用来快速地定位数据而无需在每次访问数据存储区表时对数据存储区表中的每行进行搜索。可使用数据存储区表的一列或多列来产生索引,从而为快速随机查找和有效访问所排序的记录两者提供基础。传统整数域上的这种索引可允许在整数范围内进行快速查找。例如,在索引的整数域上,“2000与3000之间”的搜索可快速地返回具有处于2000与3000之间整数域的所有记录,并且可以是快于对所有行中整数值的比较的数量级。
然而,n维颜色值的索引(诸如rgb域的索引)并不有助于或加速搜索n维颜色范围。在许多情形中,rgb颜色值可在数据存储区中与数据存储区中的对象记录相关联。rgb域也可被索引。然而,传统的数据存储区并不固有地对rgb域进行正确地索引。例如,rgb值(例如,以十六进制表示的#c108e5)包括三个维度:红色维度(“c1”)、绿色维度(“08”)和蓝色维度(“e5”)。在这些单独十六进制值中的位由维度排列,但不是在所有维度中排列成最高阶数到最低阶数,这使得范围比较难以用单一索引执行。例如,rgb中红色维度的位首先出现,其包括高阶数红色位至低阶数红色位。接着是绿色高阶位至低阶位,再接着是蓝色高阶位低至低阶位。因此,如果颜色搜索范围被指定为(#c001e0至#cf10f0),那么单一传统索引不能用来快速地确定记录中的哪一个在所述范围内具有相关联的颜色,因为这种查找取决于其中域中的所有位根据从最高阶数到最低阶数(例如,通常整数值或类似数据类型)进行排序的索引数据结构。
解决这个问题的一种方法是在数据存储区中具有对应于维度颜色中的每一种的多个索引域。例如,可存在一个红色域(例如,其可作为一个记录的一部分而包含值“c1”),存在另一个绿色域(例如,其可作为一个记录的一部分而包含值“08”),以及存在又一个蓝色域(例如,其可作为一个记录的一部分而包含值“e5”)。这些域中的每一个可被单独地索引。因此,当搜索范围时,每个索引可用于与已被索引的单个颜色进行比较(例如,范围#c001e0至#cf10f0、范围“c0”至“cf”可应用到红色索引,范围“01”至“0f”可应用到绿色索引,并且范围“e0”至“f0”可应用到蓝色索引)。数据存储区然后必须确定指示这一记录的所有的三种索引是否在相应范围内。
前述类型的维度索引的不利的一面在于数据存储区必须搜索三个索引而不是一个,并且然后对所有的准则是否已经满足所有索引进行比较。这个步骤通常比使用单一索引来执行搜索较不有效。
本文所述的实施方案允许增加的查询速度和进行快速搜索,并且克服了上文诸多缺点。更一般地说,除颜色空间之外,本文所述的技术可允许快速地搜索任何多维空间,诸如传统的3维坐标空间。例如,在3d视频游戏中,对象可位于地图上的3维坐标空间中(例如,x水平维度、y深度维度和z垂直维度,其中每个维度正交于其他维度)。在这种视频游戏中,将3维坐标搜索范围叠并成交织的一维整数搜索范围的快速搜索技术(如上文所述)可用来在3维坐标搜索范围内快速地找到视频游戏对象。
在根据本公开的一个实施方案中,可将n维颜色空间转换成1维颜色空间。为简洁起见,尽管本文所述的实施方案经常指代为3维颜色空间的rgb颜色,但是其他维度的颜色空间(例如,4维或5维等)可使用本文所述技术中的一种或多种来得到针对rgb3维颜色空间描述的相同优点。因此,相同或类似技术可应用到如下各项的颜色空间:xyz、色相饱和度明度/亮度(hsb/hsl)、色相饱和度值(hsv)、色相饱和度强度(his)、青深红黄关键色(cmyk)、lab、亮度色度色相(lch)、lms、如图像或视频中使用的ycbcr和y’cbcr、色调饱和度亮度(tsl)、红色绿色(rg)、yiq(如由ntsc颜色tv系统使用)以及yuv(如由pal颜色tv系统使用)。如由本领技术人员理解,在针对颜色维度不使用整数格式的颜色空间中,本文所述的技术仍可通过将浮点维度值转换成整数维度值来应用。
rgb颜色空间中每一种颜色(即,红色、绿色和蓝色)可由单一字节数据(8位)表示。通过交织三种颜色的位(例如,其中每个字符表示一位:如将参考图3进一步描述的rgbrgbrgbrgbrgbrgbrgbrgb),人们可形成唯一表示每种颜色但仅具有单一维度的24位整数。交织rgb位的一个优点在于位重要性的排序得到了保留。通常,根据人的感觉而接近的颜色在这个整数范围上也接近在一起(例如,它们趋向于具有相同的更高阶位)。
保留位的排序的一个优点在于这类排序有效地表示距黑色(即,#000000)和白色(即,#ffffff)的3维颜色值距离。更高阶位通常指示距黑色的较大距离(即,接近白色),而更低的高阶位和更高的低阶位通常指示距白色的更大距离(即,接近黑色)。因此,实际上,交织值可认为是灰度值。
对于数据存储区中的每种颜色,可添加列来保持其等效的24位交织整数。可将标准数据存储整数索引添加至具有此列的表。交织颜色值上的这种索引可被认为灰度索引值。当基于rgb颜色范围执行搜索时,可发生如下预处理:将颜色范围转换成多个交织的颜色范围。预处理可确定每个单个颜色字节中的一个或多个二进制拆分。例如,如果红色范围处于“00001110”与“00010001”之间,那么预处理可将红色搜索转换成两个范围(“00001110”到“00001111”)和(“00010000”到“00010001”),所述两个范围可用来自其他颜色绿色和蓝色的确定的范围置换(和与所述确定的范围交织)。
现参考图1,展示了示出可由计算装置107搜索的颜色数据存储区101的方框图。颜色数据存储区101可以是允许进行整数索引的任意类型的数据存储区,包括关系数据库(诸如sql数据库),或分层数据存储区。颜色数据存储区101虽然存储在一个或多个非暂时性计算机可读介质上,但是可包括一个或多个逻辑数据存储区,每个逻辑数据存储区包括一个或多个数据存储表。颜色数据存储区101可在能够执行软件指令来提供数据存储服务的单一计算装置和/或能够一起提供数据存储服务(例如,允许镜像、备份等)的许多计算装置中实现。在其他实施方案中,颜色数据存储区101可实现为网页服务或由托管计算环境中的一个或多个虚拟机实现。托管的计算环境可包括一个或多个供应和释放的计算资源,所述计算资源可包括计算、联网和/或存储装置。
颜色数据存储区101可包括具有颜色列的一个或多个表。例如,表103可包括多个记录,每个记录包括针对对象的数据(或参考对象(诸如对象标识符))并且与rgb颜色相关联。例如,表103中的每个对象参考可识别人可在网络站点上购买的项目(夹克、书、订书机、服务等)。项目的数据可处于表103中或处于单独的表或通过项目标识符可访问的数据存储区中。每个项目可与表中的一个或多个rgb颜色相关联(例如,颜色映射)。与对象相关联的颜色可通过分析对象的图片导出。用于从图像提取颜色的各种方法和系统在2014年6月26日提交的、题为“image-basedcolorpalettegeneration”、对应于代理文件号seazn.912a1的美国专利申请序列号______;2014年6月26日提交的、题为“image-basedcolorpalettegeneration”、对应于代理文件号seazn.912a2的美国专利申请序列号______;2014年6月26日提交的、题为“image-basedcolorpalettegeneration”、对应于代理文件号seazn.912a3的美国专利申请序列号______;以及2014年6月26日提交的、题为“image-basedcolorpalettegeneration”、对应于代理文件号seazn.912a4的美国专利申请序列号______中描述,所述申请中的每一个整体以引用的方式并入本文。
在一些实施方案中,表103可包含对象到颜色的一个或多个映射。数据存储区中的多个行可指示将对象(诸如图像对象)映射到例如用于粉红色/紫色、复活节蓝(easterblue)和森林绿的rgb编码的颜色。因此,表103的对特定颜色的查询可揭示映射到数据存储区中此颜色的一个或多个对象/项目。
在同一表或单独表(诸如表105)中,rgb颜色可映射到一维整数值。所述一维整数值可包括rgb编码的颜色的交织位。例如,如果用于复活节蓝的颜色编码是#44ede5,那么交织的24位整数可看似011111011000010111000011(如以位所表示)。参考本文所述的图3来进一步描述交织。在一些实施方案中,表103和表105可以相同,其中对象可直接映射到颜色的展平的一维24位整数表示。
可使用24位整数查询数据存储表以确定与颜色相关联的一个或多个对象。在一些实施方案中,数据存储区101可接收sql查询来确定一个或多个对象是否具有处于颜色范围内的相关联的颜色。例如,sql“where”子句语句可以是用来搜索颜色范围的参数(例如,“where24intcolorbetween‘239874’and‘736583’”),其中列“24intcolor”中的值是交织的24位颜色。使用24位颜色到rgb颜色的映射(或在一些实施方案中,仅直接映射到对象)允许数据存储区识别并返回与所搜索的颜色范围相关联的那些对象。
颜色数据存储区101可在允许数据存储区接收查询并且传输搜索结果的网络(例如,私用网络、互联网等)上直接地或间接地连接到许多装置。数据存储区可以是一个装置(例如,数据存储服务器)、多个装置或诸如远程地托管在互联网/云上的远程计算装置。
计算装置107可能够发起查询120并且通过联网(诸如ip联网(互联网、内联网、两者的组合等))访问数据存储区101。计算装置107可以是已经接收到客户端颜色查询、通过颜色搜索模块109处理所述查询并且生成如本文所述的一个或多个交织的颜色范围的服务器(或服务器群或托管的计算装置)。查询120可然后被发送至数据存储区101以供解析。在接收到查询120(例如,sql查询)之后,数据存储区101可处理查询120并且在将交织的颜色范围与交织的颜色范围索引进行比较(例如,包括在表105中)之后返回包括搜索结果的响应122。这种比较可产生可在响应122中被返回的一个或多个匹配颜色或对象(例如,项目或图像)。计算装置107然后可使用返回的颜色和/或对象以用于任何目的(例如,将项目返回到客户端装置,将匹配的颜色展示给落在特定范围内的用户等)。
在一些实施方案中,颜色数据存储区101可直接地而不是通过传统的通信网络连接到计算装置107。例如,计算装置107可存储颜色数据存储区101并且执行数据存储过程来应答查询,以及执行网络服务器(或其他服务器)处理来通过互联网或通过本地用户接口接受用户颜色查询。颜色搜索模块109然后可处理所述颜色查询,将交织的颜色范围发送至数据存储过程并且接收响应。
在一些实施方案中,计算装置107可包括用户装置(例如,家用或办公用计算机、智能电话、平板、可穿戴式计算装置等),所述用户装置包括计算机硬件和软件部件(诸如处理单元、网络接口、非暂时性计算机可读介质驱动器和输入/输出装置接口,其中的全部可通过通信总线相互通信)的布置。网络接口可提供到一个或多个网络或计算系统的连接性。处理单元可因此通过网络从其他计算装置、系统或服务接收信息和指令。处理单元也可通信至存储器并且从存储器通信,并且通过输入/输出装置接口进一步提供输出信息。输入/输出装置接口也可从各种输入装置(诸如键盘、鼠标、数字笔、触摸屏等)接受输入。计算装置107的存储器可包含处理单元可执行以便实现本公开的一个或多个实施方案的计算机程序指令,诸如颜色搜索模块109。存储器通常包括ram、rom和/或其他持久和/或非暂时性计算机可读存储介质。
此外,存储器可包括用户浏览器。用户浏览器可能已经与网络站点(例如,网站)联系并且基于从远程服务器接收的信息来加载图形用户界面。用户浏览器可用来启动搜索。例如,用户浏览器可获得用来搜索的颜色范围和在一些实施方案中,另外的搜索参数(诸如键盘、项目价格、项目/对象类型等)。这类另外的参数可用来进一步过滤除颜色之外的搜索结果。颜色搜索模块109可在计算装置107上、在浏览器内(例如,通过
颜色数据存储区101的搜索性能可通过在多个子数据存储系统上实现颜色数据存储区101来提高。在这种情形下,组成颜色数据存储区101的每个子数据存储区可负责应答针对特定的、预定义颜色范围的查询。通过举例,在简单的情形中,颜色数据存储区101可通过使用三个子数据存储区来实现。每个子数据存储区可被配置来接收针对特定交织的颜色范围的查询,诸如子数据存储区#1响应于展平的一维颜色以“0”的最高阶位开始的查询,子数据存储区#2响应于展平的一维颜色以“10”开始的查询,以及子数据存储区#3响应于展平的一维颜色以“11”开始的查询。
被分配给每个子数据存储区的范围可基于每个子数据存储区内的索引颜色值的密度而被手动地或自动地配置。在一个实施方案中,算法可将子数据存储区配置成处置较大的、稀疏分布的颜色范围,并且将另一个子数据存储区配置成处置较小的但更加密集分布的颜色范围。这种算法可在不需要人工干预的情况下执行,以便基于可能的结果在特定颜色范围内的分布来调整在运行中的每个子数据存储区。这种方法可根据每个子数据存储区的处理能力将颜色数据存储区101中的记录扩展到子数据存储区上。
在多个子数据存储区情形中,产生搜索查询的计算机可然后制成针对每个子数据存储系统的单独的查询,将所述单独的查询并行地发送至每个子数据存储系统,并且并行地接收结果。这种并行性可通过同时查询多个、更小的子数据存储区而引起性能增加。
可生成颜色数据存储区101并且具体地,包括一维交织的颜色映射(例如,24位交织的整数)到多维颜色映射(例如,rgb颜色或具有隶属颜色的项目)的表(诸如表105)以支持快速颜色查询,如在下文图2所述。
现参考图2,将描述通过访问计算装置(诸如计算装置107)实现的快速颜色数据存储生成例程200的实施方案。本领域技术人员将理解,被概述用于例程200的动作/元素可以由与计算装置107(诸如颜色搜索模块109)相关联或与颜色数据存储区101相关联的一个或多个计算装置/部件/模块来实现。因此,通过举例,例程400已在逻辑上关联成由计算装置107执行。
在块202处,计算装置107可访问颜色数据存储区101(例如,登录到数据存储区或以其他方式准备执行查询并将数据存储在数据存储区中)。访问计算装置可以是计算装置107或能够与颜色数据存储区101交互的任何其他计算装置,包括实现颜色数据存储区101的任何计算装置。
在块204处,计算装置107可查询并访问在颜色数据存储区101中使用或可用的每种颜色。然后,在块206处,对于多维颜色数据存储区101中的每种颜色,计算装置可交织来自颜色数据存储区101中的多个维度中的每个维度的位。例如,如下文进一步所述的图3所示,可交织rgb颜色值中的红色维度位、绿色维度位和蓝色维度位来形成24位整数。图3公开在此申请中可如何执行交织的一个实例。
在图3中,rgb颜色#15b01a可对应于通常所谓的“绿色”。作为rgb三维颜色空间的一部分的这种绿色具有可分别以十进制(21、176、26)、十六进制(15、b0、1a)或位(00010101、10110000、00011010)表示的三个维度(红色、绿色和蓝色)。红色维度的位302可从最高到最低、从左到右进行排序(例如,大端、较小的存储器地址到较大的存储器地址)。例如,可根据红色维度的值来缩放用来结合其他颜色进行显示的红色光的强度(例如,led“亮度”)。根据每个位正常为8位/1字节整数加权来对每个位估值。因此,最高阶位中的“1”被定值为128(2的第7次方(2^7)),而最低阶位中的1被定值为1(2^0)。对于示例性红色维度值302,所述值为00010101,其为分别被称为r7、r6、r5、r4、r3、r2、r1和r0的位的值。
类似地,可根据绿色维度304中的位来缩放用来结合红色光和蓝色光显示的绿色光的强度。对于示例性绿色维度值304,所述值为10110000,其为分别被称为g7、g6、g5、g4、g3、g2、g1和g0的位的值。同样地,蓝色维度值00011010是分别为位b7、b6、b5、b4、b3、b2、b1和b0的值。
可然后形成交织红色、绿色和蓝色维度值中所有位的24位整数值,使得处于维度内的它们的排序得到保留。例如,24位整数308在交织之后现可包括010000010111001100001100。这个值对应于交织以下列排序的位:r7g7b7r6g6b6r5g5b5r4g4b4r3g3b3r2g2b2r1g1b1r0g0b0。其他可能的实例可包括更改rgb位的排序(例如,绿色首先g7b7r7g6b6r6…等),使位的排序颠倒(其例如可用于小端系统)(r0g0b0r1g1b1r2g2b2r3g3b3r4g4b4r5g5b5r6g6b6r7g7b7,或甚至b0g0r0b1g1r1b2g2r2b3g3r3b4g4r4b5g5r5b6g6r6b7g7r7)。本领域技术人员将理解,如何使用通过使用颠倒的位序排序小端来实现多维颜色交织系统。也可使用允许24位整数颜色范围搜索的另外的替代性交织位排序。
返回图2,在块208处,对于转换成24位整数的每种rgb颜色,所述24位一维整数然后可存储在与相关联的多维颜色(诸如与rgb颜色相关联的表105中)相关联的颜色数据存储区101中,所述多维颜色可间接地或直接地与颜色数据存储区中的对象(诸如项目(例如,项目标识符))相关联。在一些实施方案中,可将24位整数存储成与颜色数据存储区101中的对象直接相关联(例如,到单一表中项目标识符的映射)。
在块212处,快速颜色数据存储生成过程可确定是否已经将所有颜色转换成单一24位颜色212。如果不,那么箭头214指示所述过程可重复并且可转换更多的颜色并且将所述更多的颜色存储在颜色数据存储区101中。否则,如由箭头212所指示,转换所有颜色的过程可结束。
在块216处,颜色数据存储区101然后可对表中的存储表示颜色的生成的一维交织整数的列进行索引,以基于所述一维整数能够快速进行范围搜索。在被索引之后,所述快速颜色数据存储生成过程可在块218处结束。当接收到查询时,颜色数据存储区101现能够执行快速颜色搜索。
图4示出在用于搜索快速颜色搜索数据存储区(诸如颜色数据存储区101)的一个或多个计算装置(诸如计算装置107)上执行的例程的一个实施方案。这种例程可由硬件处理器执行的软件指令执行并且可包括颜色搜索模块109中的一个或多个部件。可存储所述软件指令以在非暂时性存储介质(诸如一个或多个寄存器、存储区、磁盘、闪存存储区、固态驱动器等)中执行。
进一步参考图4,将描述通过访问计算装置(诸如计算装置107)实现的快速颜色搜索例程400的实施方案。本领域技术人员将理解,被概述用于例程400的动作/元素可以由与计算装置107(诸如颜色搜索模块109)相关联的一个或多个计算装置/部件/模块来实现。因此,例程400已在逻辑上关联成由计算装置107执行。
在块402处,计算装置107获得针对颜色范围的输入以进行搜索。在一些实施方案中,这种输入可包括来自人/机器接口(诸如通过键盘、鼠标等)的输入,作为到图形用户界面(诸如浏览器)中的输入。例如,用户可浏览网络站点并且输入将要搜索的一种或多个rgb颜色或颜色范围。这种颜色(例如,rgb值)可通过拾色器接口、策划的调色板、从图像取出的调色板、具有与项目相关联(例如以找到具有类似颜色的其他项目)的一种或多种颜色的项目、从键盘到颜色转译确定的颜色或其他方法进行选择。在一些实施方案中,可通过网络(诸如通过从包含用来搜索的颜色范围的客户端装置接收一个或多个分组的服务器)获得用来搜索的颜色范围。用来获得一种或多种颜色或颜色范围的各种方法和系统在2014年6月26日提交的、题为“buildingapaletteofcolorsbasedonhumancolorpreferences”、对应于代理文件号seazn.904a1的美国专利申请序列号______;2014年6月26日提交的、题为“buildingapaletteofcolorsfromapluralityofcolorsbasedonhumancolorpreferences”、对应于代理文件号seazn.904a2的美国专利申请序列号______;2014年6月26日提交的、题为“determiningaffiliatedcolorsfromkeywordsearchesofcolorpalettes”、对应于代理文件号seazn.903a3的美国专利申请序列号______;2014年6月26日提交的、题为“automaticcolorpalettebasedrecommendationsforaffiliatedcolors”、对应于代理文件号seazn.907a1的美国专利申请序列号______;2014年6月26日提交的、题为“automaticimage-basedrecommendationsusingacolorpalette”、对应于代理文件号seazn.948a1的美国专利申请序列号______;以及2014年6月26日提交的、题为“creationofdatabaseofsearchablecolornames”、对应于代理文件号seazn.947a1的美国专利申请序列号______中描述,所述申请中的每一个整体以引用的方式并入本文。
如果没有获得颜色范围,但是替代地获得单一颜色,那么可基于一个或多个选择的颜色来确定将要搜索的一个或多个颜色范围。在一些实施方案中,可基于可应用到颜色的可配置的颜色范围来确定颜色范围。例如,如果获得绿色“#15b01a”,那么可通过从一个或多个颜色维度加上和减去设定值(例如,4颜色量级)来确定颜色范围。这种实例将在红色维度中产生处于(以十六进制表示的)处于“11”到“19”之间的范围,在绿色维度中处于“ac”到“b4”之间的范围,并且在蓝色维度中处于“16”到“1e”之间的范围。
在另一个实施方案中,颜色范围可通过应用人可辨识的颜色距离/差异公式来确定。这种公式可基于给定的起始颜色生成给定rgb值的对于人类检测可能难以察觉的一个或多个维度颜色范围,并且为了达到人类目的,可被认为是与起始颜色相同的颜色。在一个实施方案中,颜色搜索范围可包括人不可检测为不同的那些颜色,和/或可包括人几乎不能检测为不同的那些搜索范围。用于使用人的颜色距离公式来确定人可察觉的色差的各种方法和系统在2014年6月26日提交的、题为“image-basedcolorpalettegeneration”、对应于代理文件号seazn.912a1的美国专利申请序列号______;2014年6月26日提交的、题为“image-basedcolorpalettegeneration”、对应于代理文件号seazn.912a2的美国专利申请序列号______;2014年6月26日提交的、题为“image-basedcolorpalettegeneration”、对应于代理文件号seazn.912a3的美国专利申请序列号______;以及2014年6月26日提交的、题为“image-basedcolorpalettegeneration”、对应于代理文件号seazn.912a4的美国专利申请序列号______中描述,所述申请中的每一个整体以引用的方式并入本文。
在另一个实施方案中,可基于通过使用允许修改先前搜索的颜色的颜色调整用户界面得到先前项目搜索的输出来确定颜色范围。不像允许选择颜色的拾色器用户界面,颜色调整用户界面可包括gui滑块,所述gui滑块允许基于给定颜色或颜色范围、或更宽或更窄颜色范围来进行搜索;或允许所搜索的颜色或颜色范围转变以变得更强、更暗、更亮等。先前的项目搜索可以是由颜色单独或与其他准则(诸如关键词、价格等)组合查询的先前颜色搜索的结果。在这种情形下,用户界面可显示所有项目,使得所产生的项目可被浏览和检查,并且使颜色调整用户界面集成在其中。用户界面可以是允许滚动通过多个搜索结果的网络页面。网络页面可包括允许选择更紧密或更广颜色范围的滑块。
例如,计算机装置107上的用户可能已经从基于网络的拾色器用户界面选择绿色“#15b01a”并且将项目搜索以及关键词“手提包”发送至网络服务器。对于包括颜色搜索范围和关键词“手提包”的查询,计算机装置107可将绿色转译成处于绿色附近的第一阈值内的所述颜色搜索范围并且将所述搜索准则传输给颜色数据存储区101。一旦接收到响应,计算装置107可在网络页面上的浏览器内显示所有项目及它们相关联的图像。网络页面可具有滑块用户界面元件,所述滑块用户界面元件通过在第一方向上滑动所述界面来允许颜色搜索范围向上调整。在第一方向上滑动可引导计算装置107重新提交具有比先前搜索更宽或更广颜色搜索范围的搜索。所述颜色搜索范围以与在第一方向上移动滑块的量一致的比率加宽。
类似地,先前颜色搜索范围可通过用户在第二方向上滑动滑块而向下调整,这可引起颜色搜索范围以与在第二方向上移动滑块的量一致的比率下降。
一旦滑块或其他调整用户界面已经被更改,就可基于加宽的或变窄的颜色搜索范围准则来启动新的搜索。所述搜索导致响应将因此根据所述新的颜色搜索范围而被加宽或变窄。以此方式,用户可通过加宽的颜色搜索范围而“看见更多的”与给定颜色匹配的结果,或通过变窄的颜色搜索范围而“看见更少的”结果。
在其他实施方案中,可从其他源(包括事先存在的调色板、相反颜色、相反调色板、颜色到关键词映射等)获得颜色或颜色搜索范围。用于获得颜色或颜色搜索范围的各种方法和系统在2014年6月26日提交的、题为“buildingapaletteofcolorsbasedonhumancolorpreferences”、对应于代理文件号seazn.904a1的美国专利申请序列号______;2014年6月26日提交的、题为“buildingapaletteofcolorsfromapluralityofcolorsbasedonhumancolorpreferences”、对应于代理文件号seazn.904a2的美国专利申请序列号______;2014年6月26日提交的、题为“determiningaffiliatedcolorsfromkeywordsearchesofcolorpalettes”、对应于代理文件号seazn.903a3的美国专利申请序列号______;2014年6月26日提交的、题为“automaticcolorpalettebasedrecommendationsforaffiliatedcolors”、对应于代理文件号seazn.907a1的美国专利申请序列号______;2014年6月26日提交的、题为“automaticimage-basedrecommendationsusingacolorpalette”、对应于代理文件号seazn.948a1的美国专利申请序列号______;以及2014年6月26日提交的、题为“creationofdatabaseofsearchablecolornames”、对应于代理文件号seazn.947a1的美国专利申请序列号______中描述,所述申请中的每一个整体以引用的方式并入本文。其他参数也可被指定为颜色搜索查询的一部分以进一步过滤所期望的查询结果。此类参数可包括关键词、项目价格、项目/对象的类型等。
在块404处,预处理可发生以形成快速颜色搜索查询。例如,在块404处,处理可基于所获得的rgb颜色搜索范围、一个或多个24位整数搜索范围而生成以包括在一个或多个颜色搜索查询中。此外,在块404处,可适当地公式化一个或多个颜色搜索查询。例如,一旦已经生成24位整数颜色搜索范围,那些范围就可形成一个或多个格式化sql查询、api查询、网页服务查询等。在下文参考图5进一步描述预处理。
在块406处,计算装置107可启动搜索查询。启动搜索查询可包括通过网络(例如,局域网、互联网、vpn等)由计算装置107将包括将要搜索的颜色范围的搜索查询传输给颜色数据存储区101或其他颜色查询启动服务(诸如网页服务或颜色搜索服务器)。在一些实施方案中,不需要进行传输,因为颜色搜索模块109可直接或本地访问颜色数据存储区101,或可能够通过直接访问数据存储文件(例如,使用sqlite)执行查询本身。
在块408处,一旦已经搜索所有的24位整数搜索范围,与所搜索范围中的一个或多个匹配或以其他方式与其相关的所期望的数据存储区记录通过查询计算装置(例如,通过本地处理)接收,或通过网络传输返回至计算装置107并且由计算装置107接收。这种搜索结果可返回一种或多种匹配的rgb颜色、rgb调色板或甚至可被去交织的24位整数以确定rgb颜色。在一些实施方案中,搜索结果可返回与在查询中被请求的一个或多个24位整数颜色搜索范围相关联的对象(诸如项目)。
所述搜索结果可通过将查询中的特定整数颜色搜索范围与24位列的索引进行比较由颜色数据存储区101或颜色搜索模块109编译。例如,索引可以是树数据结构,其中通过使整数与树中的节点进行比较,树可指示与整数搜索范围匹配的一行或多行。一个优点在于这比将数据存储区中的每行与颜色范围进行比较或将每个维度的搜索范围与数据存储区中的三个不同索引进行比较更加有效。
在块410处,颜色搜索例程可结束,并且计算装置107可使用搜索结果以进一步进行处理,或在用户应用(诸如浏览器)中格式化和显示所述搜索结果。
现参考图5,将描述通过访问计算装置(诸如计算装置107)实现的快速颜色搜索预处理例程500的实施方案。相关领域的技术人员将会了解,被概述用于例程500的动作/元素可由与计算装置107相关联的一个或许多计算装置/部件/模块(诸如颜色搜索模块109),或可替代地由颜色数据存储区101(例如,当rgb颜色范围在传输的搜索查询中由用户计算装置指定,并且服务器或数据存储区必须在搜索之前将所接收的rgb颜色范围转译成24位整数颜色搜索范围时)实现。因此,例程500已在逻辑上关联成由计算装置107执行。
图5示出可由颜色搜索模块109执行的rgb颜色搜索范围的一个实施方案的预处理。本领域中的技术人员将看到,所述预处理可被快速地外推到除rgb之外的任何其他多维颜色排列。例如,计算装置107可具有包括可在浏览器中运行的
在块502处,执行预处理的计算装置107可获得rgb颜色范围值。所述颜色范围值可包括红色最大颜色值、红色最小颜色值、绿色最小颜色值、绿色最大颜色值、蓝色最大颜色值和蓝色最小颜色值。实施方案随后可将这些维度颜色范围转译成可在快速颜色搜索查询中使用的一个或多个一维24位整数颜色搜索范围。在下文参考块504、506和508描述示例性过程。
在块504处,每个维度颜色范围(例如,最小值到最大值)可在位边界上由计算装置107进一步拆分成另外的范围,使得可在一维中适当地搜索交织值。这些可被称为二进制拆分范围或前缀。
如下是将要解决的问题的说明。假设颜色搜索范围如下:
红色最小值:十六进制-7e二进制-01111110
红色最大值:十六进制-81二进制-10000001
绿色最小值:十六进制-00二进制-00000000
绿色最大值:十六进制-01二进制-00000001
蓝色最小值:十六进制-fe二进制-11111110
蓝色最大值:十六进制-ff二进制-11111111
当交织时,所述结果可似乎产生以二进制表示的如下搜索范围:001101101101101101101000(交织所有最小值)至101001001001001001001111(交织所有最大值),其对应于3,595,112至10,785,359的十进制整数范围。然而,处于此范围内的基于匹配整数的颜色实际上可能不处于将要搜索的颜色范围内。例如,对应于交织位值010000000000000000000000和对应于以十六进制表示为#008000(即,绿色值为#80)的rgb颜色的4,194,304实际上不处于将要搜索的范围内(#7f00fe至#8101ff的绿色的变化不超过00与01之间),但满足处于3,595,112与10,785,359之间的准则。这种错误情况因为来自各种颜色的交织值的位结转而可能发生。换句话讲,呈交织的24位整数形式的范围的结转影响其他维度的颜色值,这是意外的结果并且当颜色实际上不与原始颜色搜索范围匹配时,使一些颜色与呈整数格式的颜色搜索范围匹配。
可通过在执行搜索查询之前进行预处理来避免这种情况。例如,对上述范围进行预处理将使整数搜索范围拆分,其中结转将影响将要搜索的范围。替代搜索从3,595,112到10,785,359的单一整数范围,可作为替代搜索以下两个范围:001101101101101101101000至001101101101101101101111,和101001001001001001001000至101001001001001001001111,其分别对应于3,595,112至3,595,119和10,785,352至10,785,359的十进制整数范围。这些拆分搜索范围现适当地捕获整个搜索范围(例如,原始搜索范围#7f00fe至#8101ff等同于组合的范围#7f00fe至#7f01ff和#810fe至#8101ff)。
在一些实施方案中,后处理而不是预处理可用来实现快速颜色搜索。在数据存储区记录稀疏地分布于颜色搜索范围中的实施方案中,可在计算装置107上执行对拆分整数搜索范围的识别。在这种情形下,使用上文所述实例,颜色数据区101可使用更大范围3,595,112至10,785,359由计算装置107搜索。因为记录在颜色数据存储区101中稀疏地分布于此范围中,所以可返回有限数量的查询结果。因为期望返回有限数量的搜索结果,所以计算装置107可在向数据存储区发起每个拆分搜索范围的查询之后(而不是之前)可确定每个拆分搜索范围,并且分析每个单个查询结果以确定所述每个单个查询结果是否落在所确定的拆分搜索范围中的任一个内。这类型实施方案的优点之一在于它将处理从颜色数据存储区101(例如,每个更小拆分搜索范围的比较)移动至计算装置107,因此减少颜色数据区101上的总负荷。这类型的实现方式也可与由多个子数据存储区组成的颜色数据存储区101组合使用,因为在那种情形下,可控制每个子数据存储区的稀疏性来对最优策略作出后处理。
因此,在块504处,可通过确定可用如0或1的剩余位填写以确定拆分搜索范围的高阶位前缀来确定每个rgb颜色维度的二进制拆分范围。可通过计算颜色维度的最小值和最大值的一个或多个范围前缀,并且将这些范围前缀组合到给定维度的范围前缀列表中来确定二进制拆分范围。
例如,对于红色搜索范围,可通过确定最小值的最高阶位(其值为“1”作为最小值),并且然后将所述最小值作为下限与上限(其全部为先前的0)一起使用来识别一个前缀(基础前缀)。如果红色搜索范围是从00001010(最小红色值)至00010000(最大红色值),那么上述前缀可对应于最小值为0000101的位前缀。此前缀可被认为是对应于范围00001010至00001011(即,二进制拆分范围)(即,基于其中剩余位(已加下划线的)用所述范围的最小值0和所述范围的最大值1填写的前缀的范围)的范围。因此,可将前缀值0000101添加至红色前缀列表。
可基于所述最小值由计算装置107识别更多前缀。用于识别另外的前缀的一个准则包括检查基础前缀。从最低位开始,如果在具有0的基础前缀(例如,0000101)中存在任何另外的更高阶位,那么如果另外的前缀包括比等于0的最小值位的最高阶位更低的阶位并且此阶数的最大值位为1,那么可识别另外的前缀。这一类位被称为“发散”位,因为这正是最大值从最小值开始发散的位。然后最终可通过用“1”替换所识别的“0”来识别这种前缀。多于一个另外的前缀可存在于基础前缀内。
返回我们的实例,最小值具有这种匹配的零00001010,并且所述前缀包括000010,其包括比发散位更低阶数的位(所述发散位在此已加下划线,其中位串发散:最小值:00001010和最大值:00010000)。所识别的前缀包含比发散位更低阶数的位(例如,第五和第六最低阶位)。由于000010已经被识别,因而用来添加的实际前缀是000011(“…可然后通过用‘1’替换所识别的‘0’来包括所述前缀”)。因此,这将识别出另外的前缀为“000011”,并且将所述另外的前缀添加到红色前缀列表(其已经包含0000101)。
可由计算装置107通过分析颜色的最大位来确定另一组前缀。计算装置107可识别最大值的最低阶位(其值为0),并且作为前缀取用所识别的值0以及所有更高阶位。因此,00010000将作为前缀添加至增长的列表。
可被添加的另一组前缀是最大值的任何前缀,其中所述最大值在发散位之后的位为“1”。这些前缀可然后通过用“0”替换所识别的“1”而被包括在内。
在前述实例中,当最大红色值为00010000时,没有另外的前缀被识别,并且在发散位之后没有为“1”的位。然而,如果最大红色值实际上为00010100,那么第二个“1”将识别前缀000101,第二个“1”然后将用“0”替换(以形成前缀000100),并且前缀000100将被添加至红色前缀列表。
尽管所述实例在上文确定红色值的二进制拆分范围列表(前缀列表),但是可类似地确定蓝色维度和绿色维度或颜色空间的任何维度的二进制拆分范围列表。因此,可基于每个维度的将要搜索的范围的最大值和最小值来确定每种颜色维度,并且具体地红色维度、绿色维度和蓝色维度的二进制拆分范围/前缀列表。
返回图5,在块506处,前缀可由计算装置107置换和交织。可将每个此类置换转换成用于搜索的一个或多个24位整数范围(或其他n维交织位整数范围,这取决于多少个位组成一个维度,和多少个维度组成颜色模型)。
例如,使用rgb,可能存在三个前缀列表–一个是红色的、一个是绿色的和一个是蓝色的。红色列表中的每个前缀可用其他颜色的所有其他前缀置换,使得计算机确定具有来自红色列表的一个前缀、来自绿色列表的一个前缀和来自蓝色列表的一个前缀的所有可能的前缀组合。可将每种置换交织并且转换成一个或多个24位整数搜索范围。
图6示出由计算装置107交织和转换特定置换的实例。对于此示例性置换,红色前缀602已经选择(11001),绿色前缀604已经选择(100111)并且蓝色前缀606已经选择(100101)。然后可基于这些位的位序(如图3所述)来交织所述这些位。然而,许多位在前缀中并不存在。例如,红色前缀缺失最后三个位,并且蓝色前缀和绿色前缀缺失最后两个位。这产生不完整的交织的位结构。例如,交织位610基于这些前缀展示了具有缺失位(x)的交织串,并且因此展示出r2位缺失,并且r1、g1、b1、r0、g0和b0位也缺失。
存在两种类型的缺失位。第一类型可以是在24位整数中具有被定义的较低阶位。这可被称为“内部拆分位”。例如,如由“x”指示,交织位610中标号为r2的位缺失。然而,位g2和b2被定义(例如,被包括在选择的绿色前缀604和蓝色前缀606中)并且在24位串中处于较低阶数处(在此,此24位交织整数的“较低阶数”意思是当24位交织整数被认为是正常整数时,“出现在较低阶数之后”或处于较低阶数处)。
当第一类型的位被识别时,可将红色前缀、绿色前缀和蓝色前缀的置换拆分成两种完全相同的置换以进行进一步范围确定,其中第一置换612中“0”为所识别的位,并且第二置换614中“1”为所识别的位(如由交织的24位整数612和614中加下划线的位值指示)。然后可在仅具有一个位差异的前缀的这两种类似置换上执行对缺失位的进一步分析。不需要对原始置换(在此为置换610)进行进一步分析。这种类型的拆分可反复执行,直到在所产生的任一个置换中不存在更多的内部拆分位。
也可识别第二类型的缺失位。可通过确定所缺失的位不具有任何定义的低阶数的位来识别这种缺失。作为参考,这种缺失位可被称为“结尾范围位”。当这种类型的位被识别时并且经常在通过拆分成两个完全相同的置换(其仅具有一个位差异)来分解所有内部拆分位之后,那么可将置换转换成24位范围。这通过计算以下两个24位整数来完成:范围的下限,所述范围的下限通过选取置换并且将所有剩余结尾范围位设定成“0”而确定;和范围的上限,所述范围的上限通过选取置换并且将所有剩余结尾范围位设定成“1”而确定。
例如,交织的24位置换612、614具有剩余的结尾范围位,所述剩余的结尾范围位对应于r1、g1、b1、r0、g0和b0(换句话讲,交织的24位整数的最后6个位)。因为不存在比结尾范围位更低阶数的定义的位,所以这些位现可用来形成整数搜索范围。对于置换612,可通过将结尾范围位设定成0(如在置换616中所展示)来确定下限,其等于整数15,744,192。可通过将结尾范围位设定成1(如在置换618中所展示)来确定上限,其等于整数15,744,255。因此,一个计算的搜索范围632可以是交织颜色值的处于15,744,192与15,744,255之间的查询范围。
对于置换614,可通过将结尾范围位设定成0(如在置换622中所展示)来确定下限,其等于整数15,744,448。可通过将结尾范围位设定成1(如在置换620中所展示)来确定上限,其等于整数15,744,511。因此,一个计算的搜索范围634可以是交织颜色值的处于15,744,448与15,744,511之间的查询范围。可收集和存储所有前缀置换上的所有所识别的24位颜色搜索范围以待搜索。
返回图5,在如上文所述确定一个或多个置换的一维交织颜色搜索范围之后,可在块508处形成一个或多个颜色搜索查询。一个示例性实施方案可生成sql“where”子句以将多个24位整数颜色搜索范围在查询中串在一起(例如,sql“select”语句)。例如,子句诸如“select*from<表105>where(interleave_rgb_colorbetween15744448and15744511)或(interleave_rgb_colorbetween15744192and15744255)”,其中列出所有搜索范围的查询可以是一种基于上述实例的如此特制的查询。然而,如果存在对红色前缀、绿色前缀和蓝色前缀的进一步置换(其可能被组合以形成唯一搜索范围),那么查询将可能很长,所述红色前缀、绿色前缀和蓝色前缀的进一步置换中的每一种可取决于内部拆分位的数量而产生一个或多个搜索范围。所有所产生的范围可用来形成针对总范围覆盖的传统的多维颜色搜索查询的一个查询或多个查询。在其他实施方案中,适当格式化的网页服务查询可并入所确定的整数颜色范围以通过作为参数向搜索添加范围来进行搜索。
在生成搜索查询之后,在块510处,预处理例程可结束。如参考图4所述(例如,块406),现可传输或执行所述搜索。
取决于实施方案,本文所述的算法中的任一者的某些动作、事件或功能可在不同序列中执行,可进行增加、合并或全部一起省去(例如,对于算法的实践而言并不是所有的描述动作或事件都是必要的)。此外,在某些实施方案中,动作或事件可同时执行(例如,通过多线程处理、中断处理或多个处理器或处理器核心或者在其他平行架构上),而不是循序执行。
结合本文公开的实施方案所描述的各种示例性逻辑块、模块、单元和算法步骤可以实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,以上已经大体上在各种示例性元件、块、模块和步骤的功能性方面描述这些示例性元件、块、模块和步骤。这种功能性是实施为硬件还是软件取决于具体应用和强加于整个系统的设计约束。所描述的功能性可以针对每个具体应用以不同方式实现所描述的功能性,但是这种实现方式决定不应被解释为导致背离本公开的范围。
可以通过机器,诸如通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其他可编程逻辑装置、离散门或晶体管逻辑、离散硬件部件或被设计来执行本文所描述功能的上述各者的任何组合来实现或执行结合本文公开的实施方案所描述的各种示例性逻辑块和模块。通用处理器可以是微处理器,但在替代方案中,处理器可以是控制器、微控制器或状态机、所述各项的组合等。处理器还可被实现为计算装置的组合,例如,dsp和微处理器的组合、多个微处理器、与dsp核心结合的一个或多个微处理器或者任何其他此类配置。
结合本文公开的实施方案所描述的方法、过程或算法元素可直接体现于硬件中、体现于由处理器执行的软件模块中,或体现于这两者的组合中。软件模块可驻存于ram存储器、闪速存储器、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可拆卸盘、cd-rom或本领域中已知的任何其他形式的计算机可读存储介质中。存储介质可耦合到处理器,使得处理器可从存储介质读取信息,并将信息写到存储介质。在替代方案中,存储介质可与处理器集成一体。处理器和存储介质可驻存在asic中。asic可驻存在用户终端中。在替代方案中,处理器和存储介质可作为离散组件驻存在用户终端中。软件模块可包括计算机可执行指令,所述计算机可执行指令致使硬件处理器执行计算机可执行指令。计算机可执行指令可包括脚本计算机语言和/或编译计算机语言。计算机可执行指令可包括(例如但不限于)
除非另外特别说明,或者使用时在上下文中以其他方式所理解的,否则本文所用的条件语言,特别是诸如“能够”、“可以”、“可能”、“例如”等,一般意在表达如下意思:虽然其他实施方案不包括,但某些实施方案包括特定的特征、元件和/或状态。因此,此类条件性语言一般并非意在暗含如下意思:特征、元件和/或状态对于一个或多个实施方案而言无论如何都是必需的,或者,一个或多个实施方案无论有或没有作者输入或提示都必须包括用于决定在任何特定实施方案中是否包括或将要执行这些特征、元件和/或状态的逻辑。术语“包括”、“包含”、“具有”、“含有”等是同义的,并以开放的方式包含性地使用,而且不排除另外元件、特征、动作、操作等等。另外,术语“或者”以其包含性意义(并且不以其排除性意义)使用,从而使得当(例如)用来连接一列表元件时,术语“或者”意味着所述列表中元件的一个、一些或全部。
除非另外特别说明,否则诸如短语“x、y或z中的至少一个”的分离性语言在上下文中通常应理解为用于呈现项目、术语等可以是x、y或z或它们的任意组合(例如,x、y和/或z)。因此,此类分离性语言一般并非意在并且不应该暗示某些实施方案需要存在x中的至少一个、y中的至少一个或z中的至少一个。
除非另外明确说明,否则冠词诸如‘一个(a/an)’通常应被解释成包括一个或多个描述的项目。因此,短语诸如“装置被配置来”意图包括一个或多个所述装置。此类一个或多个所述装置也可共同地被配置来执行所述叙述。例如,“处理器被配置来执行叙述a、b和c”可包括被配置来执行叙述a的第一处理器与被配置来执行叙述b和c的第二处理器一起工作。
虽然以上具体实施方式已经在应用于各种实施方案时展示、描述并指出新颖特征,但是应理解,在所示出装置或算法的形式和细节上的各种省略、代替和改变可在不背离本公开的精神的情况下做出。如将认识到的,本文所述的某些实施方案可在不提供本文所阐述的所有特征和益处的形式内体现,因为一些特征可与其他特征分开使用或实践。处于权利要求书的等效意义和范围内的所有改变都应涵盖在权利要求书的范围中。
可鉴于以下条款对本公开的各种实施方案的实例进行描述:
1.一种系统,其包括:
存储器,所述存储器被配置来存储计算机可执行指令;以及
包括一个或多个硬件处理器的计算装置,所述计算装置与所述存储器通信并且被配置来执行所述计算机可执行指令以至少:
获得颜色的颜色搜索范围,所述颜色由n维颜色模型指定,对于所述n维颜色模型中的每个颜色维度,所述颜色搜索范围包括最小维度颜色值和最大维度颜色值;
对于所述颜色搜索范围的每个维度,至少部分地基于所述颜色搜索范围的对应颜色维度的所述最小维度颜色值和所述最大维度颜色值来计算一个或多个二进制拆分范围;
至少部分地基于每个维度的一个或多个二进制拆分范围的置换来生成一个或多个整数搜索范围,其中所述一个或多个整数搜索范围包括来自所述一个或多个二进制拆分范围的置换的交织位;
生成搜索查询,所述搜索查询包括作为搜索参数的所述一个或多个整数搜索范围;
至少部分地基于所述搜索查询来启动对处于所述一个或多个整数搜索范围内颜色的数据存储区的搜索,所述数据存储区包括与至少一个被索引的整数颜色值相关联的记录;并且
从所述数据存储区接收搜索结果,所述搜索结果包括与处于所述一个或多个整数搜索范围内的至少一个被索引的整数颜色值相关联的记录。
2.如权利要求1所述的系统,其中所述n维颜色模型是rgb颜色模型。
3.如权利要求2所述的系统,其中所述交织位包括对红色二进制拆分范围、绿色二进制拆分范围和蓝色二进制拆分范围进行置换。
4.如权利要求3所述的系统,其中所述交织位以如下各项的重复模式进行排列:来自所述红色二进制拆分范围的红色位、来自所述绿色二进制拆分范围的绿色位、以及来自所述蓝色二进制拆分范围的蓝色位,其中所述红色位、所述绿色位和所述蓝色位是来自相同阶数的位,所述重复模式从最高阶位到最低阶位排列。
5.如权利要求1所述的系统,其中所计算的一个或多个二进制拆分范围的至少一部分通过确定发散位来识别。
6.如权利要求1所述的系统,其中所述记录包括与处于所述一个或多个整数搜索范围内的一个或多个被索引的整数颜色值相关联的对象记录。
7.如权利要求6所述的系统,其中所述对象记录是项目记录。
8.如权利要求7所述的系统,其中所述计算装置是用户计算机。
9.如权利要求1所述的系统,其中至少部分地基于人类色差感知公式来确定所述最小维度颜色值或所述最大维度颜色值中的至少一个。
10.一种计算机实现的方法,其包括:
在配置有特定计算机可执行指令的硬件计算装置的控制下,
获得颜色的颜色搜索范围,所述颜色由n维颜色模型指定,对于所述n维颜色模型中的每个颜色维度,所述颜色搜索范围包括最小维度颜色值和最大维度颜色值;
计算一个或多个整数搜索范围,其中所述一个或多个整数搜索范围通过交织来自处于所述颜色搜索范围内的每个颜色维度的所述最小维度颜色值和所述最大维度颜色值的位来确定;
至少部分地基于搜索查询来启动对数据存储区的搜索,所述搜索查询包括作为搜索参数的所述一个或多个整数搜索范围,所述数据存储区包括与至少一个被索引的整数颜色值相关联的记录;以及
从所述数据存储区接收搜索结果,所述搜索结果包括与处于所述一个或多个整数搜索范围内的至少一个被索引的整数颜色值相关联的一个或多个记录。
11.如权利要求10所述的计算机实现的方法,其中所述n维颜色模型是rgb颜色模型。
12.如权利要求11所述的计算机实现的方法,其中交织位包括对红色二进制拆分范围、绿色二进制拆分范围和蓝色二进制拆分范围进行置换。
13.如权利要求12所述的计算机实现的方法,其中交织位包括以如下各项的重复模式进行排列:来自所述红色二进制拆分范围的红色位、来自所述绿色二进制拆分范围的绿色位、以及来自所述蓝色二进制拆分范围的蓝色位,其中所述红色位、所述绿色位和所述蓝色位是来自相同阶数的位,所述重复模式从最高阶位到最低阶位排列。
14.如权利要求10所述的计算机实现的方法,其中记录包括与处于所述一个或多个整数搜索范围内的一个或多个被索引的整数颜色值相关联的项目记录。
15.如权利要求10所述的计算机实现的方法,其中至少部分地基于人类色差感知公式来确定所述最小维度颜色值或所述最大维度颜色值中的至少一个。
16.一种存储计算机可执行指令的非暂时性计算机可读存储介质,所述计算机可执行指令在由处理器执行时执行包括以下各项的操作:
获得rgb颜色搜索范围,所述rgb颜色搜索范围包括最小红色值、最大红色值、最小绿色值、最大绿色值、最小蓝色值和最大蓝色值;
至少部分地基于所述最小红色值和所述最大红色值来计算一个或多个红色二进制拆分范围;
至少部分地基于所述最小绿色值和所述最大绿色值来计算一个或多个绿色二进制拆分范围;
至少部分地基于所述最小绿色值和所述最大绿色值来计算一个或多个蓝色二进制拆分范围;
至少部分地基于所述红色二进制拆分范围、所述绿色二进制拆分范围和所述蓝色二进制拆分范围的置换来生成一个或多个整数搜索范围,其中每个置换包括来自所述一个或多个红色二进制拆分范围中的一个红色二进制拆分范围的交织位、所述一个或多个绿色二进制拆分范围中的一个绿色二进制拆分范围的交织位和所述一个或多个蓝色二进制拆分范围中的一个蓝色二进制拆分范围的交织的位,
其中从最高维度阶数到最低维度阶数排列所述交织的位;以及
使用所述一个或多个整数搜索范围从数据存储区接收搜索结果,所述搜索结果包括与处于所述一个或多个整数搜索范围内的至少一个被索引的整数颜色值相关联的记录。
17.如权利要求16所述的非暂时性计算机可读存储介质,
其中通过确定所述最小红色值和所述最大红色值中的第一发散位来识别所述一个或多个红色二进制拆分范围的至少一部分;
其中通过确定所述最小绿色值和所述最大绿色值中的第二发散位来识别所述一个或多个绿色二进制拆分范围的至少一部分;并且
其中通过确定所述最小蓝色值和所述最大蓝色值中的第三发散位来识别所述一个或多个蓝色二进制拆分范围的至少一部分。
18.如权利要求16所述的非暂时性计算机可读存储介质,其中所述搜索结果包括与处于所述一个或多个整数搜索范围内的一个或多个被索引的整数颜色值相关联的对象记录。
19.如权利要求17所述的非暂时性计算机可读存储介质,其中所述对象记录是项目记录。
20.如权利要求18所述的非暂时性计算机可读存储介质,其中所述计算机可读存储介质对用户计算装置是可访问的。
21.如权利要求16所述的非暂时性计算机可读存储介质,其中至少部分地基于人类色差感知公式来确定所述最小红色值、所述最大红色值、所述最小绿色值、所述最大绿色值、所述最小蓝色值或所述最大蓝色值中的至少一个。
22.一种系统,其包括:
数据存储区,所述数据存储区被配置来存储一个或多个对象记录,每个对象记录与一种或多种rgb颜色相关联;以及
计算装置,所述计算装置包括一个或多个硬件处理器和存储计算机可执行指令的存储器,所述一个或多个硬件处理器被配置来执行所述计算机可执行指令以至少:
对于与所述数据存储区中的对象记录相关联的每种rgb颜色:
生成对应于一维颜色空间的整数颜色值,所述整数颜色值包括来自所述rgb颜色的红色维度值、绿色维度值和蓝色维度值的交织的位,所述交织的位从最高数量级到最低数量级进行排序;并且
当所述整数颜色值与所述rgb颜色相关联时,将所述整数颜色值存储在所述数据存储区中;并且
对所述数据存储区中的整数颜色值进行索引。
23.如权利要求22所述的系统,其中每个对象记录包括项目记录。