本申请要求2015年7月15日提交的题为“SYSTEMS AND METHODS FOR SCREENSHOTLINKING”的第62/192,873号美国临时专利申请的优先权和权益,出于所有目的,其全部内容通过引用被合并到本申请中。
具体实施方式
出于阅读下面各个实施方式的描述的目的,说明书各部分及其相应内容的以下描述会是有帮助的:
部分A描述可以对于实践本文所描述的实施方式有用的网络环境和计算环境。
部分B描述用于将屏幕截图链接到其他内容的系统和方法的实施方式。
部分C描述用于确定与屏幕截图相关联的应用的系统和方法的实施方式。
部分D描述用于分析屏幕截图内包括的图像的系统和方法的实施方式。
部分E描述用于向用户提供产品推荐的系统和方法的实施方式。
A.计算环境和网络环境
在讨论本解决方案的具体实施方式之前,结合本文所描述的方法和系统来描述操作环境的各个方面以及相关联的系统部件(例如,硬件元件)会是有帮助的。参照图1A,描绘了网络环境的实施方式。简言之,网络环境包括经由一个或更多个网络104与一个或更多个服务器106a至106n(通常也称为服务器106、节点106或远程机器106)通信的一个或更多个客户端102a至102n(通常也称为本地机102、客户端102、客户端节点102、客户机102、客户端计算机102、客户端设备102、端点102或端点节点102)。在一些实施方式中,客户端102既具有用作寻求访问由服务器提供的资源的客户端节点的能力,又具有用作为其他客户端102a至102n提供访问托管资源的服务器的能力。
虽然图1A示出了客户端102和服务器106之间的网络104,但是客户端102和服务器106可以在同一网络104上。在一些实施方式中,在客户端102和服务器106之间存在多个网络104。在这些实施方式中的一个实施方式中,网络104’(未示出)可以是私有网络,而网络104可以是公共网络。在这些实施方式中的另一个实施方式中,网络104可以是私有网络,而网络104’可以是公共网络。在这些实施方式的又一个实施方式中,网络104和104’两者均可以是私有网络。
可以经由有线或无线链接连接网络104。有线链接可以包括数字用户线路(DSL)、同轴电缆线路或光纤线路。无线链接可以包括蓝牙、Wi-Fi,全球微波接入互操作性(WiMAX)、红外信道或卫星频带。无线链接还可以包括用于在移动设备之间进行通信的任何蜂窝网络标准,包括被认定为1G、2G、3G或4G的标准。网络标准可以通过满足诸如由国际电信联盟维护的规范之类的规范或标准而被认定为一代或更多代移动通信标准。例如,3G标准可以对应于国际移动电信-2000(IMT-2000)规范,以及4G标准可以对应于高级国际移动电信(IMT-Advanced)规范。蜂窝网络标准的示例包括AMPS、GSM、GPRS、UMTS、LTE、高级LTE、移动WiMAX和高级WiMAX。蜂窝网络标准可以使用各种信道接入方法,例如FDMA、TDMA、CDMA或SDMA。在一些实施方式中,不同类型的数据可以经由不同的链接和标准来传输。在其他实施方式中,相同类型的数据可以经由不同的链接和标准来传输。
网络104可以是任意类型和/或形式的网络。网络104的地理范围可以宽泛地变化,并且网络104可以是体域网(BAN)、个人区域网(PAN)、例如内联网的局域网(LAN)、城域网(MAN)、广域网(WAN)或因特网。网络104的拓扑结构可以是任何形式,并且可以包括例如以下中的任一种:点对点、总线、星形、环形、网格或树形。网络104可以是虚拟的并且位于一层或更多层的其他网络104’之上的覆盖网络。网络104可以具有本领域普通技术人员已知的能够支持本文所描述的操作的任何这样的网络拓扑结构。网络104可以利用不同的技术以及协议层或协议栈,包括例如以太网协议、因特网协议组(TCP/IP)、ATM(异步传输模式)技术、SONET(同步光网络)协议、或SDH(同步数字体系)协议。TCP/IP因特网协议组可以包括应用层、传输层、因特网层(包括例如IPv6)或链路层。网络104可以是广播网络、电信网络、数据通信网络或计算机网络的一种类型。
在一些实施方式中,该系统可以包括多个逻辑上分组的服务器106。在这些实施方式中的一个实施方式中,逻辑分组的服务器可以被称为服务器群38或机器群38。在这些实施方式中的另一个实施方式中,服务器106可以在地理上分散。在其他实施方式中,机器群38可以作为单个实体来管理。在其他实施方式中,机器群38包括多个机器群38。每个机器群38内的服务器106可以是异构的—一个或更多个服务器106或机器106可以根据一种类型的操作系统平台(例如,由华盛顿州雷蒙德市的微软公司制造的WINDOWS NT)进行操作,而一个或更多个其他服务器106可以根据另一类型的操作系统平台(例如,Unix、Linux或Mac OSX)进行操作。
在一个实施方式中,机器群38中的服务器106可以连同相关联的存储系统被存储在高密度机架系统中,并且位于企业数据中心中。在该实施方式中,以这种方式整合服务器106可以通过在本地化高性能网络上定位服务器106和高性能存储系统来提高系统可管理性、数据安全性、系统的物理安全性和系统性能。集中服务器106和存储系统并将它们与高级系统管理工具耦接使得能够更有效地使用服务器资源。
每个机器群38的服务器106不需要在物理上接近同一机器群38中的另一服务器106。因此,在逻辑上被分组为机器群38的服务器106的组可以使用广域网(WAN)连接或城域网(MAN)连接来互连。例如,机器群38可以包括物理上位于不同大陆或不同地区的大陆、国家、州、城市、校园或房间的服务器106。如果服务器106使用局域网(LAN)连接或某种形式的直接连接进行连接,则机器群38中的服务器106之间的数据传输速度会增加。另外,异构机器群38可以包括根据操作系统的类型操作的一个或更多个服务器106,而一个或更多个其他服务器106执行一种或更多种类型的管理程序而不是操作系统。在这些实施方式中,管理程序可以用于模拟虚拟硬件,划分物理硬件,使物理硬件虚拟化,以及执行提供对计算环境的访问的虚拟机,允许多个操作系统在主计算机上同时运行。本地管理程序可以直接在主计算机上运行。管理程序可以包括由加利福尼亚州帕洛阿尔托的威睿(VMWare)公司制造的VMware ESX/ESXi;Xen管理程序,一种开源产品,其开发由思杰系统公司(Citrix Systems,Inc.)监督;由微软或其他公司提供的HYPER-V管理程序。托管的管理程序可以以第二软件等级在操作系统中运行。托管的管理程序的示例可以包括威睿工作站VMware Workstation和VIRTU ALBOX。
机器群38的管理可以是分散的。例如,一个或更多个服务器106可以包括用于支持用于机器群38的一个或更多个管理服务的部件、子系统和模块。在这些实施方式中的一个实施方式中,一个或更多个服务器106提供用于动态数据的管理的功能,包括用于处理故障转移、数据复制以及增加机器群38的鲁棒性的技术。每个服务器106可以与持久存储器通信,并且在一些实施方式中与动态存储器通信。
服务器106可以是文件服务器、应用服务器、web服务器、代理服务器、设备、网络设备、网关、网关服务器、虚拟化服务器、部署服务器、SSL VPN服务器或防火墙。在一个实施方式中,服务器106可以被称为远程机器或节点。在另一个实施方式中,多个节点290可以位于任何两个通信服务器之间的路径中。
参照图1B,描绘了云计算环境。云计算环境可以向客户端102提供由网络环境提供的一个或更多个资源。云计算环境可以包括通过一个或更多个网络104与云108通信的一个或更多个客户端102a至102n。客户端102可以包括例如胖客户端、瘦客户端和零客户端。即使当与云108或服务器106断开时,胖客户端也可以提供至少一些功能。瘦客户端或零客户端可以依赖于与云108或服务器106的连接来提供功能。零客户端可以依赖于云108或其他网络104或服务器106为客户端设备检索操作系统数据。云108可以包括后端平台,例如服务器106、存储装置、服务器群或数据中心。
云108可以是公共的、私有的或混合的。公共云可以包括由第三方或为客户端102或客户端的所有者维护的公共服务器106。如上所述或者以其他方式,服务器106可以位于远程地理位置的异地。公共云可以通过公共网络连接至服务器106。私有云可以包括由客户端102或客户端的所有者物理上维护的私有服务器106。私有云可以通过私有网络104连接至服务器106。混合云108可以包括私有的和公共的网络104和服务器106两者。
云108还可以包括基于云的交付,例如,软件即服务(SaaS)110、平台即服务(PaaS)112和基础设施即服务(IaaS)114。IaaS可以指代用户租用在指定时间段期间所需的基础设施资源的使用。IaaS提供商可以从大型池(large pools)提供存储、联网、服务器或虚拟化资源,使得用户能够根据需要通过访问更多资源来快速扩大规模。IaaS的示例可以包括由加拿大魁北克省蒙特利尔的OVH HOSTING提供的基础架构和服务(例如,EG-32)、由华盛顿州西雅图市的亚马逊公司(Amazon.com)提供的亚马逊网络服务、由美国德克萨斯州圣安东尼奥市的Rackspace公司提供的RACKSPACE CLOUD、由加利福尼亚州山景城的谷歌公司提供的Google谷歌计算引擎或由加利福尼亚州圣巴巴拉市的RightScale公司提供的RIGHTSCALE。PaaS提供商可以提供由IaaS提供的功能,包括例如存储、联网、服务器或虚拟化,以及诸如例如操作系统、中间件或运行时资源的附加资源。PaaS的示例包括由华盛顿州雷蒙德市的微软公司提供的WINDOWS AZURE、由谷歌公司提供的谷歌应用引擎以及由加利福尼亚旧金山的Heroku公司提供的HEROKU。SaaS提供商可以提供PaaS提供的资源,包括存储、联网、服务器、虚拟化、操作系统、中间件或运行时资源。在一些实施方式中,SaaS提供商可以提供包括例如数据和应用资源的附加资源。SaaS的示例包括由谷歌公司提供的谷歌应用(GOOGLE APPS)、由加利福尼亚州旧金山市的软件营销部队(Salesforce.com)公司提供的SALESFORCE,或者由微软公司提供的OFFICE 365。SaaS的示例还可以包括数据存储提供商,例如,由加利福尼亚州旧金山市的Dropbox公司提供的DROPBOX、由微软公司提供的微软SKYDRIVE、由谷歌公司提供的谷歌驱动器或由加利福尼亚州库比蒂诺市的苹果公司提供的苹果ICLOUD。
客户端102可以利用一个或更多个IaaS标准包括例如亚马逊弹性计算云(EC2)、开放云计算接口(OCCI)、云基础设施管理接口(CIMI)或OpenStack标准来访问IaaS资源。某些IaaS标准可以允许客户端通过HTTP访问资源,并可以使用表述性状态传递(REST)协议或简单对象访问协议(SOAP)。客户端102可以用不同的PaaS接口访问PaaS资源。针对不同的编程语言包括例如用于Ruby的Rack、用于Python的WSGI或用于Perl的PSGI、或者可以构建在REST、HTTP、XML或其他协议上的其他API,一些PaaS接口使用HTTP包、标准Java API、JavaMail API、Java数据对象(JDO)、Java持久性API(JPA)、Python API、Web集成API。客户端102可以通过使用由web浏览器(例如,谷歌浏览器、微软因特网浏览器或由加利福尼亚州山景城的Mozilla基金会提供的Mozilla Firefox)提供的基于web的用户界面来访问SaaS资源。客户端102还可以通过智能电话或平板电脑应用包括例如Salesforce销售云或谷歌云端硬盘(Google Drive)来访问SaaS资源。客户端102还可以通过客户端操作系统包括例如用于DROPBOX的Windows文件系统来访问SaaS资源。
在一些实施方式中,可以认证对IaaS、PaaS或SaaS资源的访问。例如,服务器或认证服务器可以经由安全证书、HTTPS或API密钥来认证用户。API密钥可以包括各种加密标准,诸如例如高级加密标准(AES)。数据资源可以通过传输层安全(TLS)或安全套接字层(SSL)被发送。
客户端102和服务器106可以被部署为以下设备和/或在以下设备上执行:任意类型和形式的计算设备,例如计算机、网络设备或者能够在任意类型和形式的网络上进行通信并且执行本文所描述的操作的设备。图1C和图1D描绘了用于实践客户端102或服务器106的实施方式的计算设备100的框图。如图1C和图1D所示,每个计算设备100包括中央处理单元121和主存储器单元122。如图1C所示,计算设备100可以包括例如存储设备128、安装设备116、网络接口118、I/O控制器123、显示设备124a至124n、键盘126以及例如鼠标的定点设备127。存储设备128可以包括但不限于操作系统、软件和屏幕截图链接系统120的软件。如图1D所示,每个计算设备100还可以包括另外的可选元件,例如,存储器端口103、桥接器170、一个或更多个输入/输出设备130a至130n(通常用附图标记130表示)以及与中央处理单元121通信的高速缓存存储器140。
中央处理单元121是响应并处理从主存储器单元122取出的指令的任意逻辑电路。在很多实施方式中,中央处理单元121由微处理器单元提供,例如:由加利福尼亚州山景城的英特尔公司制造的微处理器单元;由伊利诺斯州绍姆堡的摩托罗拉公司制造的微处理器单元;由加利福尼亚州圣克拉拉市的英伟达(Nvidia)制造的ARM处理器和TEGRA片上系统(SoC);由纽约州白原市的国际商业机器公司制造的POWER7处理器;或者由加利福尼亚州桑尼维尔市的超微设备公司制造的微处理器单元。计算设备100可以基于这些处理器中的任何一个、或者能够如本文所描述的进行操作的任何其他处理器。中央处理单元121可以利用指令级并行性、线程级并行性、不同级别的高速缓存以及多核处理器。多核处理器可以包括在单个计算部件上的两个或更多个处理单元。多核处理器的示例包括AMD PHENOM IIX2、INTEL CORE i5和INTEL CORE i7。
主存储器器单元122可以包括能够存储数据并且允许微处理器121直接访问任意存储位置的一个或更多个存储器芯片。主存储器单元122可以是易失性的并且比存储装置128更快的存储器。主存储器单元122可以是动态随机存取存储器(DRAM)或任何变型,包括静态随机存取存储器(SRAM)、突发SRAM或同步突发SRAM(BSRAM)、快速页面模式DRAM(FPMDRAM)、增强型DRAM(EDRAM)、扩展数据输出DRAM(EDO DRAM)、突发扩展数据输出DRAM(BEDODRAM)、单倍数据速率同步DRAM(SDR SDRAM)、双倍数据速率SDRAM(DDR SDRAM)、直接总线结构DRAM(DRDRAM)或极限数据速率DRAM(XDR DRAM)。在一些实现中,主存储器122或存储装置128可以是非易失性的;例如非易失性读取存取存储器(NVRAM)、闪存非易失性静态RAM(nvSRAM)、铁电RAM(FeRAM)、磁阻RAM(MRAM)、相变存储器(PRAM)、导电桥接RAM(CBRAM)、硅氧化氮氧化硅(SONOS)、电阻式RAM(RRAM)、赛道(Racetrack)、纳米RAM(NRAM)或Millipede存储器。主存储器122可以基于任何上述存储器芯片或者能够如本文所述进行操作的任何其他可用的存储器芯片。在图1C所示的实施方式中,处理器121经由系统总线150(下面更详细地描述)与主存储器122通信。图1D描绘了处理器经由存储器端口103直接与主存储器122通信的计算设备100的实施方式。例如,在图1D中,主存储器122可以是DRDRAM。
图1D描绘了主处理器121经由次总线(有时被称为后端总线)直接与高速缓存存储器140通信的实施方式。在其他实施方式中,主处理器121使用系统总线150与高速缓存存储器140通信。高速缓存存储器140通常具有比主存储器122更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图1D所示的实施方式中,处理器121经由本地系统总线150与各种I/O设备130通信。各种总线可以用于将中央处理单元121连接到任何I/O设备130,包括PCI总线、PCI-X总线或PCI-Express总线或NuBus。对于I/O设备为视频显示器124的实施方式,处理器121可以使用高级图形端口(AGP)与显示器124或用于显示器124的I/O控制器123进行通信。图1D描绘了计算机100的实施方式,其中主处理器121经由HYPERTRANSPORT、RAPIDIO或INFINIBAND通信技术直接与I/O设备130b或其他处理器12通信。图1D还描绘了混合本地总线和直接通信的实施方式:尽管直接与I/O设备130b通信,处理器121还使用本地互连总线与I/O设备130a通信。
在计算设备100中可以存在多种多样的I/O设备130a至130n。输入设备可以包括键盘、鼠标、触控板、轨迹球、触摸板、触摸鼠标、多点触摸触摸板和触摸鼠标、麦克风、多阵列麦克风、绘图板、相机、单反相机(SLR)、数码单反相机(DSLR)、CMOS传感器、加速度计、红外光学传感器、压力传感器、磁力计传感器、角速度传感器、深度传感器、接近传感器、环境光传感器、陀螺仪传感器或其他传感器。输出设备可以包括视频显示器、图形显示器、扬声器、耳机、喷墨打印机、激光打印机和3D打印机。
设备130a至130n可以包括多个输入或输出设备的组合,包括例如微软KINECT、用于WII的任天堂Wiimote、任天堂WII U GAMEPAD或苹果IPHONE。通过组合一些输入和输出,一些设备130a至130n允许手势识别输入。一些设备130a至130n用于面部识别,其可以用作包括认证和其他命令的不同目的输入。一些设备130a至130n用于语音识别和输入,包括例如微软KINECT、苹果的IPHONE的SIRI、谷歌Now或谷歌语音搜索。
附加设备130a至130n具有输入和输出能力两者,包括例如触觉反馈设备、触摸屏显示器或多点触摸显示器。触摸屏、多点触摸显示器、触摸板、触摸鼠标或其他触摸感测设备可以使用不同的技术来感测触摸,包括例如电容式、表面电容式、投射电容式触摸(PCT)、内嵌式电容式、电阻式、红外线、波导、色散信号触摸(DST)、内嵌光学、表面声波(SAW)、弯曲波触摸(BWT)或基于力的传感技术。一些多点触摸设备可以允许相对于表面的两个或更多个接触点,从而允许包括例如捏、展开、旋转、滚动或其他手势的高级功能。包括例如微软PIXELSENSE或多点触控协作墙(Multi-Touch Collaboration Wall)的一些触摸屏设备可以具有较大的表面,例如在桌面或墙上,以及也可以与其他电子设备交互。一些I/O设备130a至130n、显示设备124a至124n或设备组可以是增强现实设备。如图1C所示,I/O设备可以由I/O控制器123控制。I/O控制器可以控制一个或更多个I/O设备,诸如例如键盘126和定点设备127,例如鼠标或光笔。此外,I/O设备还可以为计算设备100提供存储和/或安装介质116。在又一些其他实施方式中,计算设备100可以提供USB连接(未示出)以接纳手持式USB存储设备。在另外的实施方式中,I/O设备130可以是系统总线150和外部通信总线之间的桥接器,例如USB总线、SCSI总线、FireWire总线、以太网总线、千兆比特以太网总线、光纤通道总线或Thunderbolt总线。
在一些实施方式中,显示设备124a至124n可以连接至I/O控制器123。显示设备可以包括例如液晶显示器(LCD)、薄膜晶体管LCD(TFT-LCD)、蓝相LCD、电子纸(电子墨水)显示器、柔性显示器、发光二极管显示器(LED)、数字光处理(DLP)显示器、硅基液晶(LCOS)显示器、有机发光二极管(OLED)显示器、有源矩阵有机发光二极管(AMOLED)显示器、液晶激光显示器、时分复用光学快门(TMOS)显示器或3D显示器。3D显示器的示例可以使用例如立体显微镜、偏振滤光片、有源快门或自动立体镜。显示设备124a至124n也可以是头戴式显示器(HMD)。在一些实施方式中,显示设备124a至124n或对应的I/O控制器123可以通过以下硬件被控制或者具有以下硬件:支持OPENGL或DIRECTX API或其他图形库的硬件。
在一些实施方式中,计算设备100可以包括或连接至多个显示设备124a至124n,其中每个显示设备可以具有相同或不同的类型和/或形式。因而,I/O设备130a至130n和/或I/O控制器123中的任意一个可以包括任意类型和/或形式的合适的硬件、软件或者硬件和软件的组合以由计算设备100支持、启用或用于多个显示设备124a至124n的连接和使用。例如,计算设备100可以包括任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以接合、通信、连接或以其他方式使用显示设备124a至124n。在一个实施方式中,视频适配器可以包括多个连接器以接合至多个显示设备124a至124n。在其他实施方式中,计算设备100可以包括多个视频适配器,每个视频适配器被连接至一个或更多个显示设备124a至124n。在一些实施方式中,计算设备100的操作系统的任何部分可以被配置成使用多个显示器124a至124n。在其他实施方式中,显示设备124a至124n中的一个或更多个可以由经由网络104连接至计算设备100的一个或更多个其他计算设备100a或100b提供。在一些实施方式中,软件可以被设计和构造成使用另一计算机的显示设备作为用于计算设备100的第二显示设备124a。例如,在一个实施方式中,苹果iPad可以连接至计算设备100并且使用设备100的显示器作为可以用作扩展桌面的附加显示屏。本领域普通技术人员将认识和理解计算设备100可以被配置成具有多个显示设备124a至124n的各种方式和实施方式。
再次参照图1C,计算设备100可以包括存储设备128(例如,一个或更多个硬盘驱动器或独立磁盘的冗余阵列),存储设备128用于存储操作系统或其他相关软件,并且存储设备128还用于存储应用软件程序,例如与用于屏幕截图链接系统120的软件相关的任何程序。存储设备128的示例包括例如硬盘驱动器(HDD);包括CD驱动器、DVD驱动器或BLU-RAY驱动器的光驱;固态硬盘(SSD);USB闪存驱动器;或适合于存储数据的任何其他设备。一些存储设备可以包括多个易失性和非易失性存储器,包括例如将硬盘与固态高速缓存组合的固态混合驱动器。一些存储设备128可以是非易失性的、可变的或只读的。一些存储设备128可以在内部并且经由总线150连接至计算设备100。一些存储设备128可以在外部并且经由提供外部总线的I/O设备130连接至计算设备100。一些存储设备128可以通过网络104经由网络接口118连接至计算设备100,包括例如由苹果公司提供的MACBOOK AIR的远程磁盘。一些客户端设备100可以不需要非易失性存储设备128,并且可以是瘦客户端或零客户端102。一些存储设备128也可以用作安装设备116,并且可以适合于安装软件和程序。另外,操作系统和软件可以从可启动媒体运行,例如可启动CD,例如KNOPPIX,用于GNU/Linux的一种可启动CD,其可以以来自knoppix.net的GNU/Linux发行版的方式式获得。
客户端设备100还可以从应用分发平台安装软件或应用。应用分发平台的示例包括由苹果公司提供的用于iOS的应用商店(App Store)、由苹果公司提供的Mac应用商店、由谷歌公司提供的用于安卓操作系统的谷歌市场(GOOGLE PLAY)、由谷歌公司提供的用于浏览器操作系统(CHROME OS)的Chrome Webstore以及由亚马逊公司提供的用于安卓操作系统和KINDLE FIRE的Amazon Appstore。应用分发平台可以便于在客户端设备102上安装软件。应用分发平台可以包括服务器106或云108上的应用的仓库,客户端102a至102n可以通过网络104进行访问。应用分发平台可以包括由各种开发者开发和提供的应用。客户端设备102的用户可以通过应用分发平台来选择、购买和/或下载应用。
此外,计算设备100可以包括网络接口118以通过各种连接与网络104对接,其中各种连接包括但不限于标准电话线路LAN或WAN链接(例如,802.11、T1、T3、千兆比特以太网、无限带宽)、宽带连接(例如,ISDN、帧中继、ATM、千兆比特以太网、SONET上的以太网、ADSL、VDSL、BPON、GPON、包括FiOS的光纤)、无线连接或者上述中的任意或全部的某种组合。可以使用各种通信协议(例如,TCP/IP、以太网、ARCNET、SONET、SDH、光纤分布式数据接口(FDDI)、IEEE802.11a/b/g/n/ac CDMA、GSM、WiMax和直接异步连接)。在一个实施方式中,计算设备100经由任意类型和/或形式的网关或隧道协议例如安全套接字层(SSL)或传输层安全性(TLS)或由佛罗里达州劳德代尔堡思杰系统公司制造的思杰(Citrix)网关协议与其他计算设备100’进行通信。。网络接口118可以包括内置网络适配器、网络接口卡、PCMCIA网卡、EXPRESSCARD)网卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算设备100对接到能够通信并执行本文所描述的操作的任意类型的网络的任何其他设备。
在图1B和图1C中描绘的那种计算设备可以在操作系统的控制下操作,操作系统控制任务的调度和对系统资源的访问。计算设备100可以运行任何操作系统,诸如微软WINDOWS操作系统的任何版本、Unix和Linux操作系统的不同版本、用于麦金塔(Macintosh)电脑的任何版本的MAC OS、任何嵌入式操作系统、任何实时操作系统、任何开源操作系统、任何专有操作系统、用于移动计算设备的任何操作系统、或能够在计算设备上运行并且执行本文所描述的操作的任何其他操作系统。典型的操作系统包括但不限于:WINDOWS 2000、WINDOWS服务器2022、WINDOWS CE、WINDOWS电话、WINDOWS XP、WINDOWS VISTA和WINDOWS7、WINDOWS RT和WINDOWS 8,所有这些都是由华盛顿州雷德蒙市的微软公司制造;由加利福尼亚州库比蒂诺的苹果公司制造的MAC OS和iOS;以及由英国伦敦的Canonical有限公司发行的免费提供的操作系统Linux,例如Linux Mint发行版(“distro”)或Ubuntu;或Unix或其他类Unix衍生操作系统;以及由加利福尼亚州山景城市的谷歌设计的Android。一些操作系统包括例如谷歌的CHROME OS可以用在零客户端或瘦客户端上使用,包括例如CHROMEBOOKS。
计算机系统100可以是任何工作站、电话、台式计算机、膝上型或笔记本计算机、上网本、ULTRABOOK、平板电脑、服务器、手持式计算机、移动电话、智能手机或其他便携式电信设备、媒体播放设备、游戏系统、移动计算设备或任何其他类型和/或形式的能够通信的计算、电信或媒体设备。计算机系统100具有足够的处理器能力和存储器容量来执行本文所描述的操作。在一些实施方式中,计算设备100可以具有不同的处理器、操作系统和与该设备一致的输入设备。三星GALAXY智能手机例如在由谷歌公司开发的Android操作系统的控制下操作GALAXY智能手机经由触摸界面接收输入。
在一些实施方式中,计算设备100为游戏系统。例如,计算机系统100可以包括由日本东京的索尼公司制造的游戏机3、或者个人游戏机便携式(PSP)、或者由日本东京的索尼公司制造的PLAYSTATION VITA设备、NINTENDO DS、NINTENDO 3DS、NINTENDO WII、或者由日本京都的任天堂公司(Nintendo Co.,Ltd。)制造的NINTENDO WII U设备、由华盛顿州雷蒙德市的微软公司制造的XBOX360设备。
在一些实施方式中,计算设备100为数字音频播放器,例如由加利福尼亚州库比蒂诺市的苹果电脑公司制造的苹果IPOD、IPOD Touch和IPOD NANO系列设备。一些数字音频播放器可以具有其他功能,包括例如游戏系统或由来自数字应用分发平台的应用提供的任何功能。例如,IPOD Touch可以访问苹果应用商店(Apple App Store)。在一些实施方式中,计算设备100是支持文件格式的便携式媒体播放器或数字音频播放器,文件格式包括但不限于MP3、WAV、M4A/AAC、WMA保护的AAC、AIFF、听得见的有声读物、苹果无损音频文件格式以及.mov、.m4v和.mp4MPEG-4(H.264/MPEG-4AVC)视频文件格式。
在一些实施方式中,计算设备100为平板电脑,例如,苹果的IPAD系列设备;三星的GALAXY TAB系列设备;或由华盛顿州西雅图市的亚马逊公司提供的KINDLE FIRE。在其他实施方式中,计算设备100为电子书阅读器,例如亚马逊公司的KINDLE系列设备、或纽约州纽约市的邦诺(Barnes&Noble)公司的NOOK系列设备。
在一些实施方式中,通信设备102包括设备的组合,例如,与数字音频播放器或便携式媒体播放器相结合的智能手机。例如,这些实施方式中的一个实施方式为智能电话,例如,由苹果公司制造的IPHONE系列智能手机;由三星公司制造的三星GALAXY系列智能手机;或摩托罗拉DROID系列智能手机。在又一个实施方式中,通信设备102为配备有web浏览器以及例如电话耳机的麦克风和扬声器系统的膝上型或台式计算机。在这些实施方式中,通信设备102是能上网的并且可以接收和发起电话呼叫。在一些实施方式中,膝上型或台式计算机还配备有能够进行视频聊天和视频通话的网络摄像头或其他视频捕获设备。
在一些实施方式中,监视网络104中的一个或更多个机器102、106的状态,通常作为网络管理的一部分。在这些实施方式中的一个实施方式中,机器的状态可以包括负载信息(例如,机器上的进程的数量、CPU和存储器利用率)、端口信息(例如,可用通信端口的数量和端口地址)、或会话状态(例如,进程的持续时间和类型、以及进程是活动的还是空闲的)的识别。在这些实施方式中的另一个实施方式中,该信息可以由多个度量来识别,并且多个度量可以至少部分地应用于负载分配、网络流量管理和网络故障恢复中的决策以及本文所描述的本解决方案的操作的任何方面。在本文所公开的系统和方法的背景下,上面所描述的操作环境和部件的各方面将变得显见。
B.将屏幕截图链接到其他内容
本解决方案的系统和方法涉及将屏幕截图链接到其他资源。消费品公司通常会制作经由互联网发布的内容。例如,一家公司可以有其自己的网站,包括专用于其产品或与该公司相关联的牌的网页。在某些情况下,公司可以通过第三方网页例如社交媒体网站来推销其自己的品牌和产品。例如,很多公司在例如Facebook、Instagram、Pinterest和Twitter的网站上都有一个或更多个帐户。用户可以通过访问公司的网页或第三方网页来查看由公司发布的内容,其中公司在第三方网页上发布内容。在一些情况下,用户还可以使用客户端设备上的专用应用例如与公司发布内容的社交媒体网站相关联的应用来查看由公司发布的内容。
用户可以将他们在互联网上感兴趣的内容的图像保存到他们的设备。用户可以通过在客户端设备显示所选内容时捕获客户端设备的显示器的屏幕截图来实现这一点。通常,屏幕截图是指表示客户端设备的显示器的一部分或整个图形用户界面的图像。因此,当客户端设备正用于(例如,在web浏览器或第三方应用中)显示由公司发布的内容时所捕获的屏幕截图将包括用户希望保存的相关内容,而且还可以包括客户端设备的图形用户界面的其他元素。屏幕截图通常在客户端设备上被保存为图像文件。在一些客户端设备中,屏幕截图被保存在客户端设备的图像文件夹中。无论屏幕截图被捕获时显示在客户端设备上的内容或应用如何,图像文件夹都能够存储由客户端设备捕获的屏幕截图。以这种方式,图像文件夹可以存储由客户端设备的多个不同应用显示的内容的屏幕截图。
由于屏幕截图通常主要包括图像数据,所以当用户仅仅访问屏幕截图本身时,用户可能难以访问与屏幕截图中所描绘的内容相关的内容。例如,虽然屏幕截图可以提供用户想要购买的产品的图像,但是与屏幕截图本身相关联的图像文件不提供用户可以与其交互以购买屏幕截图中所示的产品的任何界面。本公开内容提供了用于将屏幕截图链接到其他相关资源和/或内容例如购物界面的技术。
本公开内容的一个方面可以在用于提供与屏幕截图相关联的网上商店的方法或系统中实现。包括一个或更多个处理器的屏幕截图链接系统可以从存储在设备上的图像例如移动设备上存储照片和屏幕截图两者的照片滚轴中识别屏幕截图。屏幕截图链接系统可以识别屏幕截图内包括的图像。屏幕截图链接系统可以将所识别的图像与由屏幕截图链接系统保持的多个参考图像中的一个参考图像进行匹配。每个参考图像可以与到内容的链接相关联。在一些实现中,链接可以是到移动应用上的内容或网页上的内容的链接。在一些实现中,参考图像所链接到的内容可以包括参考图像。响应于屏幕截图链接系统将该图像与参考图像进行匹配,则屏幕截图链接系统可以识别与该图像相关联的链接。在一些实现中,屏幕截图链接系统可以生成通知并向与该屏幕截图相关联的设备提供该通知。该通知可以包括到与在屏幕截图中识别出的图像对应的内容的链接。在一些实现中,如果屏幕截图中的图像是产品的图像,则通知中提供的链接可以是到移动应用或web服务器的页面的链接,设备的用户可以通过该链接购买产品或以其他方式接收与产品有关的附加信息。在一些实现中,响应于用户经由该链接访问页面,屏幕截图链接系统可以从设备接收购买产品的请求并执行该请求以购买产品。在一些实现中,可以确定图像文件与屏幕截图对应,并且可以对屏幕截图进行分析以识别与屏幕截图相关联的至少一个应用。
现在参照图2A,示出了描绘用于将屏幕截图链接到其他资源或内容的系统201的实施方式的框图。简言之,系统201可以包括诸如客户端102的客户端设备和诸如服务器106的服务器。客户端设备可以包括多个应用204a至204n、图像数据库210和屏幕截图链接应用215。服务器可以包括屏幕截图链接系统203,其具有用户账户管理器224、发布者账户管理器226、链接生成器227、购物界面生成器229、通知生成器230、内容推荐提供器231和数据库232。
客户端102可以是任意类型的计算设备,用户可以与该计算设备直接交互。例如,在一些实现中,客户端102可以是台式计算机、膝上型计算机、平板计算设备、智能电话或虚拟现实计算设备。应用204可以安装在客户端102上以使得用户能够访问各种形式的内容。例如,应用204中的一个或更多个应用可以对应于被配置成显示网页的web浏览器。其他应用204可以对应于社交媒体应用,例如Facebook、Instagram、Pinterest和Twitter。另外其他应用204可以是由消费品公司提供的应用,其使得客户端102的用户能够查看与通过开发应用204的公司得到的产品有关的信息。应用204还可以对应于各种其他实用程序(utility)例如日历、时钟、文字处理应用、地图应用、新闻提供者、消息应用、电子邮件应用等。与应用204中的每个应用对应的计算机指令可以被存储在与客户端102相关联的存储器中。当用户执行特定应用204时,应用204的图形输出可以显示在与客户端102相关联的显示屏上。
在一些实现中,客户端102可以执行提供文件目录结构和各种用户界面元素的操作系统。例如,客户端102的操作系统可以被配置成使得用户能够捕获客户端设备102的图形用户界面的屏幕截图。在一些实现中,屏幕截图可以是表示在屏幕截图被捕获时显示在客户端102的显示屏上的所有图形输出的图像。屏幕截图可以是描绘该图形输出的图像文件。在一些实现中,屏幕截图可以被存储在图像数据库210中的客户端设备上。例如,图像数据库210可以对应于由客户端102的操作系统提供的文件目录。在一些实现中,图像数据库210可以是与客户端102相关联的专用于存储图像的较大存储器的一部分,该图像包括可以使用客户端102的屏幕截图捕获功能捕获的屏幕截图。在一些实现中,当用户使用客户端102的图像捕获功能捕获屏幕截图时,所得到的图像文件可以自动被保存在图像数据库210中。在一些其他实现中,在屏幕截图已经被捕获在客户端102上之后,用户可以手动选择与图像数据库对应的文件目录用于存储屏幕截图。
与图像数据库210对应的文件目录可以在多个应用204之间共享(例如,能够由多个应用204访问)。在一些实现中,客户端102的各种应用204可以访问图像数据库210。例如,当各种应用204中的任一应用显示在设备上时,所捕获的屏幕截图可以自动被保存在图像数据库210中。图像数据库210由此可以用作客户端102上的各种应用204之间的共享存储器。因此,从很多不同的应用保存的屏幕截图可以在单个位置例如图像数据库210中被访问。在一些实现中,客户端102还可以包括屏幕截图接收器,其可以被实现为计算机可执行指令,这些计算机可执行指令可以例如作为在客户端102上执行的操作系统的一部分来执行。各种应用204中的任意应用可以使用屏幕截图接收器来访问存储在图像数据库210中的屏幕截图。相比之下,从应用204收集的大多数其他数据被存储在存储器的与由其他应用204存储的数据分开的单独的文件夹或部分中。
客户端设备102还包括屏幕截图链接应用215。屏幕截图链接应用可以以与上面讨论的应用204类似的方式在客户端设备上执行。屏幕截图链接应用215可以包括屏幕截图分析器220和图像分析器225。在一些实现中,屏幕截图链接应用215可以与图像数据库210交互以检索和处理存储在图像数据库210中的图像文件。例如,屏幕截图链接应用215可以从图像数据库210中检索与屏幕截图对应的图像文件。屏幕截图链接应用215的屏幕截图分析器220可以处理屏幕截图图像文件,例如以从屏幕截图提取一个或更多个图像。然后,如下面将进一步讨论的,图像分析器可以处理所提取的图像。在一些实现中,屏幕截图链接应用215可以被配置成从图像数据库210检索与屏幕截图对应的多个图像文件。在一些实现中,屏幕截图链接应用215可以识别例如图像数据库210的存储位置,在该存储位置处存储由设备捕获的屏幕截图,然后识别与由设备捕获的屏幕截图对应的多个图像文件。在一些实现中,屏幕截图链接应用可以使用图像处理技术识别来自其他类型的图像文件的屏幕截图,分析与该屏幕截图文件相关联的元数据等。
在服务器106上执行的屏幕截图链接系统203包括用户账户管理器224和发布者账户管理器226。在一些实现中,用户账户管理器224可以用于例如通过收集、存储和修改与客户端设备102的用户有关的信息为客户端设备102的用户创建账户。例如,用户账户管理器224可以存储诸如姓名、性别、年龄、电子邮件地址、电话号码以及与客户端设备102的用户相关联的人口统计信息的信息。在一些实现中,用户可以通过屏幕截图链接应用215经由客户端设备102上提供的用户界面将这样的信息输入到用户账户管理器。用户账户管理器224还可以存储与客户端102相关的信息,例如IP地址、MAC地址、型号或序列号。与用户账户相关联的所有信息都可以存储在数据库232中。在一些实现中,可以使用与用户账户对应的信息将从客户端102接收的通信与特定用户相关联。例如,用户账户管理器224可以确定源自客户端102的通信的源地址,并且可以将该源地址与和存储在数据库232中的用户账户相关联的信息进行比较,以识别哪个客户端设备102与特定通信相关联。
发布者账户管理器226可以用于为内容发布者例如企业创建账户。例如,发布者帐户管理器226可以通过从内容发布者收集标识信息并将该信息存储在数据库232中来创建包括与内容发布者相关联的这样的信息的帐户。在一些实现中,发布者帐户管理器226还可以存储与内容发布者提供的内容有关的信息。例如,发布者账户管理器226可以接收图像,例如在由内容发布者发布的广告中使用的图像。在一些实现中,这样的内容可以被存储在数据库232中并且与内容发布者的账户相关联。
屏幕截图链接系统203还包括链接生成器227,其可以用于生成将从客户端102接收的图像数据与另一资源例如URL或应用相关联的链接。例如,在一些实现中,链接生成器227可以将图像映射到资源。商店界面生成器229可以用于生成界面,客户端102的用户可以通过该界面购买产品。在一些实现中,可以将由商店界面生成器229生成的界面提供给客户端102,使得用户能够经由客户端102进行购买。通知生成器230可以生成与通知对应的信息,并且可以将通知发送到客户端102以提醒客户端102的用户通知已经生成。在一些实现中,通知可以包括由链接生成器227生成的链接。内容推荐提供器231可以接收与客户端102的用户的活动有关的信息,并且可以生成可能对用户有用的产品的推荐。然后,可以例如以通知的形式将该推荐提供给客户端102。这些部件将在下面进一步讨论。
应当理解的是,图2A的框图意在仅仅是说明性的。例如,虽然系统201的部件被示出为在客户端102或服务器106上执行,但是在一些实现中,被示出为在客户端102上执行的部件可以替代地在服务器106上执行。类似地,被示出为在服务器106上执行的部件可以替代地在客户端102上执行。在一些实现中,诸如屏幕截图分析器220的部件的一个实例可以在客户端102上执行,而同一部件的第二实例在服务器106上执行。
现在参照图2B,示出了描绘图2A的系统201的示例使用情况的概念图。客户端102被配置成将图像数据236发送至服务器106。服务器106还被配置成向客户端102发送信息。如图2B所示,图像数据库210包括屏幕截图238,屏幕截图238包括图像240。在一些实现中,屏幕截图链接应用215可以从图像数据库210接收屏幕截图238。例如,屏幕截图链接应用215可以针对新的屏幕截图238连续地或周期性地监视图像数据库210,并且可以从图像数据库210中检索屏幕截图238。例如,在一些实现中,屏幕截图链接应用215可以扫描图像数据库210并且根据下面进一步描述的技术依次处理存储在图像数据库210中的每个图像。在一些实现中,屏幕截图链接应用215本身可以处理屏幕截图238以提取图像240。例如,屏幕截图链接应用可以包括被配置成从屏幕截图238提取图像240的图像提取器。在一些其他实现中,屏幕截图链接应用215可以将与屏幕截图238对应的图像数据236发送至服务器106上的屏幕截图链接系统203,其中,屏幕截图链接系统203可以处理屏幕截图238以提取图像240。在已经提取图像240之后,可以识别与该图像相关联的链接。链接本身可以不包括在屏幕截图238中。例如,在一些实现中,如上所述,图像240可以与参考图像相匹配,其中该参考图像对应于与内容提供者的账户相关联的图像。参考图像可以与链接相关联,并且响应于确定该匹配,该链接可以与屏幕截图238相关联。该匹配可以在客户端102上本地确定,或者由服务器106远程确定。在一些其他实现中,可以在不将图像240与参考图像进行比较的情况下确定该链接。例如,如下面将进一步讨论的,可以使用与图像240相关联的水印或指纹来确定该链接。在一些实现中,可以从内容发布者推销产品的社交媒体网站检索参考图像。例如,可以在社交媒体网站上扫描特定公司的帖子,并且可以为每个图像生成指纹。图像和所生成的指纹然后可以被保存,并且随后可以用作参考图像。
在一些实现中,屏幕截图链接系统203可以确定由客户端例如客户端102在屏幕截图中已经捕获由内容发布者提供的特定内容片段的次数。例如,对于由内容提供者提供的每个发布的内容项目(例如,图像、社交媒体帖子等),屏幕截图链接系统203可以维持一个计数器,每当屏幕截图链接系统203接收指示已经捕获包括该内容项目的屏幕截图的图像数据236时,增加该计数器。可以响应于从任意数量的类似于客户端102的客户端接收这样的图像数据使计数器增加。因此,用于每个内容项目的计数器可以用作每个内容项目的流行度的度量。在一些实现中,计数器信息可以被提供给客户端102的用户。例如,当在客户端102上捕获屏幕截图时,屏幕截图链接系统203可以向客户端102发送表示其他客户端设备的其他用户已经捕获屏幕截图的次数的信息,其中该屏幕截图具有与在由客户端102捕获的以内容项目为特征的屏幕截图中的该内容项目相同的内容项目。在一些实现中,还可以将关于每个内容项目的计数器信息提供给内容发布者。例如,内容发布者可以使用该信息来更好地理解客户端设备例如客户端102的用户有可能在屏幕截图中捕获哪些内容项目。在一些实现中,每当用户捕获以由内容发布者提供的内容项目为特征的屏幕截图时,可以通知内容发布者。还可以向内容发布者提供关于用户的身份的信息,其中该用户已经捕获以由内容发布者发布的内容项目为特征的屏幕截图。在一些实现中,响应于确定客户端102已经捕获以由内容发布者提供的内容项为特征的屏幕截图,屏幕截图链接应用215可以提供界面,通过该界面,内容发布者能够与客户端102的用户进行通信。
然后可以生成包括链接246的通知242。在一些实现中,可以在客户端102上生成通知242。在一些其他实现中,可以由在服务器106上执行的屏幕截图链接系统203生成通知242。在一些实现中,可以从内容发布者推销产品的社交媒体网站检索参考图像。例如,可以在社交媒体网站上扫描特定公司的帖子,并且可以针对每个图像生成指纹。图像和所生成的指纹然后可以被保存,并且随后可以用作参考图像。通知242可以提醒客户端102的用户已经识别出与屏幕截图240相关联的链接246。在一些实现中,链接246可以是或者可以包括URL。例如,URL可以响应于客户端102的用户选择链接246将在客户端102上执行的web浏览器引导至由发布图像240的公司运营的网站。网站可以被配置成显示与屏幕截图238的图像240中所示的产品有关的信息。
在一些实现中,可以通过活动的应用204在客户端102上显示通知242。例如,如果当特定应用204在客户端102上活动时获得屏幕截图,则可以如上所述处理屏幕截图,并且可以在当前显示在设备上的活动的应用204的查看端口上显示通知242。在一些实现中,通知242可以是弹出通知。通知242可以包括通知客户端102的用户已经识别出与最近捕获的屏幕截图相关联的链接246的文本。在一些实现中,链接246可以显示在通知242中。在一些其他实现中,用户可以选择通知242以被引导至显示相关联的链接246的不同页面或应用204。在一些实现中,通知可以是由在设备上执行的屏幕截图链接应用生成的本地通知。在一些实现中,通知可以是由屏幕截图链接系统的服务器触发并由设备接收的推送或远程通知,该通知被显示在该设备上。
在一些其他实现中,链接246可以链接到在应用204中的一个应用上已经被查看的特定帖子。例如,选择链接246可以使应用204中的一个应用打开并显示包括与屏幕截图238中包括的图像240匹配的图像。因此,当屏幕截图238被捕获时,用户可以选择链接246以被引导至显示在客户端102上的原始帖子。
在另外其他实现中,链接246可以将用户引导至可以不与发布图像240的公司相关联的通用购物界面。例如,购物界面可以由屏幕截图链接系统203的操作者或由第三方提供。如下面将进一步讨论的,购物界面可以允许用户购买图像240中所示的产品。
图2C至图2G示出了将屏幕截图链接到产品购买页面的过程的各个阶段。图2C示出了由客户端102的用户捕获的屏幕截图。屏幕截图包括包含产品(在这种情况下为衬衫)的图像274以及诸如界面元素的各种用户视觉特征。如上所述且如在下面将进一步讨论的,可以处理图2C所示的图像以提取图像274,并且识别与图像274相关联的链接。然后,如图2D所示,可以提供包括该链接的通知276。用户可以选择通知276内包括的链接,该链接可以使客户端102显示图2E所示的购物界面。如所示,购物界面可以包括原始图像274的图片以及按钮278,如果用户希望购买图像274中所示的产品则可以选择按钮278。购物界面还可以包括与该产品有关的附加信息,例如描述280以及生产该产品的公司的名称(在该实例中是Staple Pigeon)。如图2F所示,选择按钮278可以使购物界面显示与该产品相关的附加可选选项282,例如产品的期望尺寸和颜色。在用户已经选择一个或更多个选项282之后,可以选择“加入购物车”按钮284。在产品被加入购物车之后,购物界面可以显示包括结账按钮286的结账屏幕。选择结账按钮286可以完成产品向用户的销售。
在一些实现中,用户账户管理器224可以将支付信息例如信用卡号码和配送地址存储在数据库232中。那么选择结账按钮286可以将产品记帐到与客户端102的用户账户相关联的信用卡,并且可以通知零售商所选产品应当被发送到与客户端102的用户账户相关联的配送地址。在一些其他实现中,响应于用户选择结账按钮286,购物界面可以提示用户手动输入支付信息和配送地址。
图2H是用于将屏幕截图链接到其他内容的过程250的流程图。简言之,可以确定图像文件与屏幕截图对应(步骤252),可以分析屏幕截图以识别与屏幕截图相关联的至少一个应用(步骤254),并且可以生成将屏幕截图与资源相关联的链接(步骤256)。
再次参照图2H,并且更详细地,过程250包括确定图像文件与屏幕截图对应(步骤252)。例如,可以由图2A中所示的屏幕截图分析器220进行这样的确定,如下面结合图3A进一步描述的,屏幕截图分析器220可以包括屏幕截图检测器。在一些实现中,可以从图像数据库210获取、检索或扫描图像文件。然后可以分析图像文件的特征以确定图像文件是否与屏幕截图对应。例如,在一些实现中,可以将图像文件的分辨率与客户端102的显示屏的分辨率进行比较。由于屏幕截图捕获表示在客户端102的显示屏上所显示的内容的图像,所以屏幕截图通常会具有与客户端102的显示屏大致相同的分辨率。因此,在一些实现中,可以确定客户端102的显示屏的分辨率以将客户端102上的图像的分辨率与显示屏的分辨率进行比较。例如,客户端102可以具有具有1920×1080的标准高清(HD)分辨率的显示屏,该分辨率在很多可用的智能手机中是典型的。屏幕截图链接应用可以确定图像文件的分辨率,以及如果图像文件的分辨率与客户端102的显示屏的分辨率匹配或接近,则屏幕截图链接应用可以确定图像文件为屏幕截图。对于客户端102的显示屏而言,其他分辨率也是可行的。在一些实现中,具有相对较高分辨率的文件更有可能是已被相机捕获的而不是已作为屏幕截图被捕获的。例如,在苹果IPHONE 6上获得的屏幕截图的分辨率为750×1334(其基于显示屏的分辨率),而由苹果IPHONE 6的后置相机拍摄的图像的分辨率为8MP(其基于相机的分辨率)。其他移动设备可以捕获具有不同分辨率的图像和屏幕截图。在一些其他实现中,可以使用与图像文件相关联的元数据来确定图像文件是否与屏幕截图对应。例如,元数据可以包括图像文件的来源的指示,这可以帮助确定图像文件是否表示屏幕截图。如果与图像文件相关联的元数据指示由客户端102从远程计算设备接收到图像文件,则图像文件可能不太可能表示在客户端102上捕获的屏幕截图。在其他实现中,可以分析图像文件的其他特征以确定图像文件是否表示屏幕截图。例如,在一些实现中,确定图像文件是否表示屏幕截图可以基于图像文件的文件大小。在一些实现中,例如,较小的文件可能更有可能已作为屏幕截图被捕获而不是照片。
在已确定图像文件与屏幕截图对应之后,可以分析屏幕截图以识别与该屏幕截图相关联的至少一个应用(步骤254)。例如,可以通过图2A中所示的屏幕截图分析器220进行该识别,如下面将进一步描述的,屏幕截图分析器220可以包括应用检测器。在一些实现中,图像文件的视觉元素可以与某些应用相关联。在其他实现中,可以使用图像文件的元数据来确定与该屏幕截图相关联的应用。下面在部分B中将讨论与用于识别与屏幕截图相关联的应用的技术有关的另外的细节。
然后可以生成将屏幕截图与资源相关联的链接(步骤256)。在一些实现中,链接可以由图2A中所示的链接生成器227生成。所生成的链接可以基于屏幕截图内的图像中所示的产品。例如,屏幕截图可以包括显示特定产品的图像,并且链接可以是与使得用户能够接收与产品有关的更多信息或者购买产品的网页相关联的URL。在一些其他实现中,可以将链接引导至已经在客户端102上执行的应用中的一个应用上查看的特定帖子。在另外其他实现中,链接可以将用户引导至通用购物界面,例如图2C至图2G中所示的购物界面。在这些示例中的每个示例中,用户可以从通知中选择链接,例如使用定点设备或其他输入设备来选择链接。链接的选择可以使客户端102的资源显示部件访问与该链接相关联的资源(即,显示与该链接相关联的图形内容)。
图2I是用于提供与屏幕截图相关联的网上商店的过程260的流程图。简言之,可以识别屏幕截图(步骤262)。可以识别该屏幕截图内包括的图像(步骤264)。可以识别与该图像相关联的链接(步骤266)。可以提供包括该链接的通知(步骤268)。可以经由该链接提供购买该图像中显示的产品的页面(步骤270)。然后可以接收并执行购买产品的请求(步骤272)。
再次参照图2I,且更详细地,过程260可以包括识别屏幕截图(步骤262)。如上所述,可以从图像数据库210中检索图像文件。在一些实现中,屏幕截图链接应用215可以监视图像数据库210以确定何时添加了图像文件,并且可以在图像文件被添加到数据库时处理图像文件或除此之外以预定频率处理图像文件。在一些实现中,可以例如通过检查图像文件的尺寸例如文件大小和/或分辨率来处理图像文件以确定图像文件是否与屏幕截图对应。在一些实现中,屏幕截图可以由图2A中所示的屏幕截图分析器220来识别。
过程260可以包括识别屏幕截图内包括的图像(步骤264)。在一些实现中,可以处理屏幕截图以识别和/或提取图像。如下面在部分D中进一步讨论的,可以采用各种技术从屏幕截图中识别和/或提取图像。在一些实现中,在客户端102上执行的屏幕截图链接应用215的部件例如图2A中所示的屏幕截图分析器220或图像分析器225可以从屏幕截图中提取图像。在其他实现中,可以将屏幕截图从客户端102发送至服务器106,并且可以通过在服务器106上执行的屏幕截图链接系统203的部件从该屏幕截图提取图像。
过程260包括识别与图像相关联的链接(步骤266)。在一些实现中,链接可以由图2A中所示的链接生成器227生成,并且可以被在客户端102上执行的链接识别器识别。链接可以基于从屏幕截图中提取的图像中所示的产品。例如,链接可以是与使得用户能够接收与图像中所示的产品有关的更多信息或者购买产品的网页相关联的URL。在一些其他实现中,链接可以被引导至已经在客户端102上执行的应用中的一个应用上查看的特定帖子。
在一些实现中,链接可以是深度链接。例如,深度链接可以指代到例如用于生成与链接相关联的屏幕截图的应用的特定应用的特定页面或部分的链接。因此,链接可以将用户引导至应用的某个部分或页面,而不仅仅是启动应用。在一些实现中,深度链接可以是到网站上的特定内容片段例如特定页面的URL链接,而不是网站的主页。当用户选择该链接时,用户可以直接被带到网站上的相关内容。
如上所述,这样的链接可以被称为“深度链接”。在另外其他实现中,链接可以将用户引导至通用购物界面例如图2C至图2G中所示的购物界面。
过程260包括提供包括链接的通知(步骤268)。在一些实现中,通知可以例如由屏幕截图链接应用215在客户端102上生成。在一些其他实现中,通知可以由在服务器106上执行的屏幕截图链接系统203生成并且被发送至客户端102。通知可以提醒客户端102的用户已经识别出与屏幕截图相关联的链接。然后,客户端102的用户可以从通知中选择链接以被引导至与该链接相关联的资源。
过程260包括经由链接提供购买图像中所显示的产品的页面(步骤270)。在一些实现中,页面可以由在计算设备例如图2A中所示的客户端102上执行的web浏览器应用来提供。例如,如上所述,该链接可以将用户引导至由生产该产品的公司运营的网站。然后用户可以使用公司的网站来完成购买。在其他实现中,该链接可以将用户引导至可以不与生产该产品的公司相关联的通用购物界面或通用商店。例如,购物界面可以由屏幕截图链接系统的运营商或由第三方提供。通用商店可以包括使得用户能够选择与产品有关的各种选项例如产品的期望尺寸和颜色的界面。通用商店的界面可以直接呈现在能够显示在客户端设备上的其他内容例如与链接相关联的图像上。例如,通用商店界面可以与和链接相关联的图像叠加,从而使得用户能够在选择与产品有关的各种选项之后购买图像中所示的产品。
在一些实现中,通用商店可以包括以下数据库或可以与以下数据库进行通信:包含与通过通用商店提供销售的产品有关的信息的数据库。例如,屏幕截图链接应用可以与该数据库通信以检索与和用户所选的链接相关联的产品有关的信息。该数据库可以包括诸如制造商、项目名称和序列号、项目的价格以及与该项目相关联的各种可选选项的信息。通用商店界面可以覆盖在与产品相关联的图像上,并且可以显示与从数据库获得的产品有关的信息。在一些实现中,通用商店可以包括使得用户能够选择与该项目相关联的各种选项例如尺寸和颜色的用户界面元素。
通用商店可以独立于与通过通用商店提供销售的产品的制造商相关联的网站。然而,在一些实现中,用户与通用商店的界面的交互可以稍后被发送到通过通用商店提供用于销售的产品的制造商的网站。例如,用户可以通过通用商店界面来购买产品,并且与销售有关的信息例如产品的尺寸和颜色以及配送信息和账单信息可以被发送给通过通用商店提供用于销售的产品的制造商。过程260包括接收并执行购买产品的请求(步骤272)。在一些实现中,可以通过在客户端设备102上执行的屏幕截图链接应用215来接收请求。在一些实现中,页面可以包括结账按钮,用户可以选择该结帐按钮以完成产品向用户的销售。例如,支付信息例如信用卡号码和配送地址可以被存储在客户端102的用户的用户账户中。那么选择该结账按钮可以使产品被记帐到与客户端102的用户账户相关联的信用卡,并且可以通知零售商所选产品应当被发送到与客户端102的用户账户相关联的配送地址。在一些其它实现中,购物界面可以响应于用户选择该结账按钮提示用户手动输入支付信息和配送地址。
C.确定与屏幕截图相关联的应用
如上讨论的,计算设备的用户可能希望以屏幕截图的形式保存他们感兴趣的内容的图像,例如来自因特网上的网页或者移动应用的屏幕。可以处理屏幕截图以生成到其他相关内容的链接。在一些实现中,出于生成这样的链接的目的,确定与屏幕截图相关联的应用会是有用的。例如,深度链接可以是到特定页面的链接或到例如用于生成屏幕截图的应用的特定应用的特定部分的链接。因此,为了屏幕截图链接系统生成深度链接,屏幕截图链接系统可以在捕获屏幕截图的时候识别在客户端设备的显示器上活动的应用的标识。此外,屏幕截图链接系统也可以用于仅处理保存在客户端设备上的屏幕截图的子集,例如仅由应用的子集生成的屏幕截图。例如,某些应用可以被添加至应用的白名单中,其中该白名单中的应用的屏幕截图将被处理并链接至其他内容。与未包括在白名单中的应用相关联的屏幕截图可以不被处理以节省计算资源。
本公开内容的一个方面可以在用于确定与特定屏幕截图相关联的应用的标识的方法或系统中实现。屏幕截图链接系统可以识别图像文件并确定图像文件与屏幕截图对应。屏幕截图链接系统可以识别屏幕截图的一个或更多个视觉元素。屏幕截图链接系统然后可以基于所识别的视觉元素来确定与屏幕截图对应的应用的标识。
现在参照图3A,示出了描绘可以在图2A的系统中使用的屏幕截图分析器220的实施方式的框图。屏幕截图分析器220被示出为在客户端102上执行的屏幕截图链接应用215的部件。然而,在其他实现中,屏幕截图分析器220可以替代地在服务器106上执行。简要概述,屏幕截图分析器220包括屏幕截图检测器325、应用检测器330和策略管理器335。
屏幕截图检测器325可以被配置成确定何时在客户端设备102上捕获屏幕截图。如上讨论的,在一些实现中,屏幕截图可以被保存到图像数据库,例如图2A所示的图像数据库210。屏幕截图检测器325可以连续地或周期性地监测图像数据库210,以确定新的图像文件何时被添加至图像数据库。在一些实现中,屏幕截图检测器325可以进一步被配置成例如基于新添加的图像文件的分辨率或与新添加的图像文件相关联的元数据来确定新添加的图像文件对应于屏幕截图还是不同类型的图像文件。在一些实现中,如果屏幕截图的分辨率小于预定分辨率,则屏幕截图检测器325可以确定图像是否与屏幕截图对应。
应用检测器330可以被配置成确定与屏幕截图相关联的应用。在一些实现中,应用检测器330可以被配置成确定在捕获特定屏幕截图时在客户端102上活动的一个或更多个应用。在一些其他实现中,应用检测器330可以被配置成确定哪个应用被用来显示存在于屏幕截图中的图像。例如,可以基于屏幕截图的视觉元素进行确定。在其他实现中,可以基于其他信息例如与屏幕截图相关联的元数据进行确定。
在一些实现中,应用检测器330可以包括一个或更多个应用的模板或图像文件。应用检测器330可以识别每个应用的图像的特征,以生成对于特定应用唯一的特征列表。例如,每个应用可以使用唯一的配色方案、字体、布局等。在一些实现中,可选图标的布局在每个应用中可以是唯一的。应用检测器330可以通过采用光学字符识别(OCR)技术或其他文本识别技术来识别图像中的文本。然后,应用检测器可以基于识别的文本来确定与屏幕截图相关联的应用。
应用检测器330可以分析或解析屏幕截图并且识别图像的一个或更多个特征,包括但不限于可选图标的配色方案、布局和排列等。应用检测器330然后可以将所识别的特征与已知特征进行比较,其中,该已知特征对于一个或更多个应用中的每一个唯一,该一个或更多个应用中的每一个对于应用检测器330唯一。应用检测器330然后可以基于屏幕截图的特征的比较来确定屏幕截图与应用中之一对应。
策略管理器335可以存储与屏幕截图的处理有关的一个或更多个策略。例如,策略可以包括与基于与屏幕截图相关联的应用的屏幕截图的处理有关的信息。每个策略可以包括一个或更多个规则。例如,策略管理器335可以维护应用的白名单。在应用检测器330已经确定与屏幕截图相关联的应用之后,可以将该应用与由策略管理器335维护的白名单中包括的应用进行比较。在一些实现中,如果应用检测器330确定该应用与包括在白名单中的应用之一匹配,则屏幕截图可以被进一步处理以识别或生成将屏幕截图与另一个资源相关联的链接。但是,如果该应用与白名单中包括的应用之一不匹配,则屏幕截图可能被丢弃而不进行进一步处理。
策略管理器335也可以实现其他基于应用的策略。例如,策略管理器335可以将较高的优先级分配给与特定应用相关联的屏幕截图,使得那些屏幕截图比与较低优先级应用相关联的屏幕截图更快地被处理。在一些实现中,策略管理器335可以存储与和特定应用相关联的各种视觉元素有关的信息。当确定特定屏幕截图与哪个应用对应时,这样的信息可以用作应用检测器330的参考信息。
在一些实现中,策略管理器335可以实施控制图像处理或通知的定时的策略。例如,策略管理器335可以控制针对新的图像文件扫描图像数据库的频率。因此,根据由策略管理器335实施的策略,可以针对新文件每周扫描一次、每天扫描一次、每小时扫描一次或以任意其他间隔扫描图像数据库。在一些实现中,策略管理器335可以使图像在从最近的图像被添加至图像数据库起经过预定间隔之后被处理。在一些实现中,策略管理器335可以使图像例如在预定数量的新图像已被添加至图像数据库之后被一起成批处理。
在一些实现中,策略管理器335可以实施策略以控制屏幕截图链接系统的其他方面。例如,策略管理器335可以控制在客户端102上显示通知的定时。在一些实现中,客户端的用户可以与策略管理器335交互以定制与各种策略相关联的参数。
图3B是包括图像346的示例屏幕截图。如上讨论的,屏幕截图检测器325可以检测客户端设备上的屏幕截图的存在。在检测到屏幕截图之后,应用检测器330可以分析屏幕截图以确定与屏幕截图相关联的应用。在一些实现中,应用检测器330识别和分析屏幕截图的视觉元素以确定与屏幕截图相关联的应用。视觉元素可以包括屏幕截图的颜色、形状、图标、文字、字体样式、布局或任意其他视觉特征。例如,图3B所示的屏幕截图包括屏幕截图顶部的后退按钮340和刷新按钮342、账户名称344、图像346、收藏按钮348、评论按钮350以及各种用户界面元素352。
应用检测器330可以处理屏幕截图以识别视觉元素,并且可以基于所识别的视觉元素来识别与屏幕截图相关联的应用。在一些实现中,应用检测器330将在屏幕截图中识别的视觉元素与由策略管理器335存储的参考信息进行比较。例如,策略管理器335可以存储与特定应用中使用的特定颜色或字体样式有关的信息。如果应用检测器330确定屏幕截图的颜色或字体样式与与特定应用相关联的那些颜色或字体样式匹配,则应用检测器330可以确定屏幕截图与该应用相关联。该处理技术可以是有效的,因为在许多情况下,在客户端102上执行的应用具有可以与各种视觉元素对应的独特的界面设计。在一些其他实现中,应用检测器330可以使用屏幕截图的元数据来确定与屏幕截图相关联的应用。例如,元数据可以包括基于文本的信息,该基于文本的信息指示当屏幕截图被捕获时在客户端上活动的应用。
图3C是指示与屏幕截图相关联的应用的示例图形用户界面。在一些实现中,屏幕截图链接应用215可以响应于确定与特定屏幕截图相关联的应用而使图3C所示的图形用户界面显示在客户端102上。图形用户界面包括图像354和应用标识356。图像354可以与已经由应用检测器330分析的屏幕截图中存在的图像对应。在一些其他实现中,图3C所示的图形用户界面可以包括整个截图,包括屏幕截图中存在的图像354和其他视觉元素。应用标识356包括与屏幕截图相关联的应用的名称(在该示例中,相关联的应用是Instagram)以及示出屏幕截图被捕获的日期的时间戳。因此,图3C所示的图形用户界面可以用来提醒用户用来捕获特定屏幕截图的应用以及屏幕截图被捕获的时间。
在一些实现中,图3C所示的图形用户界面还可以包括其他信息或其他界面元素。例如,图形用户界面可以包括到与提供屏幕截图中所示的图像的内容发布者相关联的简档页面的链接。在一些实现中,屏幕截图链接应用可以例如使用光学字符识别来扫描与提供屏幕截图中展示的图像的内容发布者的名称相关联的文本的屏幕截图。如果在屏幕截图中示出了这样的文本,则图形用户界面可以包括可由客户端102的用户选择的链接。因此,如图3C所示,包括内容发布者的名称的文本355可以是图形用户界面中的可选择链接。选择链接可以将用户引导至与内容发布者相关联的网页。在一些其他实现中,图形用户界面可以包括其他链接。例如,应用中示出的用户界面元素357和358可以与图3C所示的图形用户界面中的链接相关联,其中屏幕截图从该应用中被捕获。在一些实现中,链接可以将用户引导至与屏幕截图相关联的应用,并且使应用执行与用户界面元素357和358相关联的动作,例如“喜欢”或评论帖子,其中屏幕截图从帖子中被捕获。
图3D是用于确定与屏幕截图相关联的应用的过程360的流程图。简要概述,屏幕截图链接应用可以识别图像文件(步骤362)。屏幕截图链接应用可以确定图像文件与屏幕截图对应(步骤364)。屏幕截图链接应用可以识别屏幕截图的一个或更多个视觉元素(步骤366)。屏幕截图链接应用可以基于所识别的视觉元素来确定与屏幕截图对应的应用(步骤368)。
再次参照图3D,过程360可以包括识别图像文件(步骤362)。在一些实现中,屏幕截图链接应用可以识别图像文件。例如,屏幕截图链接应用可以通过监测保存图像文件的文件目录例如图2A所示的图像数据库210来识别图像文件。屏幕截图链接应用然后可以从这样的目录中检索图像文件。过程360包括确定图像文件与屏幕截图对应。在一些实现中,如上所述,可以通过屏幕截图检测器325进行该确定。例如,屏幕截图分析器325可以监测图像数据库210以确定新图像文件何时被添加至图像数据库。在一些实现中,屏幕截图检测器325可以被进一步配置成例如基于图像文件的分辨率或与图像文件相关联的元数据来确定图像文件对应于屏幕截图还是不同类型的图像文件。
过程360包括识别与屏幕截图相关联的一个或更多个视觉元素(步骤366)。在一些实现中,屏幕截图分析器可以用于识别一个或更多个视觉元素。视觉元素可以包括屏幕截图的颜色、形状、图标、文字、字体样式、布局或任意其他视觉特征。在一些实现中,应用检测器330可以包括一个或更多个应用的模板或图像文件。应用检测器330可以识别每个应用的图像的特征,以生成对于特定应用唯一的特征列表。例如,每个应用可以使用唯一的配色方案、字体、布局等。在一些实现中,可选图标的布局在每一个应用中可以是唯一的。
过程360包括基于所识别的视觉元素确定与屏幕截图对应的应用(步骤368)。在一些实现中,应用检测器可以确定与屏幕截图对应的应用。在一些实现中,屏幕截图中识别的视觉元素可以与参考信息进行比较,其中参考信息与和各种应用相关联的视觉元素有关。例如,策略管理器335可以存储关于特定应用中使用的特定颜色或字体样式的信息。如果确定屏幕截图的颜色或字体样式与特定应用相关联的那些颜色或字体样式匹配,则还可以确定该屏幕截图与该应用相关联。
D.分析屏幕截图内包括的图像
如上讨论的,屏幕截图可以捕获客户端设备的显示屏幕上显示的图形内容。然而,屏幕截图的视觉元素中的一些可能是不相关的,例如活动应用的用户界面的元素或者可能在客户端设备上显示的其他信息,例如客户端设备的时间、日期和电池水平。因此,将屏幕截图的相关内容例如由内容发布者提供的图像与屏幕截图中可能包括的不太相关的内容分开会是有用的。在图像被识别和/或提取之后,图像可以被处理以确定与图像相关联的水印或指纹。水印和指纹可以用于将图像与由内容发布者提供的参考图像进行匹配。以这种方式,如果用户摄取与内容发布者的参考图像匹配的图像的屏幕截图,则屏幕截图链接系统可以经由用户的设备向用户提供通知,该通知包括到与参考图像对应的内容的链接,其中参考图像与屏幕截图的图像匹配。因此,内容发布者或广告商可以基于由用户捕获的屏幕截图向用户提供相关内容。
本公开内容的一个方面可以在用于分析屏幕截图内包括的图像的方法或系统中实现。可以从屏幕截图中识别和/或提取图像。图像的水印可以被识别。水印可以包括与图像对应的附加信息。在一些实现中,水印可以包括表示到移动应用或web服务器的页面的链接的数据,其中移动应用或web服务器包括与图像相关联的内容。链接可以是到图像中显示的产品的内容的链接。在一些实现中,链接可以是到发布或提供图像的广告商或实体的内容的链接。在一些实现中,响应于识别到内容的链接,屏幕截图链接系统可以向客户端设备提供包括到内容的链接的通知,以使得客户端设备的用户能够检索与包括在屏幕截图中的图像有关的附加信息。
本公开内容的另一方面还可以在用于分析屏幕截图内包括的图像的方法中实施。可以从屏幕截图中识别和/或提取图像。屏幕截图链接系统或与屏幕截图链接系统对应的移动应用可以生成可以被生成的图像的指纹。屏幕截图链接系统然后可以识别与屏幕截图的图像的指纹匹配的参考图像的指纹。响应于确定屏幕截图的图像的指纹与所识别的参考图像的指纹匹配,屏幕截图链接系统可以识别到与图像相关联的内容的链接。屏幕截图链接系统然后可以生成并提供包括到设备的用户的链接的通知。这样,屏幕截图链接系统可以基于由用户捕获的屏幕截图中包括的图像来提供用户相关的内容。因此,广告商或内容发布者可以发送与用户有关的链接以增加用户参与度。
现在参照图4A,示出了描绘可以在图2A的系统201中使用的图像分析器225的实施方式的框图。图像分析器225被示出为在客户端102上执行的屏幕截图链接应用215的部件。然而,在其他实现中,图像分析器225可以替代地在也在图2A中示出的服务器106上执行。简要概述,图像分析器225包括熵分析器430、水印检测器435和指纹生成器440。
熵分析器430可以用于从屏幕截图中识别和/或提取图像。例如,如上讨论的,屏幕截图可以包括图像以及与用于生成屏幕截图的应用相关联的其他视觉元素。然而,用户通常对图像的内容比对可以包括在屏幕截图内的其他视觉元素更感兴趣。此外,到其他内容的链接基于图像数据,并且在一些实现中应当独立于不包括在图像中的其他视觉元素。因此,从屏幕截图中提取图像或识别屏幕截图内的图像可能会有帮助。在一些实现中,熵分析器430可以确定屏幕截图上的图像熵以确定屏幕截图的哪些部分与图像对应。在一些实现中,如下面进一步描述的,熵分析器430可以针对在水印过程期间引入的噪声扫描屏幕截图。如果存在这样的噪声,则熵分析器430可以确定屏幕截图包括带水印的图像。
图像熵可以指与图像数据相关联的随机量。因此,图像上具有许多不同的像素颜色和像素亮度的值的图像可以比图像上具有相对少的不同像素颜色和像素亮度的值的图像具有更高的熵。通常,应用接口包括设计上相对简单的视觉元素。例如,应用可以包括单一颜色的大标题栏或按钮,并且因此与这样的视觉元素对应的屏幕截图的部分可能具有相对低的熵。相比之下,照片通常包括许多不同的颜色和亮度级别的像素,这会导致相对高的图像熵。标题栏或其他用户元素的位置还可以提供关于在特定屏幕截图被捕获时哪个应用在显示器中活动的信息。
因此,在一些实现中,熵分析器430可以确定与屏幕截图的各个区域相关联的熵,并且可以基于熵值来预测哪些区域与图像对应。在一些实现中,熵分析器430可以将屏幕截图分割成具有预定大小的块。可以确定每个块的图像熵,并且可以基于从块到块的熵的变化来推断图像的可能的边缘。在一些实现中,块可以被组合成更大的区域,其熵可以由熵分析器430在随后轮的测试中确定。
在一些实现中,熵分析器430可以通过对屏幕截图上的像素值的分布应用函数来确定熵。例如,在一些实现中,像素值的分布可以由直方图表示。在一些实现中,可以将对数函数应用于像素值的分布(例如,屏幕截图的直方图)以确定熵。熵分析器430可以利用直方图信息来确定图像是否包括可能与特定应用相关联的某些颜色。
在一些实现中,熵分析器430或图像分析器可以被配置成识别图像内显示的一个或更多个文本字符。通过识别图像中的文本字符,图像分析器可以识别与图像相关联的品牌或其他信息,该其他信息可以用于识别参考图像或被屏幕截图链接系统使用以识别与图像相关联的产品。
水印检测器435可以被配置成检测从屏幕截图提取的图像中的水印的存在。如下面更详细解释的,水印可以在一些实现中被实现为视觉或非视觉标记。因此,在一些实现中,水印检测器435可以被称为标记检测器。水印可以是被配置成唯一地识别图像的任意信息。水印可以标识、包括或嵌入GUID。在一些实现中,水印可以是添加至图像的视觉标记,例如QR码或条形码。例如,水印可以包括任何类型或形式的代码例如字符串,或一组图像例如表情符号。在一些实现中,水印可以包括与表情符号或其他图像一起的一个或更多个字母数字字符串。一些水印可以包括在水印的开始或结束处的预定字符或符号串,并且可以在对于每个水印唯一的其他字符串或图像之前或之后。例如,所有水印可以以一组通用的一个或更多个字符或符号开始,并且可以跟随附加字符或符号,其中附加字符或符号对于它们各自的水印唯一。在一些实现中,水印可以是与图像相关联但不直接包括在图像中的视觉标记。例如,水印可以显示在图像的边界周围的区域中。在一个这样的示例中,水印可以被包括在图像的标题、说明或评论内。这种水印可以包括使用键盘界面创建以将信息输入到与图像的标题、说明或评论相关联的文本字段中的字符、符号或表情符号。
在一些其他实现中,水印可以包括与图像相关联的元数据。在另外其他实现中,可以在与图像对应的数据内编码水印。例如,可以使用编码算法来生成水印。可以对初始图像I执行该算法以创建用消息m编码的带水印图像I'。在一些实现中,消息m可以是128位消息。该算法可以被选择为使得无法察觉到带水印图像I'与初始图像I不同。在一些实现中,可以将[-3,3]区间的均匀随机噪声添加至初始图像I。然后可以将可以是RGB颜色空间中的图像的初始图像I转换到YCbCr颜色空间。被转换图像中的两个色度通道可以被改变大小到512×512。因此,每个色度通道可以被划分成4096个块,每个块的大小为8×8。接下来,离散余弦变换可以应用于I中的8×8块中的每一个以创建IDCT。根据映射 在每个色度通道中将消息m编码32次,该映射取第j冗余的第i位并将其映射至IDCT中的块以在块中对该位进行编码。设Bi,j=IDCT(M(i,j))是要用m的第i位进行编码的块。如果mi=1,则可以确保是奇数,否则是偶数。然后,可以使用逆离散余弦变换来转换IDCT,并且可以将所得到的图像I重新缩放成原始图像的尺寸以生成编码图像I'。I'然后可以被转换回RGB颜色空间。因此,I'是RGB与I在视觉上无法区分但包括编码消息m的颜色空间中的图像。其他算法也可以用于在图像中对水印消息进行编码。
在一些实现中,可以由发布图像的公司、组织或人员将水印添加至图像。在一些实现中,可以在图像被发布之前将水印添加至图像。例如,发布图像的公司、组织或人员可以在发布包括水印的图像之前首先改变或修改与图像对应的数据以包括水印。在一些其他实现中,可以在图像被发布之后创建水印。例如,发布图像的公司、组织或人员可以在图像已经发布或以其他方式使其可供其他人查看之后编辑图像以包括水印。在另一示例中,水印可以由不涉及图像的发布的第三方创建。如上讨论的,水印可以被包括在与图像相关联的评论或说明中。通常,评论和说明可以在图像发布后创建。因此,第三方可以在图像已经发布之后公布包括与图像相关联的水印的评论或说明。
水印可以包括识别图像的信息以及与和图像相关联的链接有关的信息。因为将这样的信息直接包括在水印内可能不需要将图像或水印与参考图像或参考水印进行比较,所以这可以使得与图像相关联的链接容易识别。在其他实现中,可以存储一组参考水印(其也可以被称为参考标记),并且每个参考水印可以与相应的链接相关联。针对与水印格式对应的已知信息模式,水印检测器435可以扫描、监测、解析或以其他方式分析图像或图像的边界周围的屏幕截图的区域。例如,针对例如包括字符串的代码、符号、表情符号或其他信息的特定的视觉标记,水印检测器435可以扫描图像或图像周边的屏幕截图的外围区域。在另一示例中,针对特定的位模式,水印检测器435可以在图像数据本身中扫描图像,以便从图像中提取水印。在水印检测器435确定图像中存在水印之后,可以将该水印与该组参考水印进行比较。如果找到匹配,则可以将与匹配的参考水印对应的链接识别为(例如,通过屏幕截图链接系统)与图像的水印相关联的链接。
指纹生成器440可以被配置成基于图像生成指纹。指纹可以包括唯一识别图像的任意信息。指纹可以标识、包括或嵌入GUID。指纹功能可以被设计和配置成生成和/或标识GUID。在一些实现中,指纹可以不被包括在图像内。替代地,指纹生成器440可以处理图像数据以生成指纹。在一些实现中,可以通过对与图像相关联的图像数据执行散列函数来生成指纹。例如,因为彼此不同的图像由唯一图像数据表示,所以表示与唯一图像相关联的图像数据的散列的指纹也应当是唯一的。此外,在一些实现中,指纹可以是唯一地表示图像的位串,其中从该图像生成该指纹。
在一些实现中,图2A所示的发布者账户管理器226可以收集由公司发布的图像并且可以将图像存储在也在图2A中示出的服务器106的数据库232中。可以处理图像以为每个图像生成参考指纹,并且链接可以与每个参考指纹相关联。当指纹生成器440处理客户端102上的图像以生成指纹时,指纹可以被传送到服务器106并且可以与存储在数据库232中的参考指纹进行比较。如果服务器确定存在匹配,则服务器可以将与匹配的参考指纹对应的链接与图像进行关联。
图4B是描绘图2A的系统的示例用例的概念图。如上讨论的,客户端102包括多个应用204、图像数据库210和屏幕截图链接应用215。屏幕截图链接应用215包括水印检测器435。在该示例中,客户端102还包括屏幕截图439。屏幕截图439包括图像441,其包括水印443。在一些实现中,屏幕截图439可以被存储在图像数据库210中。
如上面详细描述的,熵分析器430可以用于从屏幕截图439中识别和/或提取图像441。在图像441从屏幕截图439中提取之后,屏幕截图链接应用可以将图像441提供给水印检测器435。水印检测器435可以处理图像441以提取水印443。如上讨论的,在一些实现中,水印可以提供与要与图像相关联的链接有关的信息。因此,在该实现中,可以在从客户端102向服务器106发送任意通信之前确定链接。在一些实现中,可以向服务器106发送与图像相关联的全局唯一标识符(GUID),例如GUID 450。例如,GUID 450可以被存储在屏幕截图链接系统203中,使得屏幕截图链接系统203可以维护已经在客户端102上被查看的图像的记录。在一些实现中,GUID 450可以由图2A所示的用户账户管理器224存储在数据库232中。
图4C是描绘图2A的系统的示例用例的概念图。除了屏幕截图439包括没有任何水印的图像441之外,该示例与图4B所示的示例类似。在一些实现中,屏幕截图439可以被存储在图像数据库210中。屏幕截图链接系统203还包括指纹分析器460和通知生成器465。
如上面详细描述的,熵分析器430可以用于从屏幕截图439中提取图像441。在图像441从屏幕截图439提取之后,图像441可以被提供给指纹生成器440。指纹生成器440可以处理图像441以生成与图像相关联的指纹451。例如,指纹生成器440可以对表示图像441的数据执行散列函数,以确定与图像441相关联的指纹451。在一些实现中,与图像相关联的指纹451可以被发送至服务器106。例如,指纹451可以存储在屏幕截图链接系统203中。如上讨论的,服务器106可以维护参考指纹和关联链接的数据库。指纹分析器460可以将指纹451与参考指纹进行比较。如果确定匹配,则与匹配的参考指纹对应的链接420可以与图像相关联。通知生成器465可以生成包括链接420的通知415。然后,可以将通知发回给客户端102,使得客户端102的用户可以访问链接420。
在一些实现中,可以从内容发布者在其上推销产品的社交媒体网站中检索参考图像。例如,可以在社交媒体网站上扫描特定公司的帖子,并且可以为每个图像生成指纹。图像和生成的指纹然后可以保存,并且然后可以用作参考图像。因此,在公司发布图像之后,可以追溯地生成参考指纹。
图4D是用于分析包括水印的图像的过程470的流程图。简要概述,可以从屏幕截图中提取图像(步骤472)。可以从所提取的图像中识别水印(步骤474)。可以从所识别的水印中识别链接(步骤476)。可以提供包括链接的通知(步骤478)。
再次参照图4D,并且更详细地,过程470可以包括从屏幕截图中提取图像(步骤472)。在一些实现中,图像分析器例如图4A所示的图像分析器225可以用来提取图像。例如,如上讨论的,屏幕截图可以包括图像以及与用于生成屏幕截图的应用相关联的其他视觉元素。在一些实现中,熵分析器430可以确定屏幕截图上的图像熵以确定屏幕截图的哪些部分与图像对应。例如,屏幕截图的熵可以提供与屏幕截图内的图像的位置有关的信息,从而使得能够从屏幕截图中提取图像。在一些实现中,从屏幕截图提取图像包括生成表示已从屏幕截图提取的图像的单独的图像文件。
过程470可以包括从所提取的图像中识别水印(步骤474)。在一些实现中,可以通过水印检测器例如图4A所示的水印检测器435来提取水印。在一些实现中,水印可以是被配置成唯一地识别图像的任意信息。在一些实现中,水印可以是添加至图像的视觉标记,例如QR码或条形码。水印还可以是或可以包括任意其他形式的视觉代码例如字符串,或一组图像例如表情符号。在一些实现中,水印可以包括在水印的开始或结束处的预定字符或符号串,并且可以在对于每个水印唯一的其他字符串或图像之前或之后。例如,所有水印可以以一组通用的两个或更多个字符或符号开始,并且可以跟随附加字符或符号,该附加字符或符号对于它们各自的水印唯一。在这样的示例中,针对预定的一组字符或符号,可以由水印检测器例如图4A所示的水印检测器435通过扫描该图像来识别水印。在该组字符或符号被定位之后,水印检测器还可以确定在包括在水印中的预定一组字符之前或之后的附加字符或符号。在一些实现中,水印可以包括可以被称为前缀的第一组字符或符号以及可以被称为后缀的第二组字符或符号。前缀对于与不同图像相关联的多个水印可以是共用的。也就是说,两个或更多个不同的水印的前缀可以是相同的。相比之下,后缀在每个带水印图像中可以是唯一的。例如,水印可以总共包括六个字符,其中,前两个字符与共用前缀对应,并且后四个字符与唯一后缀对应。因此,一个水印可以由该组字符“*&1234”来表示,其中,“*&”是前缀,并且“1234”是后缀。与不同图像相关联的第二水印可以由该组字符“*&5678”来表示,其中,如在第一水印中那样,前缀再次是“*&”,但是第二水印的后缀“5678”与第一水印的后缀不同。因为前缀可以在多个水印上共用,所以水印检测器可以首先扫描图像以定位共用前缀。在共用前缀已经被识别后,水印检测器可以被进一步配置成扫描剩余的四个字符以确定所识别的水印的唯一后缀。在一些实现中,水印检测器可以包括例如光学字符识别的图像处理功能,以使得水印能够位于图像中(或在图像的边界周围)。本领域普通技术人员将会理解,上面讨论的示例仅仅是示例性的,并且在不脱离本公开内容的范围的情况下,上述示例的原理可以应用于水印的类型和形式的许多变型。例如,在一些实现中,前缀或后缀可以具有与上面讨论的长度不同的长度。另外,在一些实现中,后缀可以在多个图像中共用,而前缀对于每个不同的图像唯一。此外,在一些实现中,用于形成前缀和后缀的字符组可以不同于上述示例中的字符组。例如,在一些实现中,前缀和后缀可以各自包括字母、数字、特殊字符、符号、表情符号、图标或其他形式的图形内容的任意组合。
在一些实现中,水印可以是与图像相关联但不直接包括在图像中的视觉标记。例如,水印可以显示在图像的边界周围的区域中。在这样的示例中,水印可以被包括在图像的标题、说明或评论内。因此,水印检测器可以扫描图像以及图像的边界周围的区域以定位可以包括图像的标题、说明或评论中的字符、符号或表情符号的水印。
在一些其他实现中,图像的水印或标记对于图像的观看者可以是不可见的。例如,水印可以包括与图像相关联但不影响图像的外观的元数据。在另一示例中,可以将在与图像对应的数据内编码水印。例如,图像中的每个像素的最低有效位可以用于存储与图像的水印对应的信息。因此,与水印或标记对应的数据可能仅略微改变图像的外观,但对于观看显示设备上的图像的人来说不明显。在水印不是视觉标记的(例如上述那些)实现中,水印可以包括嵌入在图像数据中或与图像相关联的元数据中的代码。例如,代码可以是二进制代码,并且可以包括错误校验位。在一些实现中,水印检测器可以读取代码并且将代码翻译成另一种格式,例如可以与水印对应的人类可读字符串。水印检测器可以针对与水印格式对应的已知信息模式扫描图像。例如,水印检测器可以针对图像数据本身中的特定视觉标记或特定位模式扫描图像,以便从所提取的图像中识别水印。
过程470可以包括从所识别的水印识别链接(步骤476)。在一些实现中,可以通过在客户端设备上执行的屏幕截图链接应用或通过远离客户端设备的屏幕截图链接系统来识别链接。在一些实现中,可以由发布图像的公司将水印添加至图像。水印可以包括识别图像的信息以及与和图像相关联的链接有关的信息。因此,在一些实现中,可以容易地识别与图像相关联的链接,而不用将图像或水印与参考图像或参考水印进行比较。在其他实现中,可以存储一组参考水印,并且每个参考水印可以与相应的链接相关联。所识别的水印可以与该组参考水印进行比较。如果找到匹配,则可以将与匹配的参考水印对应的链接识别为与所识别的水印相关联的链接。在一些实现中,链接可以是到在客户端设备上执行的另一应用内的特定帖子的URL或“深度链接”。
过程470可以包括提供包括所识别的链接的通知(步骤478)。在一些实现中,通知可以在客户端设备本身上生成。在一些其他实现中,通知可以由屏幕截图链接系统远程地生成,并且经由通信接口提供给客户端设备。然后可以将通知显示给客户端设备的用户,该客户端设备的用户可以选择通知中包括的链接,以便查看与和该链接对应的图像相关联的其他内容。在一些实现中,通知可以通过客户端上的活动应用显示在客户端上。例如,如果当特定应用在客户端上活动时摄取屏幕截图,则可以如上讨论地处理屏幕截图,并且可以通过活动的应用显示通知。在一些实现中,通知可以是弹出通知。该通知可以包括如下文本,其向客户端的用户通知与最近捕获的屏幕截图相关联的链接已被识别。在一些实现中,链接可以显示在通知中。在一些其他实现中,用户可以选择要被引导至不同页面或应用的通知,其中在该不同页面或应用中显示相关联的链接。
图4E是用于基于图像的指纹来分析图像的过程480的流程图。简要概述,过程480可以包括从屏幕截图中提取图像(步骤482)。可以生成所识别和/或提取的图像的指纹(步骤484)。可以在图像的指纹与参考图像的指纹之间确定匹配(步骤486)。响应于确定该匹配,可以识别与图像相关联的链接(步骤488)。可以提供包括该链接的通知(步骤490)。
再次参照图4E,过程480可以包括在屏幕截图内识别和/或从屏幕截图中提取图像(步骤482)。例如,如上讨论的,屏幕截图可以包括图像以及与用于生成屏幕截图的应用相关联的其他视觉元素。在一些实现中,图像分析器例如图4A所示的图像分析器225可以从屏幕截图中识别或提取图像。在一些实现中,熵分析器430可以确定屏幕截图上的图像熵以确定屏幕截图的哪些部分与图像对应。例如,屏幕截图的熵可以提供与屏幕截图内的图像的位置有关的信息,从而使得能够从屏幕截图中提取图像。在一些实现中,从屏幕截图提取图像包括生成表示从屏幕截图提取的图像的单独的图像文件。
过程480可以包括生成所提取的图像的指纹(步骤484)。在一些实现中,指纹可以由指纹生成器例如图4A所示的指纹生成器440生成。指纹可以包括唯一识别图像的任意信息。在一些实现中,可以通过对与图像相关联的图像数据执行散列函数来生成指纹。在一些实现中,指纹可以是唯一地表示图像的位串,其中从图像生成指纹。
过程480可以包括确定图像的指纹与参考图像的指纹之间的匹配(步骤486)。在一些实现中,可以通过屏幕截图链接应用例如在如图4B所示的客户端102上执行的屏幕截图链接应用215来确定该匹配。在一些其他实现中,可以由远程屏幕截图链接系统例如图4B所示的屏幕截图链接系统203来确定匹配。在一些实现中,由公司发布的图像可以被存储在数据库中。可以处理图像以为每个图像生成参考指纹,并且链接可以与每个参考指纹相关联。当为所提取的图像生成指纹时,可以将指纹与参考指纹进行比较。
过程480可以包括响应于确定匹配来识别与图像相关联的链接(步骤488)。在一些实现中,可以通过在客户端设备上执行的屏幕截图链接应用或通过远离客户端设备的屏幕截图链接系统来识别链接。在一些实现中,与参考图像对应的链接可以被存储在数据库中。因为步骤486中确定的指纹匹配确保图像与参考图像相同,所以与所匹配的参考图像相关联的链接也应当与初始图像相关联。
过程480可以包括提供包括所识别的链接的通知(步骤490)。在一些其他实现中,通知可以由屏幕截图链接系统远程地生成,并且经由通信接口提供给客户端设备。在一些实现中,通知可以在客户端设备本身上生成。然后可以将通知显示给客户端设备的用户,该客户端设备的用户可以选择通知中包括的链接,以便查看与和该链接对应的图像相关联的其他内容。
现在参照图4F,图4F是用于分析包括图像和预定标记的屏幕截图以访问资源的过程492的流程图。简要概述,从存储装置中访问屏幕截图(步骤494)。然后检测屏幕截图中包括的预定标记(步骤495)。可以从所识别的预定标记中识别到资源的链接(步骤496)。然后经由链接访问该资源(步骤497)。
更详细地,过程492可以包括从存储装置中访问屏幕截图(步骤494)。在一些实现中,在客户端设备上执行的屏幕截图链接应用可以访问来自客户端设备的存储装置的屏幕截图。可以在客户端设备上执行的多个应用之间共享存储装置。存储装置可以是客户端设备的存储器或客户端设备的任意其他类型的存储部件。客户端设备可以包括一个或更多个计算机可执行指令,所述指令在客户端设备上执行时使客户端设备摄取显示在客户端设备的屏幕上的内容的屏幕截图。在一些实现中,客户端设备的屏幕截图捕获功能可以捕获屏幕截图。在一些实现中,客户端设备可以响应于在客户端设备上接收预定输入命令来捕获屏幕截图。在一些实现中,屏幕截图可以包括图像和预定标记。该图像可以是由第三方例如广告商、零售商或用户上传至网络资源的图像。该图像可以是上传至社交媒体网站的图像。在一些实现中,屏幕截图还可以包括图像周围或以其他方式与图像相邻的网络资源的其他区域。在一些实现中,网络资源的其他区域可以包括可以由屏幕截图链接系统使用的文本字符、图标、视觉符号、图标或其他图形组件。在一些实现中,上传图像的一方可以上传具有可由屏幕截图链接应用检测到的预定标记的图像。在一些实现中,图像可以嵌入预定标记,以这样的方式,屏幕截图链接应用可以检测标记。在一些实现中,图像可以嵌入预定标记,以这样的方式,屏幕截图链接应用可以使用图像分析在视觉上检测标记。在一些实现中,预定标记包括在屏幕截图被客户端设备捕获之前被添加至屏幕截图中包括的图像的视觉标记。
过程492可以包括检测在屏幕截图中包括的预定标记(步骤495)。在一些实现中,屏幕截图链接应用可以通过从屏幕截图中提取图像并随后从所提取的图像中识别标记来检测屏幕截图中包括的预定标记(步骤474)。在一些实现中,可以通过水印检测器例如图4A所示的水印检测器435来提取或通过该水印检测器以其他方式识别标记。在一些实现中,标记可以是被配置成唯一地识别屏幕截图中包括的图像的任意信息。在一些实现中,标记可以是添加至图像的视觉标记,例如QR码或条形码。标记还可以是或者可以包括任意其他形式的视觉代码例如字符串,或一组图像例如表情符号。在一些实现中,标记可以包括在标记的开始或结束处的预定字符或符号串,并且可以在对于每个标记唯一的其他字符串或图像之前或之后。例如,所有标记可以以一组通用的两个或更多个字符或符号开始,并且可以跟随附加字符或符号,其中附加字符或符号对于它们各自的标记唯一。在这样的示例中,针对预定的一组字符或符号,可以通过扫描图像或屏幕截图来识别标记。
过程492可以包括从所识别的预定标记中识别到资源的链接(步骤496)。在一些实现中,可以通过在客户端设备上执行的屏幕截图链接应用或通过远离客户端设备的屏幕截图链接系统来识别到资源的链接。在一些实现中,屏幕截图链接应用或屏幕截图链接系统可以维护多个参考标记。屏幕截图链接应用或屏幕截图链接系统可以在将参考标记映射至至少一个资源的标记数据库中维护多个参考标记。在一些实现中,数据库可以包括每个参考图像到到资源的链接的映射。以这种方式,当从屏幕截图中识别出预定标记时,屏幕截图链接系统或在客户端设备上执行的屏幕截图链接应用可以确定预定标记与存储在标记数据库中的多个参考标记之一的匹配。屏幕截图链接应用或屏幕截图链接系统可以分析预定标记以生成图像的散列或一些其他计算值,并且将预定标记的散列或计算值与参考标记的计算值进行比较。如果找到预定标记的计算值与参考标记之一的匹配,则屏幕截图链接应用或屏幕截图链接系统确定预定标记与参考标记匹配。屏幕截图链接应用或屏幕截图链接系统然后可以识别到资源的链接或URL,其中所匹配的参考标记在标记数据库中被映射至该资源。在一些实现中,链接可以是到在客户端设备上执行的另一应用内的特定帖子的URL或“深度链接”。屏幕截图链接应用或屏幕截图链接系统然后可以选择到资源的链接,该资源被映射至所匹配的参考标记。
过程492可以包括经由链接访问资源(步骤497)。在一些实现中,响应于屏幕截图链接应用识别链接并向客户端设备(或在客户端设备上执行的应用)发送指令以经由链接访问资源,客户端设备可以经由链接访问资源。在一些实现中,链接可以是到资源的URL,在这种情况下,屏幕截图链接应用可以生成使客户端设备上的浏览器经由URL访问资源的请求。在一些实现中,链接可以是到在客户端设备上执行的特定应用的深度链接。在一些这样的实现中,屏幕截图链接应用可以生成访问资源的请求,其中该链接经由特定应用被映射至该资源。在一些实现中,屏幕截图链接应用可以生成在客户端设备上显示的可操作对象。该可操作对象可以被配置成响应于客户端设备的用户对可操作对象采取动作而使客户端设备访问链接被映射至的资源。动作的示例可以包括点击、轻击或可以由客户端设备接收的任意其他输入。
E.向用户提供产品推荐
捕获描绘特定类型产品的屏幕截图的用户可能对其他不相关类型的产品感兴趣。然而,用户可能会对与在用户捕获的屏幕截图中描绘的那些产品类似的产品更感兴趣。因此,用户可能更有可能购买与由用户捕获的屏幕截图中描绘的产品类似的产品。在一些实现中,用户的屏幕截图和购买决策以及其他用户的屏幕截图和购买决策可以形成对用户的产品推荐的基础。
本公开内容的一个方面可以在用于向用户提供产品推荐的方法中实现。为了向一个或更多个用户提供推荐,屏幕截图链接系统可以构建一个或更多个推荐引擎。推荐引擎可以依靠处理输入数据的模型来以推荐的形式生成输出数据。输入数据可以被称为训练数据,其被提供给推荐引擎以训练模型。模型可以是适应性和不断学习的。
在一些实现中,推荐引擎可以被配置成基于用户的屏幕截图来确定对用户的推荐。推荐引擎可以确定与用户的屏幕截图中识别的产品类似的产品的推荐。在一些实现中,推荐引擎可以依靠推荐引擎确定的与由用户捕获的屏幕截图类似的其他用户的屏幕截图。以这种方式,推荐引擎可以基于由屏幕截图链接系统的其他用户捕获的屏幕截图中包括的屏幕截图和图像来生成对用户的产品推荐。
在一些实现中,推荐引擎可以被配置成基于由每个用户捕获的屏幕截图来识别彼此相似的用户。以这种方式,推荐引擎可以推荐与该用户类似的用户表示出兴趣的产品。类似地,广告商或其他内容提供者可以选择生成针对彼此相似且可能对广告商的产品感兴趣的用户的营销或广告活动。推荐引擎可以被配置成基于每个用户的屏幕截图来生成识别彼此类似的用户的模式。
屏幕截图链接系统通过分析特定用户的屏幕截图可以获得与用户有关的情报。为了获得与用户有关的情报,屏幕截图链接系统可以扫描图像数据库,该数据库包括由用户的设备截取的屏幕截图。在一些实现中,屏幕截图链接系统可以扫描图像数据库以识别如下数据,其包括但不限于指示屏幕截图被捕获的日期和时间的数据、捕获的屏幕截图的数量、屏幕截图被捕获的频率、以及与屏幕截图相关联的任意地理位置信息等。
如上所述,屏幕截图链接系统可以分析屏幕截图以识别在屏幕截图被捕获时设备上活动的应用的标识以及屏幕截图中包括的图像中包括的信息。基于经由屏幕截图识别的应用,屏幕截图链接系统可以确定应用的活动的表现形式。也就是说,屏幕截图链接系统可以识别用户参与的应用的类型、参与的频率等。在一些实现中,屏幕截图链接系统可以从经由屏幕截图识别的应用确定具有所识别的应用的用户的活动。
屏幕截图链接系统可以进一步用与屏幕截图链接系统相关联的一个或更多个存储装置监测由用户执行的活动。屏幕截图链接系统可以识别屏幕截图中包括的图像,并且基于所识别的图像来确定用户的购买意图。如果屏幕截图链接系统确定用户已经捕获大量包括鞋的图像的屏幕截图,则屏幕截图链接系统可以确定用户可能有购买鞋子的意图。该意图可以用来随后为用户提供额外内容的建议。此外,屏幕截图链接系统可以使用该意图,以使得销售鞋的广告商能够通过提供与鞋子有关的相关内容以将用户作为目标。
屏幕截图链接系统可以被配置成识别与屏幕截图中包括的图像相关联的品牌。屏幕截图链接系统还可以识别图像中包括的特定产品。在一些实现中,如上所述,屏幕截图链接系统可以通过将图像与参考图像进行匹配来识别特定的产品和品牌。屏幕截图链接系统可以基于图像中识别的品牌和产品来进一步确定与产品有关的细节,包括产品的价格门槛以及产品所属的类别。例如,屏幕截图链接系统可以识别与鞋有关的多个图像。屏幕截图链接系统可以进一步确定具体的鞋,并且使用第三方数据或从由屏幕截图链接系统主导的数据库检索到的信息确定鞋的价格。基于鞋子的价格和鞋子的品牌,屏幕截图链接系统可以了解用户的偏好和购物习惯,以及能够了解用户感兴趣或可能感兴趣的产品。
屏幕截图链接系统可以被配置成生成模型以了解用户以及生成推荐引擎。屏幕截图链接系统可以生成对于各个用户特定的用户特定模型。该模型可以被配置成确定用户可能感兴趣的产品的类型、产品的价格范围和产品的品牌等。在一些实现中,屏幕截图链接系统还可以生成对于各个品牌特定的品牌特定模型。屏幕截图链接系统可以识别与特定品牌对应的图像,并且识别捕获这些图像的屏幕截图的用户。屏幕截图链接系统然后可以基于捕获与品牌有关的图像的屏幕截图的用户的活动来为品牌生成品牌特定模型。
根据一个方面,可以基于与多个用户相关联的屏幕截图来为多个用户生成第一多个用户简档。可以确定用户简档所属的多个类别。每个用户简档可以被分配到多个类别中的至少一个。可以为每个类别构建推荐模型。可以识别未包括在第一多个用户简档中的第二用户简档。可以识别第二用户简档应当分配至的类别。可以基于第二用户简档被分配至的类别向第二用户提供产品推荐。
根据另一方面,屏幕截图链接系统可以接收由用户的设备捕获的多个屏幕截图。屏幕截图链接系统可以识别屏幕截图中包括的图像。屏幕截图链接系统可以从图像中识别图像所对应的一种或更多种类别。在一些实现中,类别可以基于主题,例如服装、家具和电子设备等。在一些实现中,类别可以基于品牌。在一些实现中,类别可以基于其他属性。响应于确定屏幕截图所属的类别,屏幕截图链接系统可以基于屏幕截图的类别来生成用户简档。经由使用来自大量用户的数据的推荐引擎,屏幕截图链接系统可以基于用户简档与其他用户的用户简档的比较和与其他用户对应的屏幕截图来提供产品推荐(或通常为内容)。
现在参照图5A,示出了描绘可以在图2A的系统中使用的内容推荐提供器231的实施方式的框图。内容推荐提供器231被示出为在服务器106上执行。然而,在其他实现中,内容推荐提供器231可以替代地在客户端102上执行。简要概述,内容推荐提供器231包括品牌监测器510、价格监测器515、产品类别监测器520、时间/位置监测器525、模型构建器530和推荐生成器535。
品牌监测器510可以监测和记录与品牌对应的信息,该品牌与由各种客户端设备例如客户端设备102的用户捕获的屏幕截图的图像相关联。例如,品牌监测器510可以通过参考发布与屏幕截图相关联的图像的公司来确定与屏幕截图相关联的品牌。该品牌可以是与屏幕截图内的图像中示出的产品对应的品牌。在一些实现中,每当客户端设备例如客户端设备102发送要由屏幕截图链接系统203处理的图像数据时,可以通知内容推荐提供器231。图像数据可以包括水印、指纹、图像或屏幕截图的GUID。在品牌监测器510确定与屏幕截图相关联的品牌之后,可以将与该品牌对应的信息存储在与捕获屏幕截图的特定客户端设备相关联的用户简档中。在一些实现中,图2A所示的用户账户管理器22可以将品牌信息存储在服务器106上的相应用户简档中,例如存储在数据库232中。
价格监测器515可以监测和记录与价格对应的信息,该价格与由各种客户端设备例如客户端设备102的用户捕获的屏幕截图的图像相关联。例如,价格监测器515可以确定与屏幕截图中示出的产品相关联的价格。在一些实现中,价格监测器515可以确定与屏幕截图相关联的价格范围。例如,价格范围可以是包括屏幕截图中示出的产品的实际价格的范围。在其他实现中,价格监测器515可以确定屏幕截图中的产品的具体价格。在价格监测器515确定与屏幕截图相关联的价格之后,可以将与价格对应的信息存储在与捕获屏幕截图的特定客户端设备相关联的用户简档中。在一些实现中,图2A所示的用户账户管理器224可以将价格信息存储在服务器106上的相应用户简档中,例如存储在数据库232中。
产品类别监测器520可以监测和记录与产品类别对应的信息,该产品类别与由各种客户端设备例如客户端设备102的用户捕获的屏幕截图的图像相关联。例如,产品类别监测器520可以确定与屏幕截图中示出的产品相关联的产品类别。在一些实现中,产品类别可以是广泛的类别,例如“服装”。在其他实现中,产品类别可以是较窄的类别,例如“男装”或“女装”。在一些实现中,产品类别监测器520可以确定屏幕截图的多于一个类别。在产品类别监测器520确定与屏幕截图相关联的产品类别之后,可以将与产品类别对应的信息存储在与捕获屏幕截图的特定客户端设备相关联的用户简档中。在一些实现中,图2A所示的用户账户管理器224可以将产品类别信息存储在服务器106上的相应用户简档中,例如存储在数据库232中。
时间/位置监测器520可以监测和记录与时间和/或位置对应的信息,该时间和/或位置与由各种客户端设备例如客户端设备102的用户捕获的屏幕截图相关联。例如,时间/位置监测器520可以确定特定屏幕截图被捕获的时间或屏幕截图被捕获的位置。在一些实现中,可以基于与屏幕截图相关联的元数据来确定时间和位置信息。例如,与屏幕截图对应的图像文件可以包括表示图像文件被创建的时间的时间戳。类似地,与屏幕截图对应的图像文件可以包括表示在创建图像文件时的客户端设备的大概位置的GPS信息。在时间/位置监测器520确定与屏幕截图相关联的时间和位置信息之后,可以将与时间和位置对应的信息存储在与捕获屏幕截图的特定客户端设备相关联的用户简档中。在一些实现中,图2A所示的用户账户管理器224可以将时间和位置信息存储在服务器106上的相应用户简档中,例如存储在数据库232中。
模型构建器530可以生成与各种类别相关联的模型。可以建模的类别可以包括品牌、价格、产品类别和地理位置类别。在一些实现中,模型构建器530可以基于存储在多个用户的用户简档中的信息来构建模型。模型构建器530可以识别捕获类似产品的屏幕截图的用户的趋势。例如,模型构建器530可以确定特定价格范围内的流行产品、特定品牌内的流行产品、相对于其他品牌流行的品牌、以及流行产品类别。在一些实现中,模型构建器530可以基于多于一个类别来生成模型。例如,模型构建器530可以确定,来自某个品牌的产品在捕获给定价格范围内的产品的屏幕截图的用户中也特别受欢迎。在一些实现中,模型构建器530可以为每个唯一用户构建单独的模型,其中每一个唯一用户的客户端102设备向服务器106发送屏幕截图。例如,用户的模型可以部分地基于显出有类似产品偏好的其他用户的屏幕截图中示出的产品。在一些实现中,模型可以包括或可以基于通用模板。例如,模型模板可以包括各种属性和与这些属性相关联的值。在一些实现中,属性可以包括品牌、产品或产品类别。每个属性的值可以指示要分配给该特定属性的权重。因此,可以基于在各个客户端设备上捕获的屏幕截图根据客户端设备的每个用户的偏好来定制通用模型模板。例如,与属性相关联的值可以响应于确定这些属性在客户端设备上的屏幕截图中更普遍而增加,并且可以响应于确定这些属性在客户端设备上的屏幕截图中较不普遍而减少。
推荐生成器535可以向客户端102的用户推荐产品。在一些实现中,推荐生成器535可以使用由模型构建器530提供的信息来生成推荐。例如,推荐生成器535可以基于针对该用户的模型从模型构建器530接收与被预测为特定用户感兴趣的产品对应的信息。在一些实现中,推荐生成器535还可以生成包括推荐的通知,并且可以将通知发送至相应的客户端102。
图5B是用于显示在客户端设备的屏幕截图中找到的产品的示例图形用户界面。如上讨论的,图形用户界面基于从屏幕截图中提取的图像来显示产品。用户可以选择图5B所示的图形用户界面的顶部处的“类似”按钮以被引导至图5C所示的图形用户界面。
图5C是用于显示与在客户端设备的屏幕截图中找到的那些产品类似的产品的示例图形用户界面。在一些实现中,图5C所示的图形用户界面可以显示基于与客户端设备的用户相关联的模型而选择的产品,其中在客户端设备上显示图形用户界面。例如,对于客户端设备的屏幕截图中所示的产品,可以将类似产品识别为具有类似价格、类似品牌或类似产品类别的产品。如上讨论的,可以由品牌监测器510、价格监测器515和产品类别监测器520收集这些信息,并且可以由模型构建器530建模这些信息。在一些实现中,类似的产品可以由推荐生成器535基于由模型构建器530构建的模型来识别,并且被发送至客户端设备以在图5C的图形用户界面中显示。用户可以选择图5C所示的图形用户界面的顶部的“截图”按钮以被引导至图5D所示的图形用户界面。图5D是用于显示在客户端设备上存储的屏幕截图的图形用户界面。在一些实现中,可以从数据库例如图2A所示的图像数据库210中检索屏幕截图。在一些实现中,显示在图5C所示的图形用户界面中的产品可以由推荐引擎识别,如下面结合图5E进一步描述的。
图5E是用于向用户提供产品推荐的过程560的流程图。简要概述,可以基于与多个用户相关联的屏幕截图为多个用户生成第一多个用户简档(步骤562)。可以确定用户简档所属的多个类别(步骤564)。每个用户简档可以被分配到多个类别中的至少一个(步骤566)。可以为每个类别构建推荐模型(步骤568)。可以识别未包括在第一多个用户简档中的第二用户简档,并且可以识别第二用户简档应当被分配至的类别(步骤570)。可以基于第二用户简档被分配至的类别向第二用户提供产品推荐(步骤572)。
再次参照图5E,过程560可以包括使用与多个用户相关联的屏幕截图来为多个用户生成第一多个用户简档(步骤562)。在一些实现中,用户简档可以由图2A所示的用户账户管理器224生成。例如,当屏幕截图或其他图像数据被发送至屏幕截图链接系统时,与屏幕截图中所示的产品有关的信息可以存储在生成屏幕截图的用户的用户简档中。在一些实现中,信息可以包括与和屏幕截图中示出的产品相关联的品牌、价格或价格范围、产品类别、时间戳以及位置数据有关的信息。当用户继续向屏幕截图链接系统发送附加图像数据时,可以增加该用户的用户简档以包括基于新接收的屏幕截图的附加产品信息。
过程560可以包括从所识别的用户简档中确定用户简档所属的多个类别(步骤564)。在一些实现中,类别可以由图5A所示的产品类别监测器520来确定。类别可以包括品牌、价格或产品类别。每个用户简档可以被分配到多个类别中的至少一个(步骤566)。在一些实现中,用户账户管理员可以将用户简档分配到各自的类别。在一些实现中,可以基于用户简档中的信息将用户简档分配到类别。例如,如果用户简档指示用户经常捕获显示运动鞋的屏幕截图,则可以将用户简档添加至“运动鞋”类别。在一些实现中,用户简档也可以被添加至其他类别。其他类别可以与第一类别重叠,并且可以比第一类别更宽或更窄。例如,添加至“运动鞋”类别的用户简档也可以被添加至更广泛的“鞋类”类别中。也可以基于它们的屏幕截图中出现的产品的品牌和价格将用户简档添加至其他类别。
过程560可以包括为每种类别构建推荐模型(步骤568)。在某些实现中,模型构建器可以为每种类别构建模型。例如,可以基于存储在多个用户的用户简档中的信息来构建模型。模型构建器可以识别捕获属于特定类别的屏幕截图的用户的趋势。例如,模型构建器可以确定特定价格范围内的流行产品、特定品牌内的流行产品、相对于其他品牌流行的品牌、以及流行产品类别。在一些实现中,模型构建器530可以基于多于一个类别来生成模型。例如,模型构建器530可以确定在被分配到特定价格类别的用户中来自某个品牌的产品也特别流行。
模型构建器530可以被配置成使用第一组已知用户来生成模型。模型构建器530可以接收与多个用户相关联的信息作为输入。该信息可以包括由每个用户捕获的屏幕截图、他们的人口统计信息、他们的偏好、喜欢和不喜欢、以及从用户推断或从用户接收的其他数据。另外,模型构建器可以接收与每个用户相关联的类别信息。类别信息可以包括将用户分类为一个或更多个类别例如品牌、服装类型、时尚类型等的信息。然后,模型构建器可以分析每个用户的每个屏幕截图中,以基于他们的屏幕截图以及他们已知的类别、偏好、喜欢和不喜欢来确定每个用户的趋势。
过程560可以包括针对未被包括在第一多个用户简档中的第二用户简档识别第二用户简档应当被分配至的类别(步骤570)。在一些实现中,第二用户的类别可以由图5A所示的产品类别监测器520来确定。在一些实现中,第二用户简档的类别可以基于由第二用户捕获的屏幕截图中示出的产品来确定。例如,可以分析第二用户的屏幕截图以确定第二用户可能感兴趣的类别,并且然后可以将第二用户分配到该类别。在一些实现中,第二用户可以被分配到多于一种类别。
在一些实现中,模型构建器可以识别第二用户的屏幕截图和其他简档信息。基于屏幕截图包括的图像和简档信息,模型构建器可以基于图像和简档信息的相似性将第二用户与第一用户中的一个或更多个匹配。例如,如果第二用户的屏幕截图中的图像与包括在第一多个用户的子集的屏幕截图中的图像类似,则可以确定第二用户与第一多个用户的子集相似。在一些实现中,模型构建器可以基于从图像中提取的用户的偏好和信息来为每个用户生成特征矢量,并且使用算法基于特征矢量彼此的距离来确定用户簇。
过程560可以包括基于第二用户简档被分配至的类别向第二用户提供产品推荐(步骤572)。在一些实现中,产品推荐可以由图5A所示的推荐生成器535提供。在一些实现中,可以基于与第二用户被分配至的类别相关联的模型来选择产品推荐。例如,第二个用户可以被分配至“运动装”类别。该类别的模型可以指示分配到该类别的用户通常对特定品牌例如耐克感兴趣。因此,即使第二用户从未捕获到示出耐克产品的屏幕截图,也可以向第二用户提供耐克产品的推荐。在一些实现中,可以通过与以上结合图5C讨论的图形用户界面类似的图形用户界面在第二用户的客户端设备上提供推荐。
在其他实现中,屏幕截图链接系统可以接收由用户的设备捕获的多个屏幕截图。屏幕截图链接系统可以识别屏幕截图中包括的图像。屏幕截图链接系统可以从图像中识别图像对应的一种或更多种类别。在一些实现中,类别可以基于主题,例如服装、家具或电子设备等。在一些实现中,类别可以基于品牌。在一些实现中,类别可以基于其他属性。响应于确定屏幕截图所属的类别,屏幕截图链接系统可以基于屏幕截图的类别生成用户简档。经由使用来自大量用户的数据的推荐引擎,屏幕截图链接系统可以基于用户的简档与其他用户的用户简档的比较和与其他用户对应的屏幕截图来提供产品(或通常为内容)的推荐。
在一些实现中,每个图像可以用一个或更多个标签分类。这些标签可以基于从图像的发布者接收的信息来提供。在一些实现中,可以使用第三方资源生成标签。在一些实现中,可以从由屏幕截图链接系统的用户接收的信息中生成标签。在一些实现中,屏幕截图链接系统可以分析用户的每个图像并且确定与每个图像相关联的标签或属性。屏幕截图链接系统然后可以基于这些属性来生成用户简档。用户简档可以是代表用户的多属性矢量。然后可以使用矢量将用户分类为一个或更多个类别。在一些实现中,屏幕截图链接系统可以基于属性被标记到用户的屏幕截图中包括的图像的次数来确定每个属性的强度。属性的示例可以包括产品项目、产品颜色、产品形状、产品价格、产品品牌等。应当理解,图像可以包括与各种行业对应的产品。尽管本文所示的示例涉及服装,但是产品可以包括家具产品、电子产品、厨房用具、家庭用品、汽车等。另外,每种不同类型的产品可以具有不同的适当属性。例如,对于汽车,汽车的类型可以是SUV、厢型车、轿车或敞篷车等,而对于家具,家具的类型可以包括沙发、桌子、椅子、餐桌或搁脚凳等。因此,属性可以基于图像中识别的产品类型而改变。这样,在一些实现中,推荐引擎可以仅基于与特定产品例如汽车、家具、服装或这样的产品类型的子集对应的图像来生成对用户的推荐。
在一些实现中,屏幕截图链接系统可以能够响应于提供给用户的链接来确定用户的转换。转换可以影响屏幕截图链接系统的推荐引擎,因为转换可以提供比屏幕截图更强大的偏好信号。使用表示用户的矢量,推荐引擎可以识别一个或更多个产品或内容,其中该推荐确定该一个或更多个产品或内容与用户有关。然后将所识别的产品或内容提供给用户,并且响应于用户对产品或内容的动作,推荐引擎可以更新用户的属性的强度。
在一些实现中,屏幕截图链接系统可以基于表示用户的多属性矢量来确定趋势。例如,如果许多用户的多属性矢量指示特定品牌中的强属性,则推荐引擎可以确定该特定品牌流行。类似地,如果许多用户的多属性矢量指示特定颜色中的强属性,则推荐引擎可以确定该特定颜色流行。虽然已经参照具体实施方式具体示出和描述了本发明,但是本领域技术人员应当理解,在不脱离本公开内容中描述的本发明的精神和范围的情况下,可以在其中进行形式和细节上的各种改变。
在一些实现中,过程560可以包括不同的或另外的步骤,并且图5E所示的步骤也可以被修改,以便向用户提供产品推荐。例如,在一些实现中,推荐生成器可以使用各种机器学习技术来提供推荐。在一些实现中,推荐生成器可以基于来自用户的反馈来调整用于提供推荐的模型。因此,基于用户对过去推荐的响应(例如,用户是表达了兴趣还是购买了过去推荐的产品),可以改善对用户的后续推荐。在一些实现中,推荐生成器可以通过基于用户的过去行为调整用于生成推荐的模型来向用户提供个性化推荐。