📄 jpeg-033511052.htm
字号:
<html>
<head>
<script language="JavaScript">
function example()
{
form1.text1[0].value=139
form1.text1[1].value=144
form1.text1[2].value=149
form1.text1[3].value=153
form1.text1[4].value=155
form1.text1[5].value=155
form1.text1[6].value=155
form1.text1[7].value=155
form1.text1[8].value=144
form1.text1[9].value=151
form1.text1[10].value=153
form1.text1[11].value=156
form1.text1[12].value=159
form1.text1[13].value=156
form1.text1[14].value=156
form1.text1[15].value=156
form1.text1[16].value=150
form1.text1[17].value=155
form1.text1[18].value=160
form1.text1[19].value=163
form1.text1[20].value=158
form1.text1[21].value=156
form1.text1[22].value=156
form1.text1[23].value=156
form1.text1[24].value=159
form1.text1[25].value=161
form1.text1[26].value=162
form1.text1[27].value=160
form1.text1[28].value=160
form1.text1[29].value=159
form1.text1[30].value=159
form1.text1[31].value=159
form1.text1[32].value=159
form1.text1[33].value=160
form1.text1[34].value=161
form1.text1[35].value=162
form1.text1[36].value=162
form1.text1[37].value=155
form1.text1[38].value=155
form1.text1[39].value=155
form1.text1[40].value=161
form1.text1[41].value=161
form1.text1[42].value=161
form1.text1[43].value=161
form1.text1[44].value=160
form1.text1[45].value=157
form1.text1[46].value=157
form1.text1[47].value=157
form1.text1[48].value=162
form1.text1[49].value=162
form1.text1[50].value=161
form1.text1[51].value=163
form1.text1[52].value=162
form1.text1[53].value=157
form1.text1[54].value=157
form1.text1[55].value=157
form1.text1[56].value=162
form1.text1[57].value=162
form1.text1[58].value=161
form1.text1[59].value=161
form1.text1[60].value=163
form1.text1[61].value=158
form1.text1[62].value=158
form1.text1[63].value=158
}
var c=new Array(64)
var ct=new Array(64)
function FDCT()
{
var temp=new Array(64)
var i
var j
var temp1
var k
for(j=0;j<8;j++)
{
c[j]=1.0/Math.sqrt(8);
ct[j*8]=c[j];
}
for(i=1;i<8;i++)
{
for(j=0;j<8;j++)
{
c[i*8+j]=Math.sqrt(2.0/8)*Math.cos((2*j+1)*i*3.1415926/2/8)
ct[j*8+i]=c[i*8+j]
}
}
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
temp[i*8+j]=0.0;
for(k=0;k<8;k++)
{
if(form1.text1[i*8+k].value=='')
{
alert("未给定源图像样本")
return
}
temp[i*8+j]+=(form1.text1[i*8+k].value-128)*ct[k*8+j]
}
}
}
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
temp1=0.0
for(k=0;k<8;k++)
{ temp1+=c[i*8+k]*temp[k*8+j]}
form1.text2[i*8+j].value=temp1
}
}
}
function give()
{
form1.text3[0].value=16
form1.text3[1].value=11
form1.text3[2].value=10
form1.text3[3].value=16
form1.text3[4].value=24
form1.text3[5].value=40
form1.text3[6].value=51
form1.text3[7].value=61
form1.text3[8].value=12
form1.text3[9].value=12
form1.text3[10].value=14
form1.text3[11].value=19
form1.text3[12].value=26
form1.text3[13].value=58
form1.text3[14].value=60
form1.text3[15].value=55
form1.text3[16].value=14
form1.text3[17].value=13
form1.text3[18].value=16
form1.text3[19].value=24
form1.text3[20].value=40
form1.text3[21].value=57
form1.text3[22].value=69
form1.text3[23].value=56
form1.text3[24].value=14
form1.text3[25].value=17
form1.text3[26].value=22
form1.text3[27].value=29
form1.text3[28].value=51
form1.text3[29].value=87
form1.text3[30].value=80
form1.text3[31].value=62
form1.text3[32].value=18
form1.text3[33].value=22
form1.text3[34].value=37
form1.text3[35].value=56
form1.text3[36].value=68
form1.text3[37].value=109
form1.text3[38].value=103
form1.text3[39].value=77
form1.text3[40].value=24
form1.text3[41].value=35
form1.text3[42].value=55
form1.text3[43].value=64
form1.text3[44].value=81
form1.text3[45].value=104
form1.text3[46].value=113
form1.text3[47].value=92
form1.text3[48].value=49
form1.text3[49].value=64
form1.text3[50].value=78
form1.text3[51].value=87
form1.text3[52].value=103
form1.text3[53].value=121
form1.text3[54].value=120
form1.text3[55].value=101
form1.text3[56].value=72
form1.text3[57].value=92
form1.text3[58].value=95
form1.text3[59].value=98
form1.text3[60].value=112
form1.text3[61].value=100
form1.text3[62].value=103
form1.text3[63].value=99
}
function liang()
{
var i
var j
var temp
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
if(form1.text3[i*8+j].value=='')
{
alert("未给定量化表")
return
}
if(form1.text2[i*8+j].value=='')
{
alert("未给定FDCT系数表")
return
}
temp=form1.text2[i*8+j].value/form1.text3[i*8+j].value
form1.text4[i*8+j].value=Math.round(temp)
}
}
function zz()
{
var m=0
var n=1
var k=1
var i=1
var Ni=8
if(form1.text4[0].value=='')
{alert("未给定规格化量化表")
return
}
form1.text5.value=form1.text4[0].value;
for(k=1;k<Ni;k++)
{
if(k%2!=0)
{
n=k
m=0
while(n>=0)
{
i=i+1
if(form1.text4[m*Ni+n].value=='')
{alert("未给定规格化量化表")
return
}
form1.text5.value+=' '+form1.text4[m*Ni+n].value
m=m+1
n=n-1
}
}
else
{
m=k
n=0
while(m>=0)
{
i=i+1
if(form1.text4[m*Ni+n].value=='')
{alert("未给定规格化量化表")
return
}
form1.text5.value+=' '+form1.text4[m*Ni+n].value
m=m-1
n=n+1
}
}
}
for(k=1;k<Ni;k++)
{
if(k%2!=0)
{
n=Ni-1
m=k
while(m<Ni)
{
i=i+1
if(form1.text4[m*Ni+n].value=='')
{alert("未给定规格化量化表")
return
}
form1.text5.value+=' '+form1.text4[m*Ni+n].value
m=m+1
n=n-1
}
}
else
{
m=Ni-1
n=k
while(n<Ni)
{
i=i+1
if(form1.text4[m*Ni+n].value=='')
{alert("未给定规格化量化表")
return
}
form1.text5.value+=' '+form1.text4[m*Ni+n].value
m=m-1
n=n+1
}
}
}
}
var temps=new Array(64)
function RLE()
{
if(form1.text5.value=='')
{
alert("未设定z型编码")
return
}
var str=form1.text5.value
var i
form1.text6.value=''
var num=0
var j=-1
var fu=0
// alert(str.length)
for(i=0;i<str.length;i++)
{
if(str.charAt(i)==' ')
{
if(fu==1)
num=-num
temps[++j]=num
fu=0
num=0
}
else if(str.charAt(i)=='-')
fu=1
else
num=num*10+str.charCodeAt(i)-48
}
temps[++j]=num
num=1
//alert(temp[56])
for(i=1;i<=j;i++)
{
if(temps[i]==temps[i-1])
num++;
else
{
form1.text6.value+='('+temps[i-1]+')'+num
num=1
}
}
form1.text6.value+='('+temps[i-1]+')'+num
}
function huan()
{
if(form1.text6.value=='')
{
alert("未设定JPEG数据流")
return
}
var m=0
var n=1
var k=1
var i=1
var Ni=8
form1.text7[0].value=temps[0]
for(k=1;k<Ni;k++)
{
if(k%2!=0)
{
n=k
m=0
while(n>=0)
{
i=i+1
form1.text7[m*Ni+n].value=temps[i-1]
m=m+1
n=n-1
}
}
else
{
m=k
n=0
while(m>=0)
{
i=i+1
form1.text7[m*Ni+n].value=temps[i-1]
m=m-1
n=n+1
}
}
}
for(k=1;k<Ni;k++)
{
if(k%2!=0)
{
n=Ni-1
m=k
while(m<Ni)
{
i=i+1
form1.text7[m*Ni+n].value=temps[i-1]
m=m+1
n=n-1
}
}
else
{
m=Ni-1
n=k
while(n<Ni)
{
i=i+1
form1.text7[m*Ni+n].value=temps[i-1]
m=m-1
n=n+1
}
}
}
}
function ni()
{
var i
var j
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
if(form1.text3[i*8+j].value=='')
{
alert("未给定量化表")
return
}
if(form1.text7[i*8+j].value=='')
{
alert("未给定规格化的量化系数")
return
}
form1.text8[i*8+j].value=form1.text3[i*8+j].value*form1.text7[i*8+j].value
}
}
function again()
{
var temp=new Array(64)
var templ
var i
var j
var k
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
temp[i*8+j]=0.0
for(k=0;k<8;k++)
{
if(form1.text8[i*8+k].value=='')
{
alert("未给定逆量化系数")
return
}
temp[i*8+j]+=form1.text8[i*8+k].value*c[k*8+j]
}
}
}
for(i=0;i<8;i++)
{for(j=0;j<8;j++)
{
templ=0.0
for(k=0;k<8;k++)
{ templ+=ct[i*8+k]*temp[k*8+j]}
templ+=128
if(templ<0)
form1.text9[i*8+j].value=0
else if(templ>255)
form1.text9[i*8+j].value=255
else
form1.text9[i*8+j].value=Math.round(templ)
}
}
}
</script>
</head>
<BODY>
<TT><B>JPEG算法举例</B></TT>
<script language = "Javascript">
document.write("<form name='form1'>")
document.write("<input type=reset value='reset'><br><br>");
document.write("<B>一. JPEG压缩过程</B><br>")
for (var i = 0; i < 8; i++){
for (var j = 0 ; j < 8; j++)
document.write("<input type='text' name='text1' size='4'>");
document.write("<br>");
}
document.write("源图像<input type='button' name='bt2' value='样例' onClick='example()'><br><br>");
for (var i = 0; i < 8; i++){
for (var j = 0 ; j < 8; j++)
document.write("<input type='text' name='text2' size='4'>");
document.write("<br>");
}
document.write("FDCT系数<input type='button' name='bt2' value='FDCT' onClick='FDCT()'><br><br>");
for (var i = 0; i < 8; i++){
for (var j = 0 ; j < 8; j++)
document.write("<input type='text' name='text3' size='4'>");
document.write("<br>");
}
document.write("量化表<input type='button' name='bt3' value='量化表样例'onClick='give()'><br><br>");
for (var i = 0; i < 8; i++){
for (var j = 0 ; j < 8; j++)
document.write("<input type='text' name='text4' size='4'>");
document.write("<br>");
}
document.write("规格化量化表<input type='button' name='bt4' value='量化' onClick='liang()'><br><br>");
document.write("<br><br>");
document.write("<B>二. JPEG数据流的形成</B><br>")
document.write("<input type='text' name='text5' size='100'>");
document.write("Z字型编排<input type='button' name='bt5' value='z字型编排' onClick='zz()'><br><br>");
document.write("<input type='text' name='text6' size='100'>");
document.write("RLE编码<input type='button' name='bt6' value='RLE编码' onClick='RLE()'><br><br>");
document.write("<br><B>三. JPEG图像的重构</B><br><br>")
for (var i = 0; i < 8; i++){
for (var j = 0 ; j < 8; j++)
document.write("<input type='text' name='text7' size='4'>");
document.write("<br>");
}
document.write("还原规格化量化表<input type='button' name='bt7' value='还原规格化量化表' onClick='huan()'<br><br>");
for (var i = 0; i < 8; i++){
for (var j = 0 ; j < 8; j++)
document.write("<input type='text' name='text8' size='4'>");
document.write("<br>");
}
document.write("逆量化后的系数<input type='button' name='bt8' value='逆量化' onClick='ni ()'><br><br>");
for (var i = 0; i < 8; i++){
for (var j = 0 ; j < 8; j++)
document.write("<input type='text' name='text9' size='4'>");
document.write("<br>");
}
document.write("重构图像<input type='button' name='bt9' value='重构图像' onClick='again()'><br><br>");
document.write("</form>");
</script>
</BODY>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -