我完全有理由相信,电脑病毒可以在你的手电筒上运行:)
那可是需要海量存储的遥控器哇!即使是用8G的Flash卡之类的东西也存不了多少啊!而如果用微型硬盘,又不经摔啊,就不能给儿子玩了,还耗电.
只能把硬盘装到电视机里了,既不用担心摔坏,也不用担心电源,还可以用普通的大硬盘,hoho,便宜哇!
嗯,这可能是一项了不起的发明哈!
呵呵,后来我仔细分析了一下,其实也并不难实现,我们一起来分析一下吧:
识别策略:
假如要识别一段广告,我们取10帧画面,每帧画面取10个点,每个点用最简单的8位(1字节)进行量化再存储,暂且称之为这段广告的\"视频指纹\"吧,这样,每记忆一段广告需要10(帧)×10(点)×1(字节)×3(RGB三色)=300个字节,这样的话,一个64KB的存储器都能存储218个节目的\"视频指纹\",如果每帧画面取一个8位的声音特征,那识别这段广告还要10个字节,也就是说,每段广告的视频指纹加音频指纹(复合指纹)的体积是10×10×3+10=310字节,那么64KB就能存储211条广告的复合指纹.
按照我国采用的PAL制式的电视信号格式,每秒钟有50帧图像,而且是隔行扫描所生成的——这是电视制式决定的,和电视机这个终端如何最终处理没有关系——而据刚才的分析,每帧图像都需要进行量化采样,就是说,每秒钟需要50(帧)×10(点)×3(字节)+50=1550的量化数目.
在存储上和数据量化上,完全没有任何技术难度,不管是用FlashROM,或者铁电存储器,或者RAM,都不成问题.
匹配过程:
首先,假设一下,我们在半年后,已经识别存储了200条不喜欢的广告,那么,处理器就需要在这200项复合指纹中逐个比对,看是否有复合条件的.
第二,我们都知道,电视的画面和声音都是连续的,因此就需要采用\"移位校对\"的方式,而不能是校对完第一个10帧之后,把第11帧当作第二次校对的第1帧,因为那个广告可能会从第2帧或者第3帧开始才满足所记录的指纹,也就是说,每帧图像都要当一次\"第一帧\".
第三,因为画面和声音的连续性,因此我们并不能预测接下来会收到怎样的信号,所以每次只需要采集1帧的数据,并到数据库里去进行匹配.
因此,综上所述,我们所需要实现的功能实际上就是这个样子:
1.每帧画面采集31个数据,30个视频数据和1个声音数据;
2.用这31个数据,到数据库里去找,只找第1帧,看看是否有匹配的.如果有,则设置一个标志,表示\"有可疑的家伙\";
3.采集下一帧的数据,也是31个字节,然后看是否有\"可疑\"标志,如果有,则直接去匹配那个打了标记的记录的第2帧,如果还匹配,那就保持标志不动,继续下一帧;如果不匹配了,就清掉那个标志,然后跳到第2步.
上面这三条,就是全部的匹配过程了.
实际上,惟一的要求,就是上面的这第2和第3步,需要在前一帧结束后,和后一帧开始前,全部完成,否则后面的工作就会赶不上趟了.
如果在加上一些其它的处理,比如说匹配程度的计算,是90%相似就判定为匹配,还是95%相似,这需要进行浮点计算,对处理器的运算能力要求就会更高一点,但这在技术上也基本不成问题.
惟一的问题是,怎样去保证,记录时候的采样点,和匹配时的采样点完全重合?
我们知道,PAL的行频是15625Hz,也就是说,每秒钟有15625行的信号会经过采样元件的\"门口\",那么如何在这么多的信号中采集到合适的点呢?
假设:我们把每帧图像(PAL标准的图像长宽比是4:3)分成240(线)×320(每行的数点),那就是76800个点(注意,这是人为\"分\"出来的点,在实际的信号中并没有这样的点,而是一个连续变化的模拟量,而正因为是连续变化的模拟量,所以偏差哪怕一丁点,结果也会有所不同),这是1秒钟的1/50的时间里所经过的点,时间是20毫秒,所以每个点的持续时间就是≈0.26微秒,稍微多一点点,但在设计的时候必须要大于这个时间,所以用0.25微秒基本上够用了,这个时间是4兆赫频率的一个周期的时间.
但是考虑到定时的精确性,以及前后两个\"点\"之间的持续性,因此采样的时间只能是这个\"点\"的持续时间的1/3甚至1/4,那么采样的时间就是0.065~0.08微秒之间,就是12.5MHz~15.38MHz.
这个时间对于8位的转换器来说是很容易实现的.
每一行扫描的时间是64微秒,而且每两行之间会有一个回扫动作,其实就可以利用这个回扫动作来作为时间基准,这样的话,从64微秒去定义一个0.065微秒,也就只有不到1000的分隔了,累积误差就会小许多了.
如果,每个点都采集一次声音信号,那么每个点的数据就刚好是8×4=32位,很适合用32位的处理器来处理,虽然采集这么多声音信号没有太多意义,而且会造成所能存储的广告条数减少(64KB约能存163条),但163条也大概没人可以用完.即使用32KB的存储器,也能存82条,呵呵,足够了.
综上所述,采用32位的ARM7或者DSP芯片,加上数据转换芯片,再加上并行接口的32位高速RAM或者铁电存储器(只能用这两者,其它的速度达不到),以及用于保持RAM内容的附加电源,还有一些辅助的电路(比如信号调节等等),就可以组成LZ所说的系统硬件了,写个相应的程序就能实现LZ所说的功能了.
这样的一套东西,成本也就百来块钱RMB,量大的话还会少.
当然,这样的东西,还是只适合装在电视机里面,而基本上不太适合装在遥控器里.
还有一个问题,就是遇到匹配的广告之后的处理策略,是换台呢,还是蓝屏呢?
当然不大可能蓝屏吧,呵呵,用户会以为出故障了.
那么如果换台的话,假如恰好遇到另外一条恶心广告的后半段呢?
比如说,一条广告10秒,第一次看的时候,过了两秒多才按下遥控器上的\"广告\"键,那么每次遇到这条广告就都需要先播放两秒多才能被识别,进而换台,而如果所换到的那个台,刚好是同一条广告的第4秒呢?呵呵,怎么处理?
上一个帖子所说的只采集了10个连续的帧,对其它的帧是没有做处理的,而10帧画面的总时间也就0.2秒啊!
如果按下开始采集,直到松开按钮停止采集,那么存储空间还是会成问题,比如遇到第9楼说的那个广告,持续时间很长的那种……
而如果不连续采集多个帧,又容易造成误判或者不判……
谢谢五毒散的精彩回复!仅就字数而言,此回复在科创历史上也是十分罕见的。当然技术含量更是过硬!很高兴能学习到这么多有用的知识,呵呵!
楼上提到了很多我也无法解决的技术细节,我就不班门弄斧了。下面只针对楼上的最后一个问题提一点我的想法:遇到匹配的广告之后可以设定多种操作,如静音、字幕提示、显示节目选择画面(这个功能数字电视机上有,类似于WIN XP里的缩略图功能)、换台、显示设定画面等。还可以设定自动返回的功能,也就是在广告播放完毕后自动返回该频道。为了减少手工操作,自动返回功能默认返回时间为10-20秒,也可以进行人工设定。
关于延迟的问题我完全没有想到,遇到这种问题可以通过下列方法解决:
设定提前时间,也就是在广告开始前就自动换台!先别笑,这并不是说要采用时间隧道之类的技术,而是利用电视节目播放时间的规律性进行的这样一种设定,比如你在设定好一个恶心的广告之后,电视机自然会记录这个广告所播出的时间,如19:57:22。那么你就可以设定(或系统默认)提前2秒钟进行换台动作。下次当电视机在09:14:06再次发现同样的广告时,就会存储该时间点,在第二天的09:14:04自动换台。当该广告到期更换后,该换台操作记录则自动删除。
如果设定的匹配操作是换台,而且换台后恰好又赶到了一个讨厌的广告,那么这段时间也会被记录。如果换台目标频道和当前播放频道相同,则自动采取其它操作。
存储频道数量我认为不应当太多,以50个以内为宜,10个足矣。因为一般人经常看的频道不会超过10个。需要回避的广告也在10个左右,如果设定多了,在电视节目改版后,或更换广告后就会造成非正常的播放断带(因为电视机无法知道未缴活频道的播放内容),如果设定数量本身就有限制,那么老旧的名单就会在一定时间内自然更新,免去了手动删除、整理记录的麻烦。
呵呵,谢谢BZ的错爱,并对给我加的技术分及金币表示感谢^_^
关于匹配之后的处理策略,当然可以设置为可以想到和可以实现的任何方式,这一点其实并不复杂和麻烦.
至于换台后遇到广告的后半截,我设想能否这样,当看到一条讨厌的广告后,用户按下\"广告\"键不松,在这期间,每隔一段时间(比如每一秒或两秒)采集几个连续帧,作为整条广告的指纹——直到该广告结束.
这样的话,只需要第一次完整地看完整条广告,但是以后匹配到该广告之后,即使换台后遇到它的后半截,也同样可以被匹配上,进而进行相关操作.
现代图像处理里面可以从基带数字信号中抽取一个相关函数,从而根据极值求解,判断出图像或者视频的相关性。只要预录了广告的样本,就有可能依靠数字处理来找到相关性,从而选择性的予以去除。
但是这有一些问题:
一是必须人工采集样本,因为电视机本来并不知道哪些是广告,那些不是广告;
二是必须采用高速数字处理芯片,如DSP、FPGA等,软硬件成本大幅提高;
三是必须处理好广告被切断后画面和声音到底怎么安排的问题,并且不停的继续进行计算,以便确定什么时候这个广告结束了。计算量很大。
回楼上的:
1.样本的采集当然需要用户自己来.因为不同的人会对同一个广告有不同的\"延误程度\",而且,老的广告会停播,而新的广告同样也可能是那种令人恶心的;
2.其实成本主要是在软件上,硬件即使使用ARM9、DSP或FPGA的话,也不会高得离谱,特别是对于现在的数字电视、液晶电视来说的话,其占用的硬件成本比例其实并不太高,但软件的成本可能会比较高——在满足基本功能的时候,还得让它适应各种环境,还得不断完善;
3.匹配到广告之后,如果采取我在17楼所说的那种方式的话,那么就能知道这条广告会持续多久,所以可以延时再将频道切换回来,或者由用户设定一个时间,到时候再切换回来.因为通常在电视剧中插播的广告都是比较固定的,用户可以根据这个来设定跳开的时间,比如1分钟,或者90秒.
当然,一个新的产品或新的功能,不可能一开始就十全十美,而是需要在实践中不断地改进,去除无用的功能,增加或增强实用的功能.而这在很大程度上也就取决于软件,因此我前面说到,软件成本可能会比较高.
引用第11楼五毒散于2008-03-31 07:51发表的 :
那可是需要海量存储的遥控器哇!即使是用8G的Flash卡之类的东西也存不了多少啊!而如果用微型硬盘,又不经摔啊,就不能给儿子玩了,还耗电.只能把硬盘装到电视机里了,既不用担心摔坏,也不用担心电源,还可以用普通的大硬盘,hoho,便宜哇!嗯,这可能是一项了不起的发明哈!
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |
200字以内,仅用于支线交流,主线讨论请采用回复功能。