发明名称 一种将图像信息转换成音乐的方法
摘要 本发明一种将图像信息转换成音乐的方法,该方法的步骤是:首先,读取选定图像的各种信息,将其分别存入各自的数据文件中;其次是本着忠实于图像原始信息的原则对这些数据进行处理;然后将处理后的图像数据转换为音乐符号并存入MIDI(音符格式)文本文件中;最后对MIDI(音符格式)文本文件转化为MIDI(音符格式)乐曲输出。使人们在欣赏图画的同时也能够从听觉上感受图像所带来的效果;利用“1/f”波动理论帮助人们理解图像与音乐之间的关系。
申请公布号 CN1287320A 申请公布日期 2001.03.14
申请号 CN99119572.8 申请日期 1999.09.03
申请人 北京航空航天大学 发明人 毛峡
分类号 G06F17/00 主分类号 G06F17/00
代理机构 北京市第九专利代理事务所 代理人 周长琪;唐爱华
主权项 1、一种能将图像信息转换成音乐的方法,其特征在于:该方法是:首先,读取选定图像的各种信息(如三原色RGB&amp;#60其中R代表红、G代表绿、B代表兰&amp;#62的灰度值、颜色的三属性HSV&amp;#60其中H代表色调、S代表饱和度、V代表明度&amp;#62),将他们分别存入各自的数据文件中;然后本着忠实于图像原始信息的原则对这些数据进行处理;再将处理后的图像数据转换为音乐符号并存入MIDI(音符格式)文本文件中;最后对MIDI(音符格式)文本文件转化为MIDI(音符格式)乐曲输出;现将该方法步骤详述如下:一、读取图像信息:图像采用的是24位真彩,文件格式为BMP格式存放图像信息,存放过程是计算机先将BMP文件头读入,通过文件标志“BM”,判断是否是BMP文件,再通过色彩标志位,判断是否为24位真彩图像,接着读入文件的长宽数据以及图像数据区的偏移量,将文件长宽数据存入文件中,由于BMP图像文件是由图像的最后一行开始,由下至上,由左至右进行数据存储的,所以我们在利用偏移量找到图像数据区之后,按照长度和宽度值,从文件尾开始读取BMP文件的数据,将所读出的十六进制的RGB(红绿兰)灰度值转换为十进制数据,并分别存入临时的三个文本数据文件中;由于BMP文件中存储的是灰度值,所以利用HSV(其中:H代表色调、S代表饱和度、V代表明度)模型与RGB(红绿兰)模型之间的关系可以得到颜色的三属性(H、S、V)值,并将三属性(H、S、V)值也分别存入三个临时数据文件中;二、对图像信息进行处理:将音乐与图像的特性相对应,是整个方案的重点,由于音乐是时基类媒体,音符必须有一个时间延续方向才能组成乐曲,而大多数人欣赏图画时的习惯是从上而下浏览,所以本发明采取图像纵向(由上而下)为处理主方向(即音乐前进方向),输入数据文件为上面所产生的六个数据文件之一,下面以色调(H)值为例进行说明;考虑到图像各部分色调的过渡性及色调过渡的模糊性,即相邻象素之间的相关性和图像界限的不确定性,以及14个可用的标准MIDI(音乐的格式)通道,我们对图像数据进行分割和抽取,将图像划分为14个部分:在将图像数据平均分成14个部分的基础上,先合并第一部分求平均作为第一列数据,然后将1、2两部分合并平均作为第二列数据,再将1、2、3三部分合并平均作为第三列数据,以此类推,直至将所有部分全部合并完为止,将处理后的结果存入数据输出文件中;三、图像数据转化为音符文本:在音乐中包括高、中、低三个音区,每个音区包括三个八度的音符,而每个音符又包括其升半音、中、降半音,合计共有(7×3)种音调×3八度×3音区=189个音符可以被对应;首先,规定用“c、d、e、f、g、a、b”表示低音区的七个音名,用“1、2、3、4、5、6、7”表示中音区的七个音名,用“C、D、E、F、G、A、B”表示高音区的七个音名,在音名前的“/”表示升八度,“/”表示降八度,空白则表示不升也不降;紧跟音名后的“b”表示降半音,“#”表示升半音,由于规定的音调过多(189种),而且有很多是重复的,所以这里参照钢琴的键盘将音调的个数减少为88个,仍为高、中、低三个音区,从低到高分为大字二组、大字一组、大字组、小字组、小字一组、小字二组、小字三组、小字四组、小字五组等九个音组;除了大字二组仅含有三种音调与小字五组仅含有一种音调之外,其余七组均含有七个基本音(钢琴的白键)和五个半音(钢琴的黑键)等十二种音调;又由于有些音如“c”,它的升半音“#c”与其相邻的音“d”的降半音“<sup>b</sup>d”相同;所以我们统一规定所有均用前一个音的升半音来表示;则一组完整的音组就由“1、2、3、4、5、6、7”七个全音加上“#1、#2、#4、#5、#6”五个半音组成;节奏是音乐中的重要因素,它涉及与“时间”有关的所有因素,是音在强弱和长短两方面千变万化的组织形态,我们通过对每个音符的演奏时间进行设定以满足产生节奏的条件;经过统计得到的11种音长,我们用11种符号代替:“-”表示二分音符(2拍),“.”表示附点音符<img file="9911957200031.GIF" wi="50" he="84" />拍),“”表示四分音符(1拍),“_.”表示八分音符带附点<img file="9911957200041.GIF" wi="49" he="84" />拍),“_”表示八分音符(<img file="9911957200042.GIF" wi="28" he="83" />拍),“=.”表示十六分音符带附点<img file="9911957200043.GIF" wi="47" he="85" />拍),“=”表示十六分音符<img file="9911957200044.GIF" wi="49" he="84" />拍),“:.”表示三十二分音符带附点<img file="9911957200045.GIF" wi="67" he="84" />拍),“:”表示三十二分音符<img file="9911957200046.GIF" wi="47" he="83" />拍),“;.”表示六十四分音符带附点<img file="9911957200047.GIF" wi="70" he="84" />拍),“;”表示六十四分音符(<img file="9911957200048.GIF" wi="42" he="83" />拍)。所以我们以每列数据相邻两元素的差值为研究对象,找出每行差值的最大、最小值,由下面的公式将色调数据的变化值对应到11种音长上(节奏速度);<img file="9911957200049.GIF" wi="506" he="150" />S-节奏速度(Speed),Gl-色调值差Ml-色调值差的最大值,ml-色调值差的最小值由于节奏与音长和节拍有十分密切的关系,所以在本发明中节拍采用对音长进行分类统计的算法来确定;所有带附点的音符归入它的主类,如二分带附点的音符可归入二分音符进行统计;选取数量最多的那种所代表的音长作为节拍的分母,即若二分音符的数量最多,则节拍的分母为2;在这里分子暂时用小于分母的非零随机数来代替;对于通道所对应的乐器,我们采用了MIDI(音符格式)的一些标准。通用MIDI(音符格式)标准将128种乐器按照乐器种类分为16组,每组定义了8种乐器声音;这16组乐器分别为:钢琴乐器、半打击乐器、风琴乐器、吉他乐器、低音乐器、弦乐器、合奏乐器、铜管乐器、簧乐乐器、管乐乐器、合成诱导、合成清音、合成效果、民族乐器、打击乐器、声音效果等;MIDI(音符格式)规定在16个通道中,除11、12为未用通道以外,其余的14个通道都要指派给合成器能产生的乐器声音,如若是基本合成器,则将13-15通道指派给三种管弦乐器声音,并同时允许产生6种音符,而将16通道指派给打击乐器声音,允许同时产生3种音符;对于扩展合成器,则把1-9通道指派给9种管弦乐器声音,可同时允许产生16个音符;将10通道用于打击乐器声音,允许同时产生16个音符,每个通道实际所采用的乐器在对应种类中随机选取;每分钟节拍数,即演奏速度与每列数据的变化快慢也有很大关系;所以我们统计所有数据列的相邻数据的差,找出最大差值(MaxSpeed),最小差值(MinSpeed)以及数目最多的差值(Flag);采用如下公式进行转换:    <maths num="001"><![CDATA[ <math><mrow><mi>S</mi><mo>=</mo><mfrac><mrow><mrow><mo>(</mo><mi>F</mi><mo>-</mo><mi>MinS</mi><mo>)</mo></mrow><mo>&times;</mo><mrow><mo>(</mo><mn>200</mn><mo>-</mo><mn>120</mn><mo>)</mo></mrow></mrow><mrow><mi>MaxS</mi><mo>-</mo><mi>MinS</mi></mrow></mfrac><mo>+</mo><mn>120</mn></mrow></math>]]></maths>S-演奏速度(Speed),F-数目最多的差值(Flag)MaxS-最大的差值(MaxSpeed),MinS-最小的差值(MinSpeed)为了能制成符合规范的MIDI文件,在此规定MIDI信息文本制作格式如下:    [MIDI]    &amp;#60调号&amp;#62,&amp;#60节拍&amp;#62,&amp;#60每分钟节拍数&amp;#62,&amp;#60音轨个数&amp;#62[1]Pn[n]Pn说明:调号:占用一个字符,必须为A、B、C、D、E、F、G,否则视为C调;节拍:取值如下,2/4,3/4,4/4,3/8,6/8每分钟节拍数:表示每分钟演奏的节拍总数,取值在40-200之间,否则视为120;音轨个数表示此歌曲声部数。如三声部,可将其设置为3。与之相应,n=3;[n]后面的是表示音轨的音乐信息,即为上面转化好的音乐符号;Pn:表示设置音色,取值在0-127之间;其他的字符,视为非法字符;考虑到人的接受能力,人为统一的规定调号为C调,节拍8/8拍,每分钟节拍数为180;将转换好的音乐符号存入临时MIDI(音符格式)文本文件“MIDIout.txt”中;四、将“音符”文件转换为MIDI(音符格式)乐曲:由于MIDI(音符格式)文件包含头块和音轨块两部分;其格式一般如下:MIDI(音符格式)文件头结构    struct MH{char Midild[4];MIDI文件标志MThdlong length:   头块结构信息长度int format:    存放的格式int ntracks;   音轨数目int PerPaiNum; 每节计算器值};音轨头结构struct TH{char Trackld[4];磁道标志MTrklong length;    信息长度}从“音符”文件中接受到数据后,将其翻译成MIDI(音符格式)文件代码,然后按照MIDI(音符格式)文件的规定,加上文件头和音轨头,写入乐曲文件中,形成MIDI(音符格式)文件。
地址 100083北京市海淀区学院路37号