(57)【要約】  映像変換方法及びその装置、並びに映像逆変換方法及びその装置を提供する。Ｍ×Ｎ入力ブロックの周波数変換のための所定の周波数領域を選択し、Ｍ×Ｎ入力ブロックの周波数変換に利用されるＭ×Ｎ変換行列の元素のうち、選択された周波数領域に対応する変換係数の生成のための元素を選択して、縮小された変換行列を獲得し、縮小された変換行列を、Ｍ×Ｎ入力ブロックに適用して、周波数変換を行うことによって、選択された周波数領域に対応する変換係数を生成する映像変換方法である。
2013542664.tif 000002
【特許請求の範囲】
【請求項１】
映像の変換方法において、
Ｍ×Ｎ（Ｍ及びＮは、正の整数）入力ブロックの周波数変換のための所定の周波数領域を選択するステップと、
前記Ｍ×Ｎ入力ブロックの周波数変換に利用されるＭ×Ｎ変換行列の元素のうち、前記選択された周波数領域に対応する変換係数の生成のための元素を選択して、縮小された変換行列を獲得するステップと、
前記縮小された変換行列を、前記Ｍ×Ｎ入力ブロックに適用して、周波数変換を行うことによって、前記選択された周波数領域に対応する変換係数を生成するステップと、を含むことを特徴とする映像変換方法。
【請求項２】
前記縮小された変換行列を獲得するステップは、
前記Ｍ×Ｎ入力ブロックの周波数変換のためのａ×ｄ（ａは、Ｍより小さい正の整数、ｄは、Ｎより小さい正の整数）サイズの低周波数領域が選択された場合、
Ｍ×Ｎ垂直変換行列から、ａ×Ｍサイズの縮小垂直変換行列を獲得するステップと、
Ｍ×Ｎ水平変換行列から、Ｎ×ｄサイズの縮小水平変換行列を獲得するステップと、をさらに含むことを特徴とする請求項１に記載の映像変換方法。
【請求項３】
前記変換係数を生成するステップは、
前記Ｍ×Ｎ入力ブロックを示す行列をＸ、前記縮小垂直変換行列をＭＣｆ、前記縮小水平変換行列をＭＣｆＴとする時、次の数式；ＭＣｆ＊Ｘ＊ＭＣｆＴによる行列演算を通じて、前記ａ×ｄサイズの低周波数領域に該当する変換係数を生成することを特徴とする請求項２に記載の映像変換方法。
【請求項４】
映像の逆変換方法において、
Ｍ×Ｎ（Ｍ及びＮは、正の整数）ブロックの変換係数のうち、所定の周波数帯域の変換係数を受信するステップと、
前記Ｍ×Ｎブロックの周波数逆変換に利用されるＭ×Ｎ逆変換行列の元素のうち、前記所定の周波数帯域の変換係数の逆変換のための元素を選択して、縮小された逆変換行列を獲得するステップと、
前記縮小された逆変換行列を、前記所定の周波数帯域の変換係数に適用して、周波数逆変換を行うことによって、前記Ｍ×Ｎブロックを復元するステップと、を含むことを特徴とする映像逆変換方法。
【請求項５】
前記所定の周波数領域の形態は、所定のサイズの長方形ブロック及び三角形ブロックのうち一つであることを特徴とする請求項４に記載の映像逆変換方法。
【請求項６】
前記所定の周波数領域の形態情報と、選択された所定の周波数領域のサイズ情報とを、ビットストリームから抽出するステップをさらに含むことを特徴とする請求項５に記載の映像逆変換方法。
【請求項７】
前記縮小された逆変換行列を獲得するステップは、
前記所定の周波数帯域の変換係数は、前記Ｍ×Ｎブロックの変換係数のうち、最左上側に位置したａ×ｄ（ａは、Ｍより小さい正の整数、ｄは、Ｎより小さい正の整数）サイズの低周波数領域の変換係数である場合、
Ｍ×Ｎ垂直逆変換行列から、Ｍ×ｄサイズの縮小垂直逆変換行列を獲得するステップと、
Ｍ×Ｎ水平逆変換行列から、ａ×Ｎサイズの縮小水平逆変換行列を獲得するステップと、をさらに含むことを特徴とする請求項４に記載の映像逆変換方法。
【請求項８】
前記Ｍ×Ｎブロックを復元するステップは、
前記ａ×ｄサイズの低周波数領域の変換係数を示す行列をＹ、前記縮小垂直逆変換行列をＭＣｉ、前記縮小水平逆変換行列をＩＭＣｉＴとする時、次の数式；ＭＣｉ＊Ｙ＊ＭＣｉＴによる行列演算を通じて、前記Ｍ×Ｎブロックを復元することを特徴とする請求項７に記載の映像逆変換方法。
【請求項９】
前記Ｍ×Ｎ逆変換行列は、一次元逆離散コサイン変換に利用されるＭ×Ｎ逆変換行列の元素のうち、三角関数に基づいた値を有理数値に置換した逆変換行列であることを特徴とする請求項４に記載の映像逆変換方法。
【請求項１０】
前記Ｍ×Ｎブロックを復元するステップは、
前記逆変換行列を利用した変換過程に含まれた乗算を、シフト演算、加算及び減算に代替した代替演算を通じて行うことを特徴とする請求項４に記載の映像逆変換方法。
【請求項１１】
Ｍ及びＮは３２、ａ及びｄは１６、Ｘ０ないしＸ１５は、逆変換される入力値、Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉ，Ｆｉ及びＧｉ（ｉは、０から３１までの整数）は、中間値、Ｙ０ないしＹ３１は、出力値を表すとする時、
前記復元するステップは、１６×１６入力ブロックの行方向及び列方向の値に対して、次のポイント逆変換を繰り返して行われることを特徴とする請求項１０に記載の映像逆変換方法：
{
/stage  0
G16  =  (  12  *  X1  )  >>  8;G17  =  (  -  171  *  X15)  >>  8;G18  =  (  109  *  X9  )  >>  8;G19  =  (  -  86  *  X7)  >>  8;G20  =  (  62  *  X5  )  >>  8;G21  =  (  -  131  *  X11)  >>  8;G22  =  (  152  *  X13  )  >>  8;G23  =  (  -  37  *  X3)  >>  8;G24  =  (  253  *  X3  )  >>  8;G25  =  (  205  *  X13)  >>  8;G26  =  (  219  *  X11)  >>  8;G27  =  (  248  *  X5)  >>  8;G28  =  (  241  *  X7  )  >>  8;G29  =  (  231  *  X9)  >>  8;G30  =  (  189  *  X15  )  >>  8;G31  =  (  255  *  X1)  >>  8;
/Stage  1
F8  =  (  25  *  X2  )  >>  8;F9  =  (  -  162  *  X14)  >>  8;F10  =  (  120  *  X10  )  >>  8;F11  =  (  -  74  *  X6)  >>  8;F12  =  (  244  *  X6  )  >>  8;F13  =  (  225  *  X10)  >>  8;F14  =  (  197  *  X14  )  >>  8;F15  =  (  254  *  X2)  >>  8;
F16  =  G16  +  G17;F17  =  G16  -  G17;F18  =  G19  -  G18;F19  =  G19  +  G18;F20  =  G20  +  G21;F21  =  G20  -  G21;F22  =  G23  -  G22;F23  =  G23  +  G22;F24  =  G24  +  G25;F25  =  G24  -  G25;F26  =  G27  -  G26;F27  =  G27  +  G26;F28  =  G28  +  G29;F29  =  G28  -  G29;F30  =  G31  -  G30;F31  =  G31  +  G30;
/stage  2
E4  =  (  49  *  X4  )  >>  8;E5  =  (  -  142  *  X12)  >>  8;E6  =  (  212  *  X12  )  >>  8;E7  =  (  251  *  X4)  >>  8;
E8  =  F8  +  F9;E9  =  F8  -  F9;E10  =  F11  -  F10;E11  =  F11  +  F10;E12  =  F12  +  F13;E13  =  F12  -  F13;E14  =  F15  -  F14;E15  =  F15  +  F14;E17  =  (  49  *  F30  -  251  *  F17)  >>  8;E18  =  (  -  251*F29  -  49*F18)  >>  8;E21  =  (  212  *  F26  -  142  *  F21)  >>  8;E22  =  (  -  142*F25  -  212*F22)  >>  8;E25  =  (  212  *  F25  -  142  *  F22)  >>  8;E26  =  (  142  *  F26  +  212  *  F21)  >>  8;E29  =  (  49  *  F29  -  251  *  F18)  >>  8;E30  =  (  251  *  F30  +  49  *  F17)  >>  8;
/stage  3
D0  =  (  181  *  (  X0  ))  >>  8;D1  =  (  181  *  (  X0  ))  >>  8;D2  =  (  97  *  X8  )  >>  8;D3  =  (  236  *  X8  )  >>  8;
D4  =  E4  +  E5;D5  =  E4  -  E5;D6  =  E7  -  E6;D7  =  E7  +  E6;D9  =  (  97*E14  -  236*E9)  >>  8;D10  =  (-  236*E13  -  97*E10)  >>  8;D13  =  (  97  *  E13  -  236  *  E10)  >>  8;D14  =  (  236  *  E14  +  97  *  E9)  >>  8;D16  =  F16  +  F19;D19  =  F16  -  F19;D20  =  F23  -  F20;D23  =  F23  +  F20;D24  =  F24  +  F27;D27  =  F24  -  F27;D28  =  F31  -  F28;D31  =  F31  +  F28;D17  =  E17  +  E18;D18  =  E17  -  E18;D21  =  E22  -  E21;D22  =  E22  +  E21;D25  =  E25  +  E26;D26  =  E25  -  E26;D29  =  E30  -  E29;D30  =  E30  +  E29;
/stage  4
C0  =  D0  +  D3;C3  =  D0  -  D3;C8  =  E8  +  E11;C11  =  E8  -  E11;C12  =  E15  -  E12;C15  =  E15  +  E12;C1  =  D1  +  D2;C2  =  D1  -  D2;C9  =  D9  +  D10;C10  =  D9  -  D10;C13  =  D14  -  D13;C14  =  D14  +  D13;C5  =  (  181  *  (  D6  -  D5  ))  >>  8;C6  =  (  181  *  (  D6  +  D5  ))  >>  8;C18  =  (  97*D29  -  236*D18)  >>  8;C20  =  (  -  236*D27  -  97*D20)  >>  8;C26  =  (  -  236*D21  +  97*D26)  >>  8;C28  =  (  97*D19  +  236*D28)  >>  8;C19  =  (  97*D28  -  236*D19)  >>  8;C21  =  (-  236*D26  -  97*D21)  >>  8;C27  =  (-  236*D20  +  97*D27)  >>  8;C29  =  (  97*D18  +  236*D29)  >>  8;
/stage  5
B0  =  C0  +  D7;B7  =  C0  -  D7;B1  =  C1  +  C6;B6  =  C1  -  C6;B2  =  C2  +  C5;B5  =  C2  -  C5;B3  =  C3  +  D4;B4  =  C3  -  D4;B10  =  (  181  *  (  C13  -  C10  ))  >>  8;B13  =  (  181  *  (  C13  +  C10  ))  >>  8;B11  =  (  181  *  (  C12  -  C11  ))  >>  8;B12  =  (  181  *  (  C12  +  C11  ))  >>  8;B16  =  D16  +  D23;B23  =  D16  -  D23;B24  =  D31  -  D24;B31  =  D31  +  D24;B17  =  D17  +  D22;B22  =  D17  -  D22;B25  =  D30  -  D25;B30  =  D30  +  D25;B18  =  C18  +  C21;B21  =  C18  -  C21;B26  =  C29  -  C26;B29  =  C29  +  C26;B19  =  C19  +  C20;B20  =  C19  -  C20;B27  =  C28  -  C27;B28  =  C28  +  C27;
/stage  6
A0  =  B0  +  C15;A15  =  B0  -  C15;A1  =  B1  +  C14;A14  =  B1  -  C14;A2  =  B2  +  B13;A13  =  B2  -  B13;A3  =  B3  +  B12;A12  =  B3  -  B12;A4  =  B4  +  B11;A11  =  B4  -  B11;A5  =  B5  +  B10;A10  =  B5  -  B10;A6  =  B6  +  C9;A9  =  B6  -  C9;A7  =  B7  +  C8;A8  =  B7  -  C8;A20  =  (  181  *  (  B27  -  B20  ))  >>  8;A27  =  (  181  *  (  B27  +  B20  ))  >>  8;A21  =  (  181  *  (  B26  -  B21  ))  >>  8;A26  =  (  181  *  (  B26  +  B21  ))  >>  8;A22  =  (  181  *  (  B25  -  B22  ))  >>  8;A25  =  (  181  *  (  B25  +  B22  ))  >>  8;A23  =  (  181  *  (  B24  -  B23  ))  >>  8;A24  =  (  181  *  (  B24  +  B23  ))  >>  8;
/stage  7
Y0  =  A0  +  B31;Y31  =  A0  -  B31;Y1  =  A1  +  B30;Y30  =  A1  -  B30;Y2  =  A2  +  B29;Y29  =  A2  -  B29;Y3  =  A3  +  B28;Y28  =  A3  -  B28;Y4  =  A4  +  A27;Y27  =  A4  -  A27;Y5  =  A5  +  A26;Y26  =  A5  -  A26;Y6  =  A6  +  A25;Y25  =  A6  -  A25;Y7  =  A7  +  A24;Y24  =  A7  -  A24;Y8  =  A8  +  A23;Y23  =  A8  -  A23;Y9  =  A9  +  A22;Y22  =  A9  -  A22;Y10  =  A10  +  A21;Y21  =  A10  -  A21;Y11  =  A11  +  A20;Y20  =  A11  -  A20;Y12  =  A12  +  B19;Y19  =  A12  -  B19;Y13  =  A13  +  B18;Y18  =  A13  -  B18;Y14  =  A14  +  B17;Y17  =  A14  -  B17;Y15  =  A15  +  B16;Y16  =  A15  -  B16;
}。
【請求項１２】
Ｍ及びＮは６４、ａ及びｄは１６、Ｘ０ないしＸ３１は逆変換される入力値、Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉ，Ｆｉ，Ｇｉ，Ｈｉ及びＺｉ（ｉは、０から６３までの整数）は、中間値、Ｙ０ないしＹ６３は、出力値を表すとする時、
前記復元するステップは、１６×１６入力ブロックの行方向及び列方向の値に対して、次のポイント逆変換を繰り返して行われることを特徴とする請求項１０に記載の映像逆変換方法：
{
/stage  0
H32  =  (25*X1)  >>  10;H33  =  0;H34  =  0;H35  =  (-369*X15)  >>  10;H36  =  (224*X9)  >>  10;H37  =  0;H38  =  0;H39  =  (-175*X7)  >>  10;H40  =  (125*X5)  >>  10;H41  =  0;H42  =  0;H43  =  (-273*X11)  >>  10;H44  =  (321*X13)  >>  10;H45  =  0;H46  =  0;H47  =  (-75*X3)  >>  10;H48  =  (1021*X3)  >>  10;H49  =  0;H50  =  0;H51  =  (972*X13)  >>  10;H52  =  (987*X11)  >>  10;H53  =  0;H54  =  0;H55  =  (1016*X5)  >>  10;H56  =  (1009*X7)  >>  10;H57  =  0;H58  =  0;H59  =  (999*X9)  >>  10;H60  =  (955*X15)  >>  10;H61  =  0;H62  =  0;H63  =  (1024*X1)  >>  10;
/stage  1
G16  =  (50*X2)  >>  10;G17  =  0;G18  =  0;G19  =  (-345*X14)  >>  10;G20  =  (249*X10)  >>  10;G21  =  0;G22  =  0;G23  =  (-150*X6)  >>  10;G24  =  (1013*X6)  >>  10;G25  =  0;G26  =  0;G27  =  (993*X10)  >>  10;G28  =  (964*X14)  >>  10;G29  =  0;G30  =  0;G31  =  (1023*X2)  >>  10;
G32  =  H32+H33;G33  =  H32-H33;G34  =  H35-H34;G35  =  H35+H34;G36  =  H36+H37;G37  =  H36-H37;G38  =  H39-H38;G39  =  H39+H38;G40  =  H40+H41;G41  =  H40-H41;G42  =  H43-H42;G43  =  H43+H42;G44  =  H44+H45;G45  =  H44-H45;G46  =  H47-H46;G47  =  H47+H46;G48  =  H48+H49;G49  =  H48-H49;G50  =  H51-H50;G51  =  H51+H50;G52  =  H52+H53;G53  =  H52-H53;G54  =  H55-H54;G55  =  H55+H54;G56  =  H56+H57;G57  =  H56-H57;G58  =  H59-H58;G59  =  H59+H58;G60  =  H60+H61;G61  =  H60-H61;G62  =  H63-H62;G63  =  H63+H62;
/stage  2
F8  =  (100*X4)  >>  10;F9  =  0;F10  =  0;F11  =  (-297*X12)  >>  10;F12  =  (980*X12)  >>  10;F13  =  0;F14  =  0;F15  =  (1019*X4)  >>  10;
F16  =  G16+G17;F17  =  G16-G17;F18  =  G19-G18;F19  =  G19+G18;F20  =  G20+G21;F21  =  G20-G21;F22  =  G23-G22;F23  =  G23+G22;F24  =  G24+G25;F25  =  G24-G25;F26  =  G27-G26;F27  =  G27+G26;F28  =  G28+G29;F29  =  G28-G29;F30  =  G31-G30;F31  =  G31+G30;F33  =  (100*G62-1019*G33)  >>  10;F34  =  (-1019*G61-100*G34)  >>  10;F37  =  (792*G58-650*G37)  >>  10;F38  =  (-650*G57-792*G38)  >>  10;F41  =  (483*G54-903*G41)  >>  10;F42  =  (-903*G53-483*G42)  >>  10;F45  =  (980*G50-297*G45)  >>  10;F46  =  (-297*G49-980*G46)  >>  10;F49  =  (980*G49-297*G46)  >>  10;F50  =  (297*G50+980*G45)  >>  10;F53  =  (483*G53-903*G42)  >>  10;F54  =  (903*G54+483*G41)  >>  10;F57  =  (792*G57-650*G38)  >>  10;F58  =  (650*G58+792*G37)  >>  10;F61  =  (100*G61-1019*G34)  >>  10;F62  =  (1019*G62+100*G33)  >>  10;
/stage  3
E4  =  (200*X8)  >>  10;E5  =  0;E6  =  0;E7  =  (1004*X8)  >>  10;
E8  =  F8+F9;E9  =  F8-F9;E10  =  F11-F10;E11  =  F11+F10;E12  =  F12+F13;E13  =  F12-F13;E14  =  F15-F14;E15  =  F15+F14;E17  =  (200*F30-1004*F17)  >>  10;E18  =  (-1004*F29-200*F18)  >>  10;E21  =  (851*F26-569*F21)  >>  10;E22  =  (-569*F25-851*F22)  >>  10;E25  =  (851*F25-569*F22)  >>  10;E26  =  (569*F26+851*F21)  >>  10;E29  =  (200*F29-1004*F18)  >>  10;E30  =  (1004*F30+200*F17)  >>  10;E32  =  G32+G35;E33  =  F33+F34;E34  =  F33-F34;E35  =  G32-G35;E36  =  G39-G36;E37  =  F38-F37;E38  =  F38+F37;E39  =  G39+G36;E40  =  G40+G43;E41  =  F41+F42;E42  =  F41-F42;E43  =  G40-G43;E44  =  G47-G44;E45  =  F46-F45;E46  =  F46+F45;E47  =  G47+G44;E48  =  G48+G51;E49  =  F49+F50;E50  =  F49-F50;E51  =  G48-G51;E52  =  G55-G52;E53  =  F54-F53;E54  =  F54+F53;E55  =  G55+G52;E56  =  G56+G59;E57  =  F57+F58;E58  =  F57-F58;E59  =  G56-G59;E60  =  G63-G60;E61  =  F62-F61;E62  =  F62+F61;E63  =  G63+G60;
/stage  4
D0  =  (724*(X0))  >>  10;D1  =  (724*(X0))  >>  10;D2  =  0;D3  =  0;
D4  =  E4+E5;D5  =  E4-E5;D6  =  E7-E6;D7  =  E7+E6;D9  =  (392*E14-946*E9)  >>  10;D10  =  (-946*E13-392*E10)  >>  10;D13  =  (392*E13-946*E10)  >>  10;D14  =  (946*E14+392*E9)  >>  10;D16  =  F16+F19;D19  =  F16-F19;D20  =  F23-F20;D23  =  F23+F20;D24  =  F24+F27;D27  =  F24-F27;D28  =  F31-F28;D31  =  F31+F28;D17  =  E17+E18;D18  =  E17-E18;D21  =  E22-E21;D22  =  E22+E21;D25  =  E25+E26;D26  =  E25-E26;D29  =  E30-E29;D30  =  E30+E29;D34  =  (200*E61-1004*E34)  >>  10;D35  =  (200*E60-1004*E35)  >>  10;D36  =  (-1004*E59-200*E36)  >>  10;D37  =  (-1004*E58-200*E37)  >>  10;D42  =  (851*E53-569*E42)  >>  10;D43  =  (851*E52-569*E43)  >>  10;D44  =  (-569*E51-851*E44)  >>  10;D45  =  (-569*E50-851*E45)  >>  10;D50  =  (851*E50-569*E45)  >>  10;D51  =  (851*E51-569*E44)  >>  10;D52  =  (569*E52+851*E43)  >>  10;D53  =  (569*E53+851*E42)  >>  10;D58  =  (200*E58-1004*E37)  >>  10;D59  =  (200*E59-1004*E36)  >>  10;D60  =  (1004*E60+200*E35)  >>  10;D61  =  (1004*E61+200*E34)  >>  10;
/stage  5
C0  =  D0+D3;C3  =  D0-D3;C8  =  E8+E11;C11  =  E8-E11;C12  =  E15-E12;C15  =  E15+E12;C1  =  D1+D2;C2  =  D1-D2;C9  =  D9+D10;C10  =  D9-D10;C13  =  D14-D13;C14  =  D14+D13;C5  =  (724*(D6-D5))  >>  10;C6  =  (724*(D6+D5))  >>  10;C18  =  (392*D29-946*D18)  >>  10;C20  =  (-946*D27-392*D20)  >>  10;C26  =  (-946*D21+392*D26)  >>  10;C28  =  (392*D19+946*D28)  >>  10;C19  =  (392*D28-946*D19)  >>  10;C21  =  (-946*D26-392*D21)  >>  10;C27  =  (-946*D20+392*D27)  >>  10;C29  =  (392*D18+946*D29)  >>  10;C32  =  E32+E39;C39  =  E32-E39;C40  =  E47-E40;C47  =  E47+E40;C48  =  E48+E55;C55  =  E48-E55;C56  =  E63-E56;C63  =  E63+E56;C33  =  E33+E38;C38  =  E33-E38;C41  =  E46-E41;C46  =  E46+E41;C49  =  E49+E54;C54  =  E49-E54;C57  =  E62-E57;C62  =  E62+E57;C34  =  D34+D37;C37  =  D34-D37;C42  =  D45-D42;C45  =  D45+D42;C50  =  D50+D53;C53  =  D50-D53;C58  =  D61-D58;C61  =  D61+D58;C35  =  D35+D36;C36  =  D35-D36;C43  =  D44-D43;C44  =  D44+D43;C51  =  D51+D52;C52  =  D51-D52;C59  =  D60-D59;C60  =  D60+D59;
/stage  6
B0  =  C0+D7;B7  =  C0-D7;B1  =  C1+C6;B6  =  C1-C6;B2  =  C2+C5;B5  =  C2-C5;B3  =  C3+D4;B4  =  C3-D4;B10  =  (724*(C13-C10))  >>  10;B13  =  (724*(C13+C10))  >>  10;B11  =  (724*(C12-C11))  >>  10;B12  =  (724*(C12+C11))  >>  10;B16  =  D16+D23;B23  =  D16-D23;B24  =  D31-D24;B31  =  D31+D24;B17  =  D17+D22;B22  =  D17-D22;B25  =  D30-D25;B30  =  D30+D25;B18  =  C18+C21;B21  =  C18-C21;B26  =  C29-C26;B29  =  C29+C26;B19  =  C19+C20;B20  =  C19-C20;B27  =  C28-C27;B28  =  C28+C27;B36  =  (392*C59-946*C36)  >>  10;B40  =  (-946*C55-392*C40)  >>  10;B52  =  (-946*C43+392*C52)  >>  10;B56  =  (392*C39+946*C56)  >>  10;B37  =  (392*C58-946*C37)  >>  10;B41  =  (-946*C54-392*C41)  >>  10;B53  =  (-946*C42+392*C53)  >>  10;B57  =  (392*C38+946*C57)  >>  10;B38  =  (392*C57-946*C38)  >>  10;B42  =  (-946*C53-392*C42)  >>  10;B54  =  (-946*C41+392*C54)  >>  10;B58  =  (392*C37+946*C58)  >>  10;B39  =  (392*C56-946*C39)  >>  10;B43  =  (-946*C52-392*C43)  >>  10;B55  =  (-946*C40+392*C55)  >>  10;B59  =  (392*C36+946*C59)  >>  10;
/stage  7
A0  =  B0+C15;A15  =  B0-C15;A1  =  B1+C14;A14  =  B1-C14;A2  =  B2+B13;A13  =  B2-B13;A3  =  B3+B12;A12  =  B3-B12;A4  =  B4+B11;A11  =  B4-B11;A5  =  B5+B10;A10  =  B5-B10;A6  =  B6+C9;A9  =  B6-C9;A7  =  B7+C8;A8  =  B7-C8;A20  =  (724*(B27-B20))  >>  10;A27  =  (724*(B27+B20))  >>  10;A21  =  (724*(B26-B21))  >>  10;A26  =  (724*(B26+B21))  >>  10;A22  =  (724*(B25-B22))  >>  10;A25  =  (724*(B25+B22))  >>  10;A23  =  (724*(B24-B23))  >>  10;A24  =  (724*(B24+B23))  >>  10;A32  =  C32+C47;A47  =  C32-C47;A48  =  C63-C48;A63  =  C63+C48;A33  =  C33+C46;A46  =  C33-C46;A49  =  C62-C49;A62  =  C62+C49;A34  =  C34+C45;A45  =  C34-C45;A50  =  C61-C50;A61  =  C61+C50;A35  =  C35+C44;A44  =  C35-C44;A51  =  C60-C51;A60  =  C60+C51;A36  =  B36+B43;A43  =  B36-B43;A52  =  B59-B52;A59  =  B59+B52;A37  =  B37+B42;A42  =  B37-B42;A53  =  B58-B53;A58  =  B58+B53;A38  =  B38+B41;A41  =  B38-B41;A54  =  B57-B54;A57  =  B57+B54;A39  =  B39+B40;A40  =  B39-B40;A55  =  B56-B55;A56  =  B56+B55;
/stage  8
Z0  =  A0+B31;Z31  =  A0-B31;Z1  =  A1+B30;Z30  =  A1-B30;Z2  =  A2+B29;Z29  =  A2-B29;Z3  =  A3+B28;Z28  =  A3-B28;Z4  =  A4+A27;Z27  =  A4-A27;Z5  =  A5+A26;Z26  =  A5-A26;Z6  =  A6+A25;Z25  =  A6-A25;Z7  =  A7+A24;Z24  =  A7-A24;Z8  =  A8+A23;Z23  =  A8-A23;Z9  =  A9+A22;Z22  =  A9-A22;Z10  =  A10+A21;Z21  =  A10-A21;Z11  =  A11+A20;Z20  =  A11-A20;Z12  =  A12+B19;Z19  =  A12-B19;Z13  =  A13+B18;Z18  =  A13-B18;Z14  =  A14+B17;Z17  =  A14-B17;Z15  =  A15+B16;Z16  =  A15-B16;Z40  =  (724*(A55-A40))  >>  10;Z55  =  (724*(A55+A40))  >>  10;Z41  =  (724*(A54-A41))  >>  10;Z54  =  (724*(A54+A41))  >>  10;Z42  =  (724*(A53-A42))  >>  10;Z53  =  (724*(A53+A42))  >>  10;Z43  =  (724*(A52-A43))  >>  10;Z52  =  (724*(A52+A43))  >>  10;Z44  =  (724*(A51-A44))  >>  10;Z51  =  (724*(A51+A44))  >>  10;Z45  =  (724*(A50-A45))  >>  10;Z50  =  (724*(A50+A45))  >>  10;Z46  =  (724*(A49-A46))  >>  10;Z49  =  (724*(A49+A46))  >>  10;Z47  =  (724*(A48-A47))  >>  10;Z48  =  (724*(A48+A47))  >>  10;
/stage  9
Y0  =  Z0+A63;Y63  =  Z0-A63;Y1  =  Z1+A62;Y62  =  Z1-A62;Y2  =  Z2+A61;Y61  =  Z2-A61;Y3  =  Z3+A60;Y60  =  Z3-A60;Y4  =  Z4+A59;Y59  =  Z4-A59;Y5  =  Z5+A58;Y58  =  Z5-A58;Y6  =  Z6+A57;Y57  =  Z6-A57;Y7  =  Z7+A56;Y56  =  Z7-A56;Y8  =  Z8+Z55;Y55  =  Z8-Z55;Y9  =  Z9+Z54;Y54  =  Z9-Z54;Y10  =  Z10+Z53;Y53  =  Z10-Z53;Y11  =  Z11+Z52;Y52  =  Z11-Z52;Y12  =  Z12+Z51;Y51  =  Z12-Z51;Y13  =  Z13+Z50;Y50  =  Z13-Z50;Y14  =  Z14+Z49;Y49  =  Z14-Z49;Y15  =  Z15+Z48;Y48  =  Z15-Z48;Y16  =  Z16+Z47;Y47  =  Z16-Z47;Y17  =  Z17+Z46;Y46  =  Z17-Z46;Y18  =  Z18+Z45;Y45  =  Z18-Z45;Y19  =  Z19+Z44;Y44  =  Z19-Z44;Y20  =  Z20+Z43;Y43  =  Z20-Z43;Y21  =  Z21+Z42;Y42  =  Z21-Z42;Y22  =  Z22+Z41;Y41  =  Z22-Z41;Y23  =  Z23+Z40;Y40  =  Z23-Z40;Y24  =  Z24+A39;Y39  =  Z24-A39;Y25  =  Z25+A38;Y38  =  Z25-A38;Y26  =  Z26+A37;Y37  =  Z26-A37;Y27  =  Z27+A36;Y36  =  Z27-A36;Y28  =  Z28+A35;Y35  =  Z28-A35;Y29  =  Z29+A34;Y34  =  Z29-A34;Y30  =  Z30+A33;Y33  =  Z30-A33;Y31  =  Z31+A32;Y32  =  Z31-A32;
}。
【請求項１３】
Ｍ及びＮは３２、ａ及びｄは１６、Ｘ０ないしＸ１５は逆変換される入力値、Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉ，Ｆｉ及びＺｉ（ｉは、０から３１までの整数）は、中間値、Ｙ０ないしＹ６３は、出力値を表すとする時、
前記復元するステップは、１６×１６入力ブロックの行方向及び列方向の値に対して、次のポイント逆変換を繰り返して行われることを特徴とする請求項１０に記載の映像逆変換方法：
{
/stage  0
D0=  X0;E24  =  X1;E12  =  X2;F16  =  -X3;D4  =  X4;    F31  =  X5;    E8  =  X6;  E26  =  -X7;D2  =  X8;      E21  =  X9;    E15  =  X10;    F29  =  X11;E5  =  X12;    F18  =  -X13;      D13  =  X14;      D22  =  X15;
/stage  1
E16  =  (251*F16  )  >>  8;E17  =  (-49*F16  )  >>  8;E18  =  (212*F18  )  >>  8;E19  =  (-142*F18  )  >>  8;E28  =  (142*F29)  >>  8;E29  =  (212*F29)  >>  8;E30  =  (49*F31)  >>  8;E31  =  (251*F31)  >>  8;
/stage  2
D5  =  (181*(E5  ))  >>  8;D7  =  (181*(E5  ))  >>  8;D8  =  (97*E8  )  >>  8;D9  =  (-236*E8  )  >>  8;D11  =  (181*(-  E12))  >>  8;D12  =  (181*(  E12))  >>  8;D14  =  (236*E15)  >>  8;D15  =  (97*E15)  >>  8;D16  =  E16  +  E18;C18  =  E16  -  E18;C17  =  E17  +  E19;D19  =  E17  -  E19;D20  =  (  -  97*E21)  >>  8;D21  =  (  236*E21)  >>  8;D23  =  (181*(-  E24))  >>  8;D24  =  (181*(  E24))  >>  8;D26  =  (236*E26  )  >>  8;D27  =  (97*E26  )  >>  8;D28  =  -  E28  +  E30;C30  =  E28  +  E30;C29  =  -  E29  +  E31;D31  =  E29  +  E31;
/stage  3
C0  =  (181*D0  )  >>  8;C1  =  (181*D0  )  >>  8;C2  =  (97*D2  )  >>  8;C3  =  (236*D2  )  >>  8;C4  =  D4  +  D5;C5  =  D4  -  D5;C6  =    D7;  C7  =  D7;    C8    =  D8    +  D14;C14  =  D8    -  D14;C9    =  D9    +  D15;C15  =  D9    -  D15;C10  =  D11;  C11  =  -  D11;C12  =  D12  +  D13;C13  =  D12  -  D13;  C16  =  (181*(D16  -  D19))  >>  8;C19  =  (181*(D16  +  D19))  >>  8;C20  =  D20  +  D26;C26  =  D20  -  D26;C21  =  D21  +  D27;C27  =  D21  -  D27;C22  =  D22  +  D23;C23  =  D22  -  D23;C24  =  D24  ;C25  =  D24  ;C28  =  (181*(D28  -  D31))  >>  8;C31  =  (181*(D28  +  D31))  >>  8;
/stage  4
B0  =  C0  +  C3;B3  =  C0  -  C3;B1  =  C1  +  C2;B2  =  C1  -  C2;B4  =  (49*C4  -  251*C7)  >>  8;B7  =  (251*C4  +  49*C7)  >>  8;B5  =  (142*C5  -  212*C6)  >>  8;B6  =  (212*C5  +  142*C6)  >>  8;B8  =  C8  +  C11;B11  =  C8  -  C11;B9  =  C9  +  C10;B10  =  C9  -  C10;B12  =  C12  +  C15;B15  =  C12  -  C15;B13  =  C13  +  C14;B14  =  C13  -  C14;B16  =  C16  +  C28;B28  =  C16  -  C28;B17  =  C17  +  C29;B29  =  C17  -  C29;B18  =  C18  +  C30;B30  =  C18  -  C30;B19  =  C19  +  C31;B31  =  C19  -  C31;B20  =  C20  +  C23;B23  =  C20  -  C23;B21  =  C21  +  C22;B22  =  C21  -  C22;B24  =  C24  +  C27;B27  =  C24  -  C27;B25  =  C25  +  C26;B26  =  C25  -  C26;
/stage  5
A0  =  B0  +  B7;A7  =  B0  -  B7;A1  =  B1  +  B6;A6  =  B1  -  B6;A2  =  B2  +  B5;A5  =  B2  -  B5;A3  =  B3  +  B4;A4  =  B3  -  B4;A8  =  (197*B8  -  162*B15)  >>  8;A15  =  (162*B8  +  197*B15)  >>  8;A9  =  (120*B9  +  225*B14)  >>  8;A14  =  (-225*B9  +  120*B14)  >>  8;A10  =  (244*B10  -  74*B13)  >>  8;A13  =  (74*B10  +  244*B13)  >>  8;A11  =  (25*B11  +  254*B12)  >>  8;A12  =  (-254*B11  +  25*B12)  >>  8;A16  =  B16  +  B23;A23  =  B16  -  B23;A17  =  B17  +  B22;A22  =  B17  -  B22;A18  =  B18  +  B21;A21  =  B18  -  B21;A19  =  B19  +  B20;A20  =  B19  -  B20;A24  =  B24  +  B31;A31  =  B24  -  B31;A25  =  B25  +  B30;A30  =  B25  -  B30;A26  =  B26  +  B29;A29  =  B26  -  B29;A27  =  B27  +  B28;A28  =  B27  -  B28;
/stage  6
Z0    =  A0  +  A15;Z1    =  A1  +  A14;Z2    =  A2  +  A13;Z3    =  A3  +  A12;Z4    =  A4  +  A11;Z5    =  A5  +  A10;Z6    =  A6  +  A9;Z7    =  A7  +  A8;Z8    =  A7  -  A8;Z9    =  A6  -  A9;Z10  =  A5  -  A10;Z11  =  A4  -  A11;Z12  =  A3  -  A12;Z13  =  A2  -  A13;Z14  =  A1  -  A14;Z15  =  A0  -  A15;Z16  =  (171*A16  +  189*A31)  >>  8;Z31  =  (-189*A16  +  171*A31)  >>  8;Z17  =  (205*A17  -  152*A30)  >>  8;Z30  =  (152*A17  +  205*A30)  >>  8;Z18  =  (131*A18  +  219*A29)  >>  8;Z29  =  (-219*A18  +  131*A29)  >>  8;Z19  =  (231*A19  -  109*A28)  >>  8;Z28  =  (109*A19  +  231*A28)  >>  8;Z20  =  (86*A20  +  241*A27)  >>  8;Z27  =  (-241*A20  +  86*A27)  >>  8;Z21  =  (248*A21  -  62*A26)  >>  8;Z26  =  (62*A21  +  248*A26)  >>  8;Z22  =  (37*A22  +  253*A25)  >>  8;Z25  =  (-253*A22  +  37*A25)  >>  8;Z23  =  (255*A23  -  12*A24)  >>  8;Z24  =  (12*A23  +  255*A24)  >>  8
/stage  7
Y0  =  Z0  +  Z31;Y31  =  Z0  -  Z31;Y1  =  Z1  +  Z30;Y30  =  Z1  -  Z30;Y2  =  Z2  +  Z29;Y29  =  Z2  -  Z29;Y3  =  Z3  +  Z28;Y28  =  Z3  -  Z28;Y4  =  Z4  +  Z27;Y27  =  Z4  -  Z27;Y5  =  Z5  +  Z26;Y26  =  Z5  -  Z26;Y6  =  Z6  +  Z25;Y25  =  Z6  -  Z25;Y7  =  Z7  +  Z24;Y24  =  Z7  -  Z24;Y8  =  Z8  +  Z23;Y23  =  Z8  -  Z23;Y9  =  Z9  +  Z22;Y22  =  Z9  -  Z22;Y10  =  Z10  +  Z21;Y21  =  Z10  -  Z21;Y11  =  Z11  +  Z20;Y20  =  Z11  -  Z20;Y12  =  Z12  +  Z19;Y19  =  Z12  -  Z19;Y13  =  Z13  +  Z18;Y18  =  Z13  -  Z18;Y14  =  Z14  +  Z17;Y17  =  Z14  -  Z17;Y15  =  Z15  +  Z16;Y16  =  Z15  -  Z16;
}。
【請求項１４】
Ｍ及びＮは３２、ａ及びｄは１６、Ｘ０ないしＸ３１は、逆変換される入力値、Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉ，Ｆｉ及びＺｉ（ｉは、０から３１までの整数）は、中間値、Ｙ０ないしＹ３２は、出力値を表すとする時、
前記復元するステップは、１６×１６入力ブロックの行方向及び列方向の値に対して、次のポイント逆変換を繰り返して行われることを特徴とする請求項１０に記載の映像逆変換方法：
{
/stage  0
D0=  X0;E24  =  X1;E12  =  X2;F16  =  -X3;D4  =  X4;    F31  =  X5;    E8  =  X6;  E26  =  -X7;D2  =  X8;      E21  =  X9;    E15  =  X10;    F29  =  X11;E5  =  X12;    F18  =  -X13;      D13  =  X14;      D22  =  X15;
/stage  1
E17  =  -  (48*F16>>  8);E16  =  F16  +  (50*E17>>  8);E19  =  -  (118*F18  >>  8);E18  =  F18  +  (171*E19>>  8);
E29  =  F29  ;E28  =  (171*E29>>  8);E31  =  F31  ;E30  =  (50*E31>>  8);
/stage  2
D7  =    (E5  >>  1);D5=  E5  -  D7;
D9  =  -E8  ;D8  =  -  (106*D9>>  8);
D12  =  E12  ;D11  =  -  D12;
D15  =  (90*E15>>  8);D14  =  E15  -  (106*D15>>  8);
D16  =  E16  +  E18;C18  =  E16  -  E18;C17  =  E17  +  E19;D19  =  E17  -  E19;
D21  =  E21  ;D20  =  -  (106*D21>>  8);D24  =  E24  ;D23  =  -  D24;D27  =  (90*E26>>  8);D26  =  E26  -  (106*D27>>  8);D28  =  -  E28  +  E30;C30  =  E28  +  E30;C29  =  -  E29  +  E31;D31  =  E29  +  E31;
/stage  3
C1  =  D0  >>  1;C0  =  D0  -  C1;
C3  =  D2  ;C2  =  (106*C3>>  8);
C4  =  D4  +  D5;C5  =  D4  -  D5;C6  =  D7;  C7  =  D7;    
C8    =  D8    +  D14;C14  =  D8    -  D14;C9    =  D9    +  D15;C15  =  D9    -  D15;C10  =  D11;  C11  =  -  D11;C12  =  D12  +  D13;C13  =  D12  -  D13;  
D16  =  D16  -  (106*D19>>  8);C19  =  D19  +  (181*D16>>  8);C16  =  D16  -  (106*C19>>  8);C20  =  D20  +  D26;C26  =  D20  -  D26;C21  =  D21  +  D27;C27  =  D21  -  D27;C22  =  D22  +  D23;C23  =  D22  -  D23;C24  =  D24;C25  =  D24;D28  =  D28  -  (106*D31>>  8);C31  =  D31  +  (181*D28>>  8);C28  =  D28  -  (106*C31>>  8);
/stage  4
B0  =  C0  +  C3;B3  =  C0  -  C3;B1  =  C1  +  C2;B2  =  C1  -  C2;
C4  =  C4  -  (210*C7>>  8);B7  =  C7  +  (251*C4>>  8);B4  =  C4  -  (210*B7>>  8);C5  =  C5  -  (136*C6>>  8);B6  =  C6  +  (212*C5>>  8);B5  =  C5  -  (136*B6>>  8);
B8  =  C8  +  C11;B11  =  C8  -  C11;B9  =  C9  +  C10;B10  =  C9  -  C10;
B12  =  C12  +  C15;B15  =  C12  -  C15;B13  =  C13  +  C14;B14  =  C13  -  C14;
B16  =  C16  +  C28;B28  =  C16  -  C28;B17  =  C17  +  C29;B29  =  C17  -  C29;B18  =  C18  +  C30;B30  =  C18  -  C30;B19  =  C19  +  C31;B31  =  C19  -  C31;
B20  =  C20  +  C23;B23  =  C20  -  C23;B21  =  C21  +  C22;B22  =  C21  -  C22;
B24  =  C24  +  C27;B27  =  C24  -  C27;B25  =  C25  +  C26;B26  =  C25  -  C26;
/stage  5
A0  =  B0  +  B7;A7  =  B0  -  B7;A1  =  B1  +  B6;A6  =  B1  -  B6;A2  =  B2  +  B5;A5  =  B2  -  B5;A3  =  B3  +  B4;A4  =  B3  -  B4;
B8  =  B8  -  (91*B15>>  8);A15  =  B15  +  (162*B8>>  8);A8  =  B8  -  (91*A15>>  8);B9  =  B9  +  (153*B14>>  8);A14  =  B14  -  (225*B9>>  8);A9  =  B9  +  (153*A14>>  8);B10  =  B10  -  (37*B13>>  8);A13  =  B13  +  (74*B10>>  8);A10  =  B10  -  (37*A13>>  8);B11  =  B11  +  (232*B12>>  8);A12  =  B12  -  (254*B11>>  8);A11  =  B11  +  (232*A12>>  8);A16  =  B16  +  B23;A23  =  B16  -  B23;A17  =  B17  +  B22;A22  =  B17  -  B22;A18  =  B18  +  B21;A21  =  B18  -  B21;A19  =  B19  +  B20;A20  =  B19  -  B20;
A24  =  B24  +  B31;A31  =  B24  -  B31;A25  =  B25  +  B30;A30  =  B25  -  B30;A26  =  B26  +  B29;A29  =  B26  -  B29;A27  =  B27  +  B28;A28  =  B27  -  B28;
/stage  6
Z0    =  A0  +  A15;Z1    =  A1  +  A14;Z2    =  A2  +  A13;Z3    =  A3  +  A12;Z4    =  A4  +  A11;Z5    =  A5  +  A10;Z6    =  A6  +  A9;Z7    =  A7  +  A8;Z8    =  A7  -  A8;Z9    =  A6  -  A9;Z10  =  A5  -  A10;Z11  =  A4  -  A11;Z12  =  A3  -  A12;Z13  =  A2  -  A13;Z14  =  A1  -  A14;Z15  =  A0  -  A15;
A16  =  A16  +  (113*A31>>  8);Z31  =  A31  -  (189*A16>>  8);Z16  =  A16  +  (113*Z31>>  8);A17  =  A17  -  (84*A30>>  8);Z30  =  A30  +  (152*A17>>  8);Z17  =  A17  -  (84*Z30>>  8);A18  =  A18  +  (145*A29>>  8);Z29  =  A29  -  (219*A18>>  8);Z18  =  A18  +  (145*Z29>>  8);A19  =  A19  -  (57*A28>>  8);Z28  =  A28  +  (109*A19>>  8);Z19  =  A19  -  (57*Z28>>  8);A20  =  A20  +  (180*A27>>  8);Z27  =  A27  -  (241*A20>>  8);Z20  =  A20  +  (180*Z27>>  8);A21  =  A21  -  (31*A26>>  8);Z26  =  A26  +  (62*A21>>  8);Z21  =  A21  -  (31*Z26>>  8);A22  =  A22  +  (220*A25>>  8);Z25  =  A25  -  (253*A22>>  8);Z22  =  A22  +  (220*Z25>>  8);A23  =  A23  -  (6*A24>>  8);Z24  =  A24  +  (12*A23>>  8);Z23  =  A23  -  (6*Z24>>  8);
/stage  7
Y0  =  Z0  +  Z31;Y31  =  Z0  -  Z31;Y1  =  Z1  +  Z30;Y30  =  Z1  -  Z30;Y2  =  Z2  +  Z29;Y29  =  Z2  -  Z29;Y3  =  Z3  +  Z28;Y28  =  Z3  -  Z28;Y4  =  Z4  +  Z27;Y27  =  Z4  -  Z27;Y5  =  Z5  +  Z26;Y26  =  Z5  -  Z26;Y6  =  Z6  +  Z25;Y25  =  Z6  -  Z25;Y7  =  Z7  +  Z24;Y24  =  Z7  -  Z24;Y8  =  Z8  +  Z23;Y23  =  Z8  -  Z23;Y9  =  Z9  +  Z22;Y22  =  Z9  -  Z22;Y10  =  Z10  +  Z21;Y21  =  Z10  -  Z21;Y11  =  Z11  +  Z20;Y20  =  Z11  -  Z20;Y12  =  Z12  +  Z19;Y19  =  Z12  -  Z19;Y13  =  Z13  +  Z18;Y18  =  Z13  -  Z18;Y14  =  Z14  +  Z17;Y17  =  Z14  -  Z17;Y15  =  Z15  +  Z16;Y16  =  Z15  -  Z16;
}。
【請求項１５】
映像の逆変換装置において、
Ｍ×Ｎ（Ｍ及びＮは、正の整数）ブロックの周波数逆変換に利用されるＭ×Ｎ逆変換行列の元素のうち、所定の周波数帯域の変換係数の逆変換のための元素を選択して、縮小された逆変換行列を獲得する縮小逆変換行列獲得部と、
前記縮小された逆変換行列を、前記所定の周波数帯域の変換係数に適用して、周波数逆変換を行うことによって、前記Ｍ×Ｎブロックを復元する逆変換部と、を備えることを特徴とする映像逆変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、映像の符号化、復号化方法及びその装置に係り、特にブロックの低周波数帯域のみを処理することによって、演算複雑度を低減させる映像の変換、逆変換方法及びその装置に関する。
【背景技術】
【０００２】
Ｈ．２６４及びＭＰＥＧ−４のような現在の国際ビデオコーディング標準において、ビデオ信号は、シーケンス、フレーム、スライス、マクロブロック及びブロックに階層的に分割され、ブロックは、最小処理ユニットとなる。エンコーディングの側面において、イントラ・フレームまたはインター・フレームの予測を通じて、ブロックの予測残留エラーが獲得され、ブロック変換は、エネルギーが小数の係数に集中するように実行され、量子化、スキャニング、ランレングスコーディング(Run  Length  Coding)及びエントロピーコーディングを通じて、イメージデータは圧縮され、コーディングされたビットストリームとして記録される。デコーディングの側面において、処理手続きは逆になる。まず、エントロピーコーディングのブロック変換係数が、ビートストリームから抽出される。次いで、逆量子化及び逆変換を通じて、ブロックの予測残留エラーは再構成され、予測情報は、ブロックのビデオデータを再構成するために使われる。エンコーディング・デコーディング処理手続きにおいて、変換モジュールは、ビデオ圧縮のベースであり、変換性能は、コーデックの一般的な性能に直接的に影響を与える。
【０００３】
離散コサイン変換(Discrete  Cosine  Transform:  DCT)は、ＭＰＥＧ−１及びＨ．２６１のような初期のビデオコーディング標準で採択された。１９７４年ＤＣＴが提案された後、ＤＣＴは、イメージ及びビデオコーディング分野で広く使われた。変換ドメイン内のイメージ要素の相関性を除去し、高効率のイメージ圧縮のためのベースを設けるので、ＤＣＴの変換性能は、全ての次善変換(sub-optimal  transform)のうち優秀である。しかし、ＤＣＴ行列は、浮動小数点数で表現されるので、大量の浮動小数点計算によって、多くのシステム資源が消耗される。変換効率を改善する一方、大きいサイズのブロックに対する変換を行うために、新たなＤＣＴアルゴリズムの必要性が高くなった。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、低周波数帯域に属する変換係数を、少ない演算過程を通じて生成するための映像変換方法及びその装置、並びに映像逆変換方法及びその装置を提供することである。
【課題を解決するための手段】
【０００５】
本発明の一実施形態によれば、既存の変換行列を縮小した縮小変換行列を利用して、所定の周波数帯域の変換係数を抽出する。
【発明の効果】
【０００６】
本発明によれば、選択された低周波数帯域のみに対して変換及び逆変換を行うことによって、変換及び逆変換過程にかかる演算量を減少させることができる。また、本発明によれば、加算、減算及びシフト演算により変換及び逆変換を行うことによって、演算量を減少させることができる。
【図面の簡単な説明】
【０００７】
【図１】本発明の一実施形態による映像符号化装置を示すブロック図である。
【図２】本発明の一実施形態による映像変換装置の構成を示すブロック図である。
【図３】本発明の一実施形態によって、周波数領域選択部で選択された周波数帯域によって、縮小変換行列獲得部が縮小変換行列を獲得する過程を説明するための参照図である。
【図４】本発明の一実施形態による４ポイント、８ポイント、１６ポイント、３２ポイントＤＣＴのフローグラフである。
【図５】本発明の他の実施形態による３２ポイントＤＣＴのフローグラフである。
【図６】図５の３２ポイントＤＣＴを構成するバタフライ構造の演算過程を示す参照図である。
【図７】本発明の一実施形態による映像変換方法を示すフローチャートである。
【図８】本発明の一実施形態による映像復号化装置を示すブロック図である。
【図９】本発明の一実施形態による映像逆変換装置の構成を示すブロック図である。
【図１０】本発明の一実施形態によって、受信された変換ブロックの周波数帯域によって、縮小逆変換行列獲得部が縮小逆変換行列を獲得する過程を説明するための参照図である。
【図１１】本発明の一実施形態による映像逆変換方法を示すフローチャートである。
【図１２Ａ】本発明の一実施形態によって、選択される周波数帯域の変換係数を示す参照図である。
【図１２Ｂ】本発明の一実施形態によって、選択される周波数帯域の変換係数を示す参照図である。
【発明を実施するための形態】
【０００８】
前記課題を解決するための本発明の一実施形態による映像変換方法は、Ｍ×Ｎ（Ｍ及びＮは、正の整数）入力ブロックの周波数変換のための所定の周波数領域を選択するステップと、前記Ｍ×Ｎ入力ブロックの周波数変換に利用されるＭ×Ｎ変換行列の元素のうち、前記選択された周波数領域に対応する変換係数の生成のための元素を選択して、縮小された変換行列を獲得するステップと、前記縮小された変換行列を、前記Ｍ×Ｎ入力ブロックに適用して、周波数変換を行うことによって、前記選択された周波数領域に対応する変換係数を生成するステップと、を含むことを特徴とする。
【０００９】
本発明の一実施形態による映像変換装置は、Ｍ×Ｎ（Ｍ及びＮは、正の整数）入力ブロックの周波数変換のための所定の周波数領域を選択する周波数領域選択部と、前記Ｍ×Ｎ入力ブロックの周波数変換に利用されるＭ×Ｎ変換行列の元素のうち、前記選択された周波数領域に対応する変換係数の生成のための元素を選択して、縮小された変換行列を獲得する縮小変換行列獲得部と、前記縮小された変換行列を、前記Ｍ×Ｎ入力ブロックに適用して、周波数変換を行うことによって、前記選択された周波数領域に対応する変換係数を生成する周波数変換部と、を備えることを特徴とする。
【００１０】
本発明の一実施形態による映像逆変換方法は、Ｍ×Ｎ（Ｍ及びＮは、正の整数）ブロックの変換係数のうち、所定の周波数帯域の変換係数を受信するステップと、前記Ｍ×Ｎブロックの周波数逆変換に利用されるＭ×Ｎ逆変換行列の元素のうち、前記所定の周波数帯域の変換係数の逆変換のための元素を選択して、縮小された逆変換行列を獲得するステップと、前記縮小された逆変換行列を、前記所定の周波数帯域の変換係数に適用して、周波数逆変換を行うことによって、前記Ｍ×Ｎブロックを復元するステップと、を含むことを特徴とする。
【００１１】
本発明の一実施形態による映像逆変換装置は、Ｍ×Ｎ（Ｍ及びＮは、正の整数）ブロックの周波数逆変換に利用されるＭ×Ｎ逆変換行列の元素のうち、所定の周波数帯域の変換係数の逆変換のための元素を選択して、縮小された逆変換行列を獲得する縮小逆変換行列獲得部と、前記縮小された逆変換行列を、前記所定の周波数帯域の変換係数に適用して、周波数逆変換を行うことによって、前記Ｍ×Ｎブロックを復元する逆変換部と、を備えることを特徴とする。
【００１２】
以下、添付された図面を参照して、本発明の望ましい実施形態について具体的に説明する。
【００１３】
図１は、本発明の一実施形態による映像符号化装置を示すブロック図である。図１を参照すれば、本発明の一実施形態による映像符号化装置１００は、予測部１１０、減算部１１５、変換部１２０、量子化部１３０及びエントロピー符号化部１４０を備える。
【００１４】
予測部１１０は、入力映像を所定のサイズのブロックに分割し、分割された各ブロックに対して、インター予測またはイントラ予測を通じて、予測ブロックを生成する。具体的に、予測部１１０は、以前に符号化された後で復元された参照ピクチャーの所定の探索範囲内で、現在ブロックと類似した領域を指す動きベクトルを生成する動き予測及び補償過程を通じて、予測ブロックを生成するインター予測、及び現在ブロックに隣接した周辺ブロックのデータを利用して、予測ブロックを生成するイントラ予測を行う。
【００１５】
減算部１１５は、現在ブロックの予測ブロックを、原映像データから減算したレジデュアルを生成する。
【００１６】
変換部１２０は、レジデュアルを周波数領域に変換する。特に、本発明の実施形態では、既存の４×４、８×８の相対的に小さいサイズに対して定義された離散コサイン変換(Discrete  Cosine  Transform:  DCT)行列を拡張して、１６×１６以上の大きいサイズのブロックにも適用される。後述するように、本発明の一実施形態による変換部１２０は、既存のＤＣＴに利用される変換行列の元素を、有理数値に置換することによって、浮動小数点演算ではない整数に基づいた加算、減算及びシフト演算によりＤＣＴを行うことによって、演算の複雑度を低減させる一方、演算速度を速める。また、本発明の一実施形態による変換部１２０は、ＤＣＴに利用される変換行列の元素に２の累乗を乗じた後で四捨五入した元素から構成された変換行列を利用して、ＤＣＴを行うことによって、全体的な演算複雑度を低減させることができる。また、本発明の一実施形態による変換部１２０は、Ｍ×Ｎ入力ブロックの周波数変換に利用されるＭ×Ｎ変換行列の元素のうち、所定の周波数領域に対応する変換係数の生成のための元素を選択して、縮小された変換行列を獲得し、縮小された変換行列を適用して変換を行うことによって、変換過程にかかる全体の演算量を減少させる。
【００１７】
量子化部１３０は、変換されたレジデュアルを量子化する。量子化部１３０は、変換部１２０で近似化された変換行列を利用して変換された値と、実際の浮動小数点演算に基づいたＤＣＴを通じて得られた値との誤差値を減少させるために、所定のスケーリングファクタを変換値に適用する。
【００１８】
エントロピー符号化部１４０は、量子化された映像データに対して可変長符号化を行って、ビットストリームを生成する。
【００１９】
以下、本発明の一実施形態による映像変換について具体的に説明する。
【００２０】
図２は、本発明の一実施形態による映像変換装置の構成を示すブロック図である。図２の映像変換装置２００は、図１の変換部１２０に対応する。図２を参照すれば、映像変換装置２００は、周波数領域選択部２１０、縮小変換行列獲得部２２０及び周波数変換部２３０を備える。
【００２１】
周波数領域選択部２１０は、Ｍ×Ｎ（Ｍ及びＮは、正の整数）入力ブロックの周波数変換のための所定の周波数領域を選択する。すなわち、周波数領域選択部２１０は、入力されたＭ×Ｎ入力ブロックを周波数領域に変換する場合、いかなる周波数帯域の変換係数を生成するかを選択する。一般的に、周波数変換過程を通じて生成された変換ブロックの低周波数帯域は、相対的に大きい値を有し、高周波数帯域は、小さい値を有するので、周波数領域選択部２１０は、演算過程を減らし、かつ誤差を最小化するために、低周波数帯域を選択することが望ましい。どの範囲の低周波数帯域を選択するかは、符号化側と復号化側で事前に定義された範囲で選択されるか、または変換ブロックの変換係数を分析して、０ではない変換係数を有する周波数帯域を検出することによって選択される。
【００２２】
図１２Ａ及び図１２Ｂは、本発明の一実施形態によって、選択される周波数帯域の変換係数を示す参照図である。図１２Ａ及び図１２Ｂを参照すれば、周波数領域選択部２１０は、全体変換ブロック１２００のうち、いかなる周波数帯域の変換係数を獲得するかを決定する。例えば、周波数領域選択部２１０は、全体変換ブロック１２００のうち、低周波数帯域の変換係数を抽出するために、図１２Ａに示したように、ＤＣ係数周辺のａ×ｄ変換ブロック１２１０内の変換係数を選択するか、または図１２Ｂに示したように、ＤＣ係数を中心として三角形ブロック１２２０内の変換係数を選択する。図１２Ａのように、選択された周波数帯域の変換係数についての情報は、ａ及びｄの値をビットストリームに含めて伝送されたり、符号化側と復号化側で事前にａ及びｄの値が、全体変換ブロック１２００のサイズ情報に基づいて設定される。また、図１２Ｂに示したように、三角形ブロック１２２０を利用する場合、底辺と高さとについての情報ｃをビットストリームに含めたり、符号化側と復号化側で事前にｃの値が設定されもする。また、図１２Ａ及び図１２Ｂに示した長方形ブロック１２１０及び三角形ブロック１２２０のうちいかなる形態を利用して、変換係数を獲得する低周波数帯域を定義するかについての情報も、所定のシンタックスを利用してビットストリームに含めて伝送される。
【００２３】
縮小変換行列獲得部２２０は、Ｍ×Ｎ入力ブロックの周波数変換に利用されるＭ×Ｎ変換行列の元素のうち、選択された周波数領域に対応する変換係数の生成のための元素を選択して、縮小された変換行列を獲得する。ここで、周波数変換は、ＤＣＴであると仮定する。ＤＣＴは、整数を使用する方法、浮動小数点演算を使用する方法などがある。かかるＤＣＴ方法は、列方向及び行方向にそれぞれ一次元変換行列を適用して行われることが一般的である。
【００２４】
周波数変換部２３０は、縮小された変換行列を、Ｍ×Ｎ入力ブロックに適用して、周波数変換を行うことによって、選択された周波数領域に対応する変換係数を生成する。
【００２５】
図３は、本発明の一実施形態によって、周波数領域選択部２１０で選択された周波数帯域によって、縮小変換行列獲得部２２０が縮小変換行列を獲得する過程を説明するための参照図である。
【００２６】
図３を参照すれば、Ｍ×Ｎ入力ブロックを示す行列をＸ  ３２０、Ｍ×Ｎサイズの垂直変換行列をＣｆ  ３１０、Ｍ×Ｎサイズの水平変換行列をＣｆＴ  ３３０とすれば、次の数式；Ｃｆ＊Ｘ＊ＣｆＴによる行列演算を通じて、Ｍ×Ｎ入力ブロックＸ  ３２０を周波数領域に変換したＭ×Ｎ変換ブロックＹ  ３４０を獲得する。
【００２７】
本発明の一実施形態によれば、かかるＭ×Ｎ変換ブロックＹ  ３４０を構成する全ての変換係数を獲得するものではなく、周波数領域選択部２１０で選択された所定の周波数帯域の変換係数のみを獲得する。前述したように、周波数領域選択部２１０は、Ｍ×Ｎサイズの入力ブロックＸ  ３２０を周波数領域に変換する場合、いかなる周波数帯域の変換係数を生成するかを選択する。図３に示したように、周波数領域選択部２１０により、低周波数帯域に該当するａ×ｄ（ａは、Ｍより小さい正の整数、ｄは、Ｎより小さい正の整数）サイズの変換ブロック３４５が選択されたと仮定する。
【００２８】
低周波数帯域のａ×ｄ変換ブロック３４５を獲得するためには、Ｍ×Ｎサイズの垂直変換行列Ｃｆ  ３１０及びＭ×Ｎサイズの水平変換行列ＣｆＴ  ３３０をそのまま適用するものではなく、Ｍ×Ｎサイズの垂直変換行列Ｃｆ  ３１０及びＭ×Ｎサイズの水平変換行列ＣｆＴ  ３３０を縮小したａ×Ｎサイズの縮小垂直変換行列ＭＣｆ  ３１５及びＭ×ｄサイズの縮小水平変換行列ＭＣｆＴ  ３３５を適用して、次の数式；ＭＣｆ＊Ｘ＊ＭＣｆＴによる行列演算を通じて、低周波数帯域のａ×ｄ変換ブロック３４５を獲得する。かかる低周波数帯域のａ×ｄ変換ブロック３４５を獲得するために、縮小変換行列獲得部２２０は、Ｍ×Ｎサイズの垂直変換行列Ｃｆ  ３１０のうち、上側のａ行に該当する元素を選択して、ａ×Ｎサイズの縮小垂直変換行列ＭＣｆ  ３１５を生成する。また、縮小変換行列獲得部２２０は、Ｍ×Ｎサイズの水平変換行列ＣｆＴ  ３３０のうち、左側のｄ列に該当する元素を選択して、Ｍ×ｄサイズの縮小水平変換行列ＭＣｆＴ  ３３５を生成する。例えば、図３に示したように、Ｍ及びＮを１６、ａ及びｄは８であると仮定すれば、縮小変換行列獲得部２２０は、低周波数帯域の８×８サイズの変換ブロックに該当する変換係数を獲得するために、１６×１６垂直変換行列のうち、上側の８行のみを選択して、８×１６サイズの縮小垂直変換行列を獲得し、１６×１６水平変換行列のうち、左側の８列のみを選択して、１６×８サイズの縮小水平変換行列を獲得する。周波数変換部２３０は、８×１６サイズの縮小垂直変換行列、１６×８サイズの縮小水平変換行列、及び１６×１６入力ブロック間の行列演算を通じて、８×８サイズの変換ブロックを生成する。具体的に、８×１６サイズの縮小垂直変換行列を、１６×１６入力ブロックに適用すれば、８×１６サイズの中間値が生成され、８×１６サイズの中間値に再び１６×８サイズの縮小水平変換行列を適用すれば、最終的に低周波数帯域に該当する８×８サイズの変換行列が獲得される。
【００２９】
一方、垂直変換行列の（ｉ，ｋ）番目（ｉ，ｋは、整数）に位置した元素の値をＡｉｋとすれば、Ｎ×Ｎ入力ブロックの変換のための垂直変換行列の（ｉ，ｋ）番目の成分Ａｉｋは、下記の数式（１)のように定義される。
【００３０】
【数１】
2013542664.tif 000003
垂直変換行列と水平変換行列は、互いに二項関係にあるので、水平変換行列の（ｉ，ｋ）番目の成分Ｂｉｋは、垂直変換行列と同様に、コサイン関数を利用した値として表現される。一般的に、変換過程で、かかる変換行列の元素はそのまま利用されず、加算とシフト演算のみで変換過程を行うために、所定のスケーリング係数を乗じた値を利用する。数式（１）では、浮動小数点を利用するＤＣＴである場合を表しているが、ＤＣＴは、浮動小数点を利用した変換以外に、固定小数点変換を利用する。変換過程で、所定のスケーリング係数を乗じた値を利用する場合、量子化ステップで、スケーリング係数の値で変換係数を割るデスケーリング過程が付加的に行われる。
【００３１】
図４は、本発明の一実施形態による４ポイント、８ポイント、１６ポイント、３２ポイントＤＣＴのフローグラフである。図４を参照すれば、ｆ０ないしｆ３１は、一次元変換の入力値を表すと共に、一次元逆変換の出力値となる。ｆ０ないしｆ３１は、一次元変換の出力値を表すと共に、一次元逆変換の入力値となる。変換時に、データ処理方向は、左側から右側であり、逆変換時に、データ処理方向は、右側から左側である。点で交差する二本のラインは、二つの数の加算を表す。各ライン上の値は、当該係数による乗算を表す。ｃθは、ｃｏｓθ、ｓθは、ｓｉｎθを表し、‘−’は、否定を表す。点線で表示された４１０は、４ポイント一次元変換のフローグラフ、点線で表示された４２０は、８ポイント一次元変換のフローグラフ、点線で表示された４３０は、１６ポイント一次元変換のフローグラフ、点線で表示された４４０は、３２ポイント一次元変換のフローグラフを示す。
【００３２】
フローグラフ４００に示したように、ＤＣＴの短所は、ｃθ及びｓθがθの値によって無理数となるため、演算複雑度が増加するというものである。これによって、入力値が整数であるとしても、最終変換結果値は、無理数にマッピングされる。かかるＤＣＴ過程は、ハードウェアで具現する時に複雑度を増加させる。したがって、本発明の一実施形態によれば、ＤＣＴに利用される無理数を有理数に置換して、本来のＤＣＴと最大限類似した結果値を有させる整数変換方法を提供する。具体的に、Ｎ×Ｎ変換行列を構成する元素の成分ｃｏｓ（π×（ｉ／２）／Ｎ）（ｉは、０からＮ−１までの整数）は、有理数であるＮ個のａｉ変数に置換される。例えば、Ｎ＝１６の場合、ｃｏｓ０はａ０に、ｃｏｓ（π×（１／２）／１６）はａ１に、ｃｏｓ（π×（２／２）／１６）はａ２に、ｃｏｓ（π×（３／２）／１６）はａ３に、ｃｏｓ（π×（４／２）／１６）はａ４に、ｃｏｓ（π×（５／２）／１６）はａ５に、ｃｏｓ（π×（６／２）／１６）はａ６に、ｃｏｓ（π×（７／２）／１６）はａ７に、ｃｏｓ（π×（８／２）／１６）はａ８に、ｃｏｓ（π×（９／２）／１６）はａ９に、ｃｏｓ（π×（１０／２）／１６）はａ１０に、ｃｏｓ（π×（１１／２）／１６）はａ１１に、ｃｏｓ（π×（１２／２）／１６）はａ１２に、ｃｏｓ（π×（１３／２）／１６）はａ１３に、ｃｏｓ（π×（１４／２）／１６）はａ１４に、ｃｏｓ（π×（１５／２）／１６）はａ１５に置換される。変数ａｉは、有理数であり、かつ分母は、シフト演算が可能な２の累乗形態の値を有することが望ましい。このように、変数ａｉが２の累乗形態の有理数である制限条件を設定する理由は、分母が２の累乗形態である場合、除算がライトシフト演算（＞＞）のみを利用して具現されるためである。一例として、Ｎが１６である場合、１６個の変数ａｉは、次の値；ａ１＝６３／６４，ａ２＝６２／６４，ａ３＝６１／６４，ａ４＝５９／６４，ａ５＝５６／６４，ａ６＝５３／６４，ａ７＝４９／６４，ａ８＝４５／６４，ａ９＝４０／６４，ａ１０＝３５／６４，ａ１１＝３０／６４，ａ１２＝２４／６４，ａ１３＝１８／６４，ａ１４＝１２／６４及びａ１５＝６／６４を有する。Ｎが３２である場合、３２個の変数ａｉは、次の値；ａ１＝２５５／２５６，ａ２＝２５４／２５６，ａ３＝２５３／２５６，ａ４＝２５１／２５６，ａ５＝２４８／２５６，ａ６＝２４４／２５６，ａ７＝２４１／２５６，ａ８＝２３６／２５６，ａ９＝２３１／２５６，ａ１０＝２２５／２５６，ａ１１＝２１９／２５６，ａ１２＝２１２／２５６，ａ１３＝２０５／２５６，ａ１４＝１９７／２５６，ａ１５＝１８９／２５６，ａ１６＝１８１／２５６，ａ１７＝１７１／２５６，ａ１８＝１６２／２５６，ａ１９＝１５２／２５６，ａ２０＝１４２／２５６，ａ２１＝１３１／２５６，ａ２２＝１２０／２５６，ａ２３＝１０９／２５６，ａ２４＝９７／２５６，ａ２５＝８６／２５６，ａ２６＝７４／２５６，ａ２７＝６２／２５６，ａ２８＝４９／２５６，ａ２９＝３７／２５６，ａ３０＝２５／２５６及びａ３１＝１２／２５６を有する。
【００３３】
一方、Ｍ及びＮは３２、Ｘ０ないしＸ３１は、入力値、Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉ，Ｆｉ及びＧｉ（ｉは、０から３１までの整数）は、中間値、Ｙ０ないしＹ３１は、出力値を表すとする時、周波数変換部２３０は、図４のフローグラフ４００に基づいて、３２×３２入力ブロックの行方向及び列方向の入力値に対して、次のポイント変換を繰り返して、低周波数帯域の１６×１６変換ブロックを生成する。
【００３４】
{
/stage  0
A0  =  X0  +  X31;A31  =  X0  -  X31;A1  =  X1  +  X30;A30  =  X1  -  X30;A2  =  X2  +  X29;A29  =  X2  -  X29;A3  =  X3  +  X28;A28  =  X3  -  X28;A4  =  X4  +  X27;A27  =  X4  -  X27;A5  =  X5  +  X26;A26  =  X5  -  X26;A6  =  X6  +  X25;A25  =  X6  -  X25;A7  =  X7  +  X24;A24  =  X7  -  X24;A8  =  X8  +  X23;A23  =  X8  -  X23;A9  =  X9  +  X22;A22  =  X9  -  X22;A10  =  X10  +  X21;A21  =  X10  -  X21;A11  =  X11  +  X20;A20  =  X11  -  X20;A12  =  X12  +  X19;A19  =  X12  -  X19;A13  =  X13  +  X18;A18  =  X13  -  X18;A14  =  X14  +  X17;A17  =  X14  -  X17;A15  =  X15  +  X16;A16  =  X15  -  X16;
/stage  1
B0  =  A0  +  A15;B15  =  A0  -  A15;B1  =  A1  +  A14;B14  =  A1  -  A14;B2  =  A2  +  A13;B13  =  A2  -  A13;B3  =  A3  +  A12;B12  =  A3  -  A12;B4  =  A4  +  A11;B11  =  A4  -  A11;B5  =  A5  +  A10;B10  =  A5  -  A10;B6  =  A6  +  A9;B9  =  A6  -  A9;B7  =  A7  +  A8;B8  =  A7  -  A8;B20  =  (  181  *  (  A27  -  A20  )  )  >>  8;B27  =  (  181  *  (  A27  +  A20  )  )  >>  8;B21  =  (  181  *  (  A26  -  A21  )  )  >>  8;B26  =  (  181  *  (  A26  +  A21  )  )  >>  8;B22  =  (  181  *  (  A25  -  A22  )  )  >>  8;B25  =  (  181  *  (  A25  +  A22  )  )  >>  8;B23  =  (  181  *  (  A24  -  A23  )  )  >>  8;B24  =  (  181  *  (  A24  +  A23  )  )  >>  8;
/Stage  2
C0  =  B0  +  B7;C7  =  B0  -  B7;C1  =  B1  +  B6;C6  =  B1  -  B6;C2  =  B2  +  B5;C5  =  B2  -  B5;C3  =  B3  +  B4;C4  =  B3  -  B4;C10  =  (  181  *  (  B13  -  B10  )  )  >>  8;C13  =  (  181  *  (  B13  +  B10  )  )  >>  8;C11  =  (  181  *  (  B12  -  B11  )  )  >>  8;C12  =  (  181  *  (  B12  +  B11  )  )  >>  8;C16  =  A16  +  B23;C23  =  A16  -  B23;C24  =  A31  -  B24;C31  =  A31  +  B24;C17  =  A17  +  B22;C22  =  A17  -  B22;C25  =  A30  -  B25;C30  =  A30  +  B25;C18  =  A18  +  B21;C21  =  A18  -  B21;C26  =  A29  -  B26;C29  =  A29  +  B26;C19  =  A19  +  B20;C20  =  A19  -  B20;C27  =  A28  -  B27;C28  =  A28  +  B27;
/stage  3
D0  =  C0  +  C3;D3  =  C0  -  C3;D8  =  B8  +  C11;D11  =  B8  -  C11;D12  =  B15  -  C12;D15  =  B15  +  C12;D1  =  C1  +  C2;D2  =  C1  -  C2;D9  =  B9  +  C10;D10  =  B9  -  C10;D13  =  B14  -  C13;D14  =  B14  +  C13;D5  =  (  181*(  C6  -  C5  )  )  >>  8;D6  =  (  181*(  C6  +  C5  )  )  >>  8;D18  =  (  97*C29  -  236*C18  )  >>  8;D20  =  (  -  236*C27  -  97*C20  )  >>  8;D26  =  (-  236*C21  +  97*C26  )  >>  8;D28  =  (  97*C19  +  236*C28  )  >>  8;D19  =  (  97*C28  -  236*C19  )  >>  8;D21  =  (  -  236*C26  -  97*C21  )  >>  8;D27  =  (-  236*C20  +  97*C27  )  >>  8;D29  =  (  97*C18  +  236*C29  )  >>  8;
/stage  4
Y0  =  (  181  *  (  D0  +  D1  )  )  >>  8;Y8  =  (  236  *  D3  +  97  *  D2  )  >>  8;
E4  =  C4  +  D5;E5  =  C4  -  D5;E6  =  C7  -  D6;E7  =  C7  +  D6;E9  =  (  97*D14  -  236*D9  )  >>  8;E10  =  (-  236*D13  -  97*D10  )  >>  8;E13  =  (  97*D13  -  236*D10  )  >>  8;E14  =  (  236*D14  +  97*D9  )  >>  8;E16  =  C16  +  D19;E19  =  C16  -  D19;E20  =  C23  -  D20;E23  =  C23  +  D20;E24  =  C24  +  D27;E27  =  C24  -  D27;E28  =  C31  -  D28;E31  =  C31  +  D28;E17  =  C17  +  D18;E18  =  C17  -  D18;E21  =  C22  -  D21;E22  =  C22  +  D21;E25  =  C25  +  D26;E26  =  C25  -  D26;E29  =  C30  -  D29;E30  =  C30  +  D29;
/Stage  5
Y4  =  (  49  *  E4  +  251  *  E7  )  >>  8;Y12  =  (  212  *  E6  -  142  *  E5  )  >>  8;F8  =  D8  +  E9;F9  =  D8  -  E9;F10  =  D11  -  E10;F11  =  D11  +  E10;F12  =  D12  +  E13;F13  =  D12  -  E13;F14  =  D15  -  E14;F15  =  D15  +  E14;F17  =  (  49  *  E30  -  251  *  E17  )  >>  8;F18  =  (  -  251*E29  -  49*E18  )  >>  8;F21  =  (  212*E26  -  142*E21  )  >>  8;F22  =  (  -  142*E25  -  212*E22  )  >>  8;F25  =  (  212*E25  -  142*E22  )  >>  8;F26  =  (  142*E26  +  212*E21  )  >>  8;F29  =  (  49*E29  -  251*E18  )  >>  8;F30  =  (  251*E30  +  49*E17  )  >>  8;;
/stage  6
Y2  =  (  25  *  F8  +  254  *  F15  )  >>  8;Y10  =  (  120*F10  +  225*F13  )  >>  8;Y6  =  (  244  *  F12  -  74  *  F11  )  >>  8;Y14  =  (  197*F14  -  162*F9  )  >>  8;G16  =  E16  +  F17;G17  =  E16  -  F17;G18  =  E19  -  F18;G19  =  E19  +  F18;G20  =  E20  +  F21;G21  =  E20  -  F21;G22  =  E23  -  F22;G23  =  E23  +  F22;G24  =  E24  +  F25;G25  =  E24  -  F25;G26  =  E27  -  F26;G27  =  E27  +  F26;G28  =  E28  +  F29;G29  =  E28  -  F29;G30  =  E31  -  F30;G31  =  E31  +  F30;
/stage  7
Y1  =  (  12  *  G16  +  255  *  G31  )  >>  8;Y9  =  (  109  *  G18  +  231  *  G29  )  >>  8;Y5  =  (  62  *  G20  +  248  *  G27  )  >>  8;Y13  =  (  152*G22  +  205*G25  )  >>  8;Y3  =  (  253  *  G24  -  37  *  G23  )  >>  8;Y11  =  (  219*G26  -  131*G21  )  >>  8;Y7  =  (  241  *  G28  -  86  *  G19  )  >>  8;Y15  =  (  189*G30  -  171*G17  )  >>  8;Y16  =  0;Y17  =  0;Y18  =  0;Y19  =  0;Y20  =  0;Y21  =  0;Y22  =  0;Y23  =  0;Y24  =  0;Y25  =  0;Y26  =  0;Y27  =  0;Y28  =  0;Y29  =  0;Y30  =  0;Y31  =  0;
}
具体的に、周波数変換部２３０は、３２×３２入力ブロックの３２個の各列を、入力値Ｘ０ないしＸ３１として、前述したポイント変換過程を３２回反復的に行って、１６×３２中間値行列を生成し、１６×３２中間値行列を構成する１６個の各行を、入力値Ｘ０ないしＸ３１として、前述したポイント変換過程を１６回反復的に行って、１６×１６変換行列を獲得する。かかる１６×１６変換行列は、３２×３２変換行列のうち、低周波数帯域の１６×１６変換ブロックに対応する。
【００３５】
また、Ｍ及びＮは６４、Ｘ０ないしＸ６３は、入力値、Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉ，Ｆｉ，Ｇｉ，Ｈｉ及びＺｉ（ｉは、０から６３までの整数）は、中間値、Ｙ０ないしＹ６３は、出力値を表すとする時、周波数変換部３２０は、６４×６４入力ブロックの行方向及び列方向の入力値に対して、次のポイント変換を繰り返して、１６×１６変換ブロックを生成する。
【００３６】
{
/stage  0
Z0  =  X0+X63;Z63  =  X0-X63;Z1  =  X1+X62;Z62  =  X1-X62;Z2  =  X2+X61;Z61  =  X2-X61;Z3  =  X3+X60;Z60  =  X3-X60;Z4  =  X4+X59;Z59  =  X4-X59;Z5  =  X5+X58;Z58  =  X5-X58;Z6  =  X6+X57;Z57  =  X6-X57;Z7  =  X7+X56;Z56  =  X7-X56;Z8  =  X8+X55;Z55  =  X8-X55;Z9  =  X9+X54;Z54  =  X9-X54;Z10  =  X10+X53;Z53  =  X10-X53;Z11  =  X11+X52;Z52  =  X11-X52;Z12  =  X12+X51;Z51  =  X12-X51;Z13  =  X13+X50;Z50  =  X13-X50;Z14  =  X14+X49;Z49  =  X14-X49;Z15  =  X15+X48;Z48  =  X15-X48;Z16  =  X16+X47;Z47  =  X16-X47;Z17  =  X17+X46;Z46  =  X17-X46;Z18  =  X18+X45;Z45  =  X18-X45;Z19  =  X19+X44;Z44  =  X19-X44;Z20  =  X20+X43;Z43  =  X20-X43;Z21  =  X21+X42;Z42  =  X21-X42;Z22  =  X22+X41;Z41  =  X22-X41;Z23  =  X23+X40;Z40  =  X23-X40;Z24  =  X24+X39;Z39  =  X24-X39;Z25  =  X25+X38;Z38  =  X25-X38;Z26  =  X26+X37;Z37  =  X26-X37;Z27  =  X27+X36;Z36  =  X27-X36;Z28  =  X28+X35;Z35  =  X28-X35;Z29  =  X29+X34;Z34  =  X29-X34;Z30  =  X30+X33;Z33  =  X30-X33;Z31  =  X31+X32;Z32  =  X31-X32;
/stage  1
A0  =  Z0+Z31;A31  =  Z0-Z31;A1  =  Z1+Z30;A30  =  Z1-Z30;A2  =  Z2+Z29;A29  =  Z2-Z29;A3  =  Z3+Z28;A28  =  Z3-Z28;A4  =  Z4+Z27;A27  =  Z4-Z27;A5  =  Z5+Z26;A26  =  Z5-Z26;A6  =  Z6+Z25;A25  =  Z6-Z25;A7  =  Z7+Z24;A24  =  Z7-Z24;A8  =  Z8+Z23;A23  =  Z8-Z23;A9  =  Z9+Z22;A22  =  Z9-Z22;A10  =  Z10+Z21;A21  =  Z10-Z21;A11  =  Z11+Z20;A20  =  Z11-Z20;A12  =  Z12+Z19;A19  =  Z12-Z19;A13  =  Z13+Z18;A18  =  Z13-Z18;A14  =  Z14+Z17;A17  =  Z14-Z17;A15  =  Z15+Z16;A16  =  Z15-Z16;A40  =  (724*(Z55-Z40))  >>  10;A55  =  (724*(Z55+Z40))  >>  10;A41  =  (724*(Z54-Z41))  >>  10;A54  =  (724*(Z54+Z41))  >>  10;A42  =  (724*(Z53-Z42))  >>  10;A53  =  (724*(Z53+Z42))  >>  10;A43  =  (724*(Z52-Z43))  >>  10;A52  =  (724*(Z52+Z43))  >>  10;A44  =  (724*(Z51-Z44))  >>  10;A51  =  (724*(Z51+Z44))  >>  10;A45  =  (724*(Z50-Z45))  >>  10;A50  =  (724*(Z50+Z45))  >>  10;A46  =  (724*(Z49-Z46))  >>  10;A49  =  (724*(Z49+Z46))  >>  10;A47  =  (724*(Z48-Z47))  >>  10;A48  =  (724*(Z48+Z47))  >>  10;
/stage  2
B0  =  A0+A15;B15  =  A0-A15;B1  =  A1+A14;B14  =  A1-A14;B2  =  A2+A13;B13  =  A2-A13;B3  =  A3+A12;B12  =  A3-A12;B4  =  A4+A11;B11  =  A4-A11;B5  =  A5+A10;B10  =  A5-A10;B6  =  A6+A9;B9  =  A6-A9;B7  =  A7+A8;B8  =  A7-A8;B20  =  (724*(A27-A20))  >>  10;B27  =  (724*(A27+A20))  >>  10;B21  =  (724*(A26-A21))  >>  10;B26  =  (724*(A26+A21))  >>  10;B22  =  (724*(A25-A22))  >>  10;B25  =  (724*(A25+A22))  >>  10;B23  =  (724*(A24-A23))  >>  10;B24  =  (724*(A24+A23))  >>  10;B32  =  Z32+A47;B47  =  Z32-A47;B48  =  Z63-A48;B63  =  Z63+A48;B33  =  Z33+A46;B46  =  Z33-A46;B49  =  Z62-A49;B62  =  Z62+A49;B34  =  Z34+A45;B45  =  Z34-A45;B50  =  Z61-A50;B61  =  Z61+A50;B35  =  Z35+A44;B44  =  Z35-A44;B51  =  Z60-A51;B60  =  Z60+A51;B36  =  Z36+A43;B43  =  Z36-A43;B52  =  Z59-A52;B59  =  Z59+A52;B37  =  Z37+A42;B42  =  Z37-A42;B53  =  Z58-A53;B58  =  Z58+A53;B38  =  Z38+A41;B41  =  Z38-A41;B54  =  Z57-A54;B57  =  Z57+A54;B39  =  Z39+A40;B40  =  Z39-A40;B55  =  Z56-A55;B56  =  Z56+A55;
/stage  3
C0  =  B0+B7;C7  =  B0-B7;C1  =  B1+B6;C6  =  B1-B6;C2  =  B2+B5;C5  =  B2-B5;C3  =  B3+B4;C4  =  B3-B4;C10  =  (724*(B13-B10))  >>  10;C13  =  (724*(B13+B10))  >>  10;C11  =  (724*(B12-B11))  >>  10;C12  =  (724*(B12+B11))  >>  10;C16  =  A16+B23;C23  =  A16-B23;C24  =  A31-B24;C31  =  A31+B24;C17  =  A17+B22;C22  =  A17-B22;C25  =  A30-B25;C30  =  A30+B25;C18  =  A18+B21;C21  =  A18-B21;C26  =  A29-B26;C29  =  A29+B26;C19  =  A19+B20;C20  =  A19-B20;C27  =  A28-B27;C28  =  A28+B27;C36  =  (392*B59-946*B36)  >>  10;C40  =  (-946*B55-392*B40)  >>  10;C52  =  (-946*B43+392*B52)  >>  10;C56  =  (392*B39+946*B56)  >>  10;C37  =  (392*B58-946*B37)  >>  10;C41  =  (-946*B54-392*B41)  >>  10;C53  =  (-946*B42+392*B53)  >>  10;C57  =  (392*B38+946*B57)  >>  10;C38  =  (392*B57-946*B38)  >>  10;C42  =  (-946*B53-392*B42)  >>  10;C54  =  (-946*B41+392*B54)  >>  10;C58  =  (392*B37+946*B58)  >>  10;C39  =  (392*B56-946*B39)  >>  10;C43  =  (-946*B52-392*B43)  >>  10;C55  =  (-946*B40+392*B55)  >>  10;C59  =  (392*B36+946*B59)  >>  10;
/stage  4
D0  =  C0+C3;D3  =  C0-C3;D8  =  B8+C11;D11  =  B8-C11;D12  =  B15-C12;D15  =  B15+C12;D1  =  C1+C2;D2  =  C1-C2;D9  =  B9+C10;D10  =  B9-C10;D13  =  B14-C13;D14  =  B14+C13;D5  =  (724*(C6-C5))  >>  10;D6  =  (724*(C6+C5))  >>  10;D18  =  (392*C29-946*C18)  >>  10;D20  =  (-946*C27-392*C20)  >>  10;D26  =  (-946*C21+392*C26)  >>  10;D28  =  (392*C19+946*C28)  >>  10;D19  =  (392*C28-946*C19)  >>  10;D21  =  (-946*C26-392*C21)  >>  10;D27  =  (-946*C20+392*C27)  >>  10;D29  =  (392*C18+946*C29)  >>  10;D32  =  B32+C39;D39  =  B32-C39;D40  =  B47-C40;D47  =  B47+C40;D48  =  B48+C55;D55  =  B48-C55;D56  =  B63-C56;D63  =  B63+C56;D33  =  B33+C38;D38  =  B33-C38;D41  =  B46-C41;D46  =  B46+C41;D49  =  B49+C54;D54  =  B49-C54;D57  =  B62-C57;D62  =  B62+C57;D34  =  B34+C37;D37  =  B34-C37;D42  =  B45-C42;D45  =  B45+C42;D50  =  B50+C53;D53  =  B50-C53;D58  =  B61-C58;D61  =  B61+C58;D35  =  B35+C36;D36  =  B35-C36;D43  =  B44-C43;D44  =  B44+C43;D51  =  B51+C52;D52  =  B51-C52;D59  =  B60-C59;D60  =  B60+C59;
/stage  5
Y0    =  (724*(D0+D1))  >>  10;
E4  =  C4+D5;E5  =  C4-D5;E6  =  C7-D6;E7  =  C7+D6;E9  =  (392*D14-946*D9)  >>  10;E10  =  (-946*D13-392*D10)  >>  10;E13  =  (392*D13-946*D10)  >>  10;E14  =  (946*D14+392*D9)  >>  10;D15  =  D15;E16  =  C16+D19;E19  =  C16-D19;E20  =  C23-D20;E23  =  C23+D20;E24  =  C24+D27;E27  =  C24-D27;E28  =  C31-D28;E31  =  C31+D28;E17  =  C17+D18;E18  =  C17-D18;E21  =  C22-D21;E22  =  C22+D21;E25  =  C25+D26;E26  =  C25-D26;E29  =  C30-D29;E30  =  C30+D29;E34  =  (200*D61-1004*D34)  >>  10;E35  =  (200*D60-1004*D35)  >>  10;E36  =  (-1004*D59-200*D36)  >>  10;E37  =  (-1004*D58-200*D37)  >>  10;E42  =  (851*D53-569*D42)  >>  10;E43  =  (851*D52-569*D43)  >>  10;E44  =  (-569*D51-851*D44)  >>  10;E45  =  (-569*D50-851*D45)  >>  10;E50  =  (851*D50-569*D45)  >>  10;E51  =  (851*D51-569*D44)  >>  10;E52  =  (569*D52+851*D43)  >>  10;E53  =  (569*D53+851*D42)  >>  10;E58  =  (200*D58-1004*D37)  >>  10;E59  =  (200*D59-1004*D36)  >>  10;E60  =  (1004*D60+200*D35)  >>  10;E61  =  (1004*D61+200*D34)  >>  10;
/stage  6
Y8    =  (200*E4+1004*E7)  >>  10;
F8  =  D8+E9;F9  =  D8-E9;F10  =  D11-E10;F11  =  D11+E10;F12  =  D12+E13;F13  =  D12-E13;F14  =  D15-E14;F15  =  D15+E14;F17  =  (200*E30-1004*E17)  >>  10;F18  =  (-1004*E29-200*E18)  >>  10;F21  =  (851*E26-569*E21)  >>  10;F22  =  (-569*E25-851*E22)  >>  10;F25  =  (851*E25-569*E22)  >>  10;F26  =  (569*E26+851*E21)  >>  10;F29  =  (200*E29-1004*E18)  >>  10;F30  =  (1004*E30+200*E17)  >>  10;F32  =  D32+E35;F33  =  D33+E34;F34  =  D33-E34;F35  =  D32-E35;F36  =  D39-E36;F37  =  D38-E37;F38  =  D38+E37;F39  =  D39+E36;F40  =  D40+E43;F41  =  D41+E42;F42  =  D41-E42;F43  =  D40-E43;F44  =  D47-E44;F45  =  D46-E45;F46  =  D46+E45;F47  =  D47+E44;F48  =  D48+E51;F49  =  D49+E50;F50  =  D49-E50;F51  =  D48-E51;F52  =  D55-E52;F53  =  D54-E53;F54  =  D54+E53;F55  =  D55+E52;F56  =  D56+E59;F57  =  D57+E58;F58  =  D57-E58;F59  =  D56-E59;F60  =  D63-E60;F61  =  D62-E61;F62  =  D62+E61;F63  =  D63+E60;
/stage  7
Y4    =  (100*F8+1019*F15)  >>  10;Y12    =  (980*F12-297*F11)  >>  10;
G16  =  E16+F17;G17  =  E16-F17;G18  =  E19-F18;G19  =  E19+F18;G20  =  E20+F21;G21  =  E20-F21;G22  =  E23-F22;G23  =  E23+F22;G24  =  E24+F25;G25  =  E24-F25;G26  =  E27-F26;G27  =  E27+F26;G28  =  E28+F29;G29  =  E28-F29;G30  =  E31-F30;G31  =  E31+F30;G33  =  (100*F62-1019*F33)  >>  10;G34  =  (-1019*F61-100*F34)  >>  10;G37  =  (792*F58-650*F37)  >>  10;G38  =  (-650*F57-792*F38)  >>  10;G41  =  (483*F54-903*F41)  >>  10;G42  =  (-903*F53-483*F42)  >>  10;G45  =  (980*F50-297*F45)  >>  10;G46  =  (-297*F49-980*F46)  >>  10;G49  =  (980*F49-297*F46)  >>  10;G50  =  (297*F50+980*F45)  >>  10;G53  =  (483*F53-903*F42)  >>  10;G54  =  (903*F54+483*F41)  >>  10;G57  =  (792*F57-650*F38)  >>  10;G58  =  (650*F58+792*F37)  >>  10;G61  =  (100*F61-1019*F34)  >>  10;G62  =  (1019*F62+100*F33)  >>  10;
/stage  8
Y2    =  (50*G16+1023*G31)  >>  10;Y10    =  (249*G20+993*G27)  >>  10;Y6    =  (1013*G24-150*G23)  >>  10;Y14    =  (964*G28-345*G19)  >>  10;H32  =  F32+G33;H33  =  F32-G33;H34  =  F35-G34;H35  =  F35+G34;H36  =  F36+G37;H37  =  F36-G37;H38  =  F39-G38;H39  =  F39+G38;H40  =  F40+G41;H41  =  F40-G41;H42  =  F43-G42;H43  =  F43+G42;H44  =  F44+G45;H45  =  F44-G45;H46  =  F47-G46;H47  =  F47+G46;H48  =  F48+G49;H49  =  F48-G49;H50  =  F51-G50;H51  =  F51+G50;H52  =  F52+G53;H53  =  F52-G53;H54  =  F55-G54;H55  =  F55+G54;H56  =  F56+G57;H57  =  F56-G57;H58  =  F59-G58;H59  =  F59+G58;H60  =  F60+G61;H61  =  F60-G61;H62  =  F63-G62;H63  =  F63+G62;
/stage  9
Y1    =  (25*H32+1024*H63)  >>  10;Y9    =  (224*H36+999*H59)  >>  10;Y5    =  (125*H40+1016*H55)  >>  10;Y13    =  (321*H44+972*H51)  >>  10;Y3    =  (1021*H48-75*H47)  >>  10;Y11    =  (987*H52-273*H43)  >>  10;Y7    =  (1009*H56-175*H39)  >>  10;Y15    =  (955*H60-369*H35)  >>  10;Y16  =  0;Y17  =  0;Y18  =  0;Y19  =  0;Y20  =  0;Y21  =  0;Y22  =  0;Y23  =  0;Y24  =  0;Y25  =  0;Y26  =  0;Y27  =  0;Y28  =  0;Y29  =  0;Y30  =  0;Y31  =  0;Y32  =  0;Y33  =  0;Y34  =  0;Y35  =  0;Y36  =  0;Y37  =  0;Y38  =  0;Y39  =  0;Y40  =  0;Y41  =  0;Y42  =  0;Y43  =  0;Y44  =  0;Y45  =  0;Y46  =  0;Y47  =  0;Y48  =  0;Y49  =  0;Y50  =  0;Y51  =  0;Y52  =  0;Y53  =  0;Y54  =  0;Y55  =  0;Y56  =  0;Y57  =  0;Y58  =  0;Y59  =  0;Y60  =  0;Y61  =  0;Y62  =  0;Y63  =  0;
}
具体的に、周波数変換部２３０は、６４×６４入力ブロックの６４個の各列を、入力値Ｘ０ないしＸ６３として、前述したポイント変換過程を６４回反復的に行って、１６×６４中間値行列を生成し、１６×６４中間値行列を構成する１６個の各行を、入力値Ｘ０ないしＸ６３として、前述したポイント変換過程を１６回反復的に行って、１６×１６変換行列を獲得する。かかる１６×１６変換行列は、６４×６４変換行列のうち、低周波数帯域の１６×１６変換ブロックに対応する。
【００３７】
図５は、本発明の他の実施形態による３２ポイントＤＣＴのフローグラフである。図５を参照すれば、ｘ０ないしｘ３１は、入力値を表す。ｙ０ないしｙ３１は、ＤＣＴの出力値を表す。変換時に、データ処理方向は、左側から右側であり、逆変換時に、データ処理方向は、右側から左側である。点で交差する二本のラインは、二つの数の加算を表す。‘−’は、否定を表す。各ライン上の値Ｒ（θ）は、図６に示したようなバタフライ構造に基づいた演算過程を表す。
【００３８】
図６は、図５の３２ポイントＤＣＴを構成するバタフライ構造の演算過程を示す参照図である。図６を参照すれば、バタフライ構造の演算は、入力値［Ｘ１，Ｘ２］に対して、次の数式；
【００３９】
【数２】
2013542664.tif 000004
のような演算を通じて、出力値［Ｙ１，Ｙ２］を出力するものである。
【００４０】
図５のフローグラフによってＤＣＴを行う場合、Ｒ（θ）によって、ｃｏｓθ及びｓｉｎθが利用される。前述した図４のフローグラフを利用した変換過程と同様に、θ値によるｃｏｓθ及びｓｉｎθ値として、分母が２の累乗形態である有理数を利用することによって、変換過程で必要な演算過程を、加算、減算及びシフト演算に代替する。
【００４１】
具体的に、Ｍ及びＮは３２、Ｘ０ないしＸ３１は、入力値、Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉ，Ｆｉ及びＺｉ（ｉは、０から３１までの整数）は、中間値、Ｙ０ないしＹ３１は、出力値を表すとする時、周波数変換部２３０は、図５のアルゴリズムに基づいて、３２×３２入力ブロックの行方向及び列方向の入力値に対して、次のポイント変換を繰り返して、低周波数帯域の１６×１６変換ブロックを生成する。
【００４２】
{
/stage  0
Z0  =  X0  +  X31; Z31  =  X0  -  X31;Z1  =  X1  +  X30;Z30  =  X1  -  X30;Z2  =  X2  +  X29;Z29  =  X2  -  X29;Z3  =  X3  +  X28;Z28  =  X3  -  X28;Z4  =  X4  +  X27;Z27  =  X4  -  X27;Z5  =  X5  +  X26;Z26  =  X5  -  X26;Z6  =  X6  +  X25;Z25  =  X6  -  X25;Z7  =  X7  +  X24;Z24  =  X7  -  X24;Z8  =  X8  +  X23;Z23  =  X8  -  X23;Z9  =  X9  +  X22;Z22  =  X9  -  X22;Z10  =  X10  +  X21;Z21  =  X10  -  X21;Z11  =  X11  +  X20;Z20  =  X11  -  X20;Z12  =  X12  +  X19;Z19  =  X12  -  X19;Z13  =  X13  +  X18;Z18  =  X13  -  X18;Z14  =  X14  +  X17;Z17  =  X14  -  X17;Z15  =  X15  +  X16;Z16  =  X15  -  X16;
/stage  1
A0    =  Z0  +  Z15;A1    =  Z1  +  Z14;A2    =  Z2  +  Z13;A3    =  Z3  +  Z12;A4    =  Z4  +  Z11;A5    =  Z5  +  Z10;A6    =  Z6  +  Z9;A7    =  Z7  +  Z8;A8    =  Z7  -  Z8;A9    =  Z6  -  Z9;A10  =  Z5  -  Z10;A11  =  Z4  -  Z11;A12  =  Z3  -  Z12;A13  =  Z2  -  Z13;A14  =  Z1  -  Z14;A15  =  Z0  -  Z15;A16  =  (171*Z16  -  189*Z31)  >>  8;A31  =  (189*Z16  +  171*Z31)  >>  8;A17  =  (205*Z17  +  152*Z30)  >>  8;A30  =  (-152*Z17  +  205*Z30)  >>  8;A18  =  (131*Z18  -  219*Z29)  >>  8;A29  =  (219*Z18  +  131*Z29)  >>  8;A19  =  (231*Z19  +  109*Z28)  >>  8;A28  =  (-109*Z19  +  231*Z28)  >>  8;A20  =  (86*Z20  -  241*Z27)  >>  8;A27  =  (241*Z20  +  86*Z27)  >>  8;A21  =  (248*Z21  +  62*Z26)  >>  8;A26  =  (-62*Z21  +  248*Z26)  >>  8;A22  =  (37*Z22  -  253*Z25)  >>  8;A25  =  (253*Z22  +  37*Z25)  >>  8;A23  =  (255*Z23  +  12*Z24)  >>  8;A24  =  (-12*Z23  +  255*Z24)  >>  8;
/stage  2
B0  =  A0  +  A7;B7  =  A0  -  A7;B1  =  A1  +  A6;B6  =  A1  -  A6;B2  =  A2  +  A5;B5  =  A2  -  A5;B3  =  A3  +  A4;B4  =  A3  -  A4;B8  =  (197*A8  +  162*A15)  >>  8;B15  =  (-162*A8  +  197*A15)  >>  8;B9  =  (120*A9  -  225*A14)  >>  8;B14  =  (225*A9  +  120*A14)  >>  8;B10  =  (244*A10  +  74*A13)  >>  8;B13  =  (-74*A10  +  244*A13)  >>  8;B11  =  (25*A11  -  254*A12)  >>  8;B12  =  (254*A11  +  25*A12)  >>  8;B16  =  A16  +  A23;B23  =  A16  -  A23;B17  =  A17  +  A22;B22  =  A17  -  A22;B18  =  A18  +  A21;B21  =  A18  -  A21;B19  =  A19  +  A20;B20  =  A19  -  A20;B24  =  A24  +  A31;B31  =  A24  -  A31;B25  =  A25  +  A30;B30  =  A25  -  A30;B26  =  A26  +  A29;B29  =  A26  -  A29;B27  =  A27  +  A28;B28  =  A27  -  A28;
/stage  3
C0  =  B0  +  B3;C3  =  B0  -  B3;C1  =  B1  +  B2;C2  =  B1  -  B2;C4  =  (49*B4  +  251*B7)  >>  8;C7  =  (-251*B4  +  49*B7)  >>  8;C5  =  (142*B5  +  212*B6)  >>  8;C6  =  (-212*B5  +  142*B6)  >>  8;C8  =  B8  +  B11;C11  =  B8  -  B11;C9  =  B9  +  B10;C10  =  B9  -  B10;C12  =  B12  +  B15;C15  =  B12  -  B15;C13  =  B13  +  B14;C14  =  B13  -  B14;C16  =  B16  +  B28;C28  =  B16  -  B28;C17  =  B17  +  B29;C29  =  B17  -  B29;C18  =  B18  +  B30;C30  =  B18  -  B30;C19  =  B19  +  B31;C31  =  B19  -  B31;C20  =  B20  +  B23;C23  =  B20  -  B23;C21  =  B21  +  B22;C22  =  B21  -  B22;C24  =  B24  +  B27;C27  =  B24  -  B27;C25  =  B25  +  B26;C26  =  B25  -  B26;
/stage  4
D0  =  (181*(C0  +  C1))  >>  8;D2  =  (97*C2  +  236*C3)  >>  8;  D4  =  C4  +  C5;D5  =  C4  -  C5;D7  =  C6  +  C7;    D8    =  C8    +  C14;D14  =  C8    -  C14;D9    =  C9    +  C15;D15  =  C9    -  C15;D11  =  C10  -  C11;D12  =  C12  +  C13;D13  =  C12  -  C13;  D16  =  (181*(C16  +  C19))  >>  8;D19  =  (181*(-C16  +  C19))  >>  8;D20  =  C20  +  C26;D26  =  C20  -  C26;D21  =  C21  +  C27;D27  =  C21  -  C27;D22  =  C22  +  C23;D23  =  C22  -  C23;D24  =  C24  +  C25;D28  =  (181*(C28  +  C31))  >>  8;D31  =  (181*(-C28  +  C31))  >>  8;
/stage  5
E5  =  (181*(D5  +  D7))  >>  8;E8  =  (97*D8  -  236*D9)  >>  8;E12  =  (181*(-D11  +  D12))  >>  8;E15  =  (236*D14  +  97*D15)  >>  8;E16  =  D16  +  C18;E18  =  D16  -  C18;E17  =  C17  +  D19;E19  =  C17  -  D19;E21  =  (-97*D20  +  236*D21)  >>  8;E24  =  (181*(-D23  +  D24))  >>  8;E26  =  (236*D26  +  97*D27)  >>  8;E30  =  D28  +  C30;E29  =  -  C29  +  D31;E31  =  C29  +  D31;
/stage  6
F16  =  (251*E16  -  49*E17)  >>  8;F18  =  (212*E18  -  142*E19)  >>  8;F28  =  (212*E28  -  142*E29)  >>  8;F29  =  (142*E28  +  212*E29)  >>  8;F31  =  (49*E30  +  251*E31)  >>  8;
/stage  7
Y0  =  D0;Y1  =  E24;Y2  =  E12;Y3  =  -F16;Y4  =  D4;Y5  =  F31;Y6  =  E8;Y7  =  -E26;Y8  =  D2;Y9  =  E21;Y10  =  E15;Y11  =  F29;Y12  =  E5;Y13  =  -F18;Y14  =  D13;Y15  =  D22;Y16  =  0;Y17  =  0;Y18  =  0;Y19  =  0;Y20  =  0;Y21  =  0;Y22  =  0;Y23  =  0;Y24  =  0;Y25  =  0;Y26  =  0;Y27  =  0;Y28  =  0;Y29  =  0;Y30  =  0;Y31  =  0;
}
具体的に、周波数変換部２３０は、３２×３２入力ブロックの６４個の各列を、入力値Ｘ０ないしＸ３１として、前述したポイント変換過程を３２回反復的に行って、１６×３２中間値行列を生成し、１６×３２中間値行列を構成する１６個の各行を、入力値Ｘ０ないしＸ３１として、前述したポイント変換過程を１６回反復的に行って、１６×１６変換行列を獲得する。かかる１６×１６変換行列は、６４×６４変換行列のうち、低周波数帯域の１６×１６変換ブロックに対応する。
【００４３】
また、Ｍ及びＮは３２、Ｘ０ないしＸ３１は、入力値、Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉ，Ｆｉ及びＺｉ（ｉは、０から３１までの整数）は、中間値、Ｙ０ないしＹ３１は、出力値を表すとする時、周波数変換部２３０は、図５のアルゴリズムに基づいて、３２×３２入力ブロックの行方向及び列方向の入力値に対して、次のポイント変換を繰り返して、変換ブロックを生成する。
【００４４】
{
/stage  0
Z0  =  X0  +  X31;Z31  =  X0  -  X31;Z1  =  X1  +  X30;Z30  =  X1  -  X30;Z2  =  X2  +  X29;Z29  =  X2  -  X29;Z3  =  X3  +  X28;Z28  =  X3  -  X28;Z4  =  X4  +  X27;Z27  =  X4  -  X27;Z5  =  X5  +  X26;Z26  =  X5  -  X26;Z6  =  X6  +  X25;Z25  =  X6  -  X25;Z7  =  X7  +  X24;Z24  =  X7  -  X24;Z8  =  X8  +  X23;Z23  =  X8  -  X23;Z9  =  X9  +  X22;Z22  =  X9  -  X22;Z10  =  X10  +  X21;Z21  =  X10  -  X21;Z11  =  X11  +  X20;Z20  =  X11  -  X20;Z12  =  X12  +  X19;Z19  =  X12  -  X19;Z13  =  X13  +  X18;Z18  =  X13  -  X18;Z14  =  X14  +  X17;Z17  =  X14  -  X17;Z15  =  X15  +  X16;Z16  =  X15  -  X16;
/stage  1
A0    =  Z0  +  Z15;A1    =  Z1  +  Z14;A2    =  Z2  +  Z13;A3    =  Z3  +  Z12;A4    =  Z4  +  Z11;A5    =  Z5  +  Z10;A6    =  Z6  +  Z9;A7    =  Z7  +  Z8;A8    =  Z7  -  Z8;A9    =  Z6  -  Z9;A10  =  Z5  -  Z10;A11  =  Z4  -  Z11;A12  =  Z3  -  Z12;A13  =  Z2  -  Z13;A14  =  Z1  -  Z14;A15  =  Z0  -  Z15;
A16  =  Z16  -  (113*Z31  >>  8);A31  =  Z31  +  (189*A16  >>  8);A16  =  A16  -  (113*A31  >>  8);A17  =  Z17  +  (84*Z30  >>  8);A30  =  Z30  -  (152*A17  >>  8);A17  =  A17  +  (84*A30  >>  8);A18  =  Z18  -  (145*Z29  >>  8);A29  =  Z29  +  (219*A18  >>  8);A18  =  A18  -  (145*A29  >>  8);A19  =  Z19  +  (57*Z28  >>  8);A28  =  Z28  -  (109*A19  >>  8);A19  =  A19  +  (57*A28  >>  8);A20  =  Z20  -  (180*Z27  >>  8);A27  =  Z27  +  (241*A20  >>  8);A20  =  A20  -  (180*A27  >>  8);A21  =  Z21  +  (31*Z26  >>  8);A26  =  Z26  -  (62*A21  >>  8);A21  =  A21  +  (31*A26  >>  8);A22  =  Z22  -  (220*Z25  >>  8);A25  =  Z25  +  (253*A22  >>  8);A22  =  A22  -  (220*A25  >>  8);A23  =  Z23  +  (6*Z24  >>  8);A24  =  Z24  -  (12*A23  >>  8);A23  =  A23  +  (6*A24  >>  8);
/stage  2
B0  =  A0  +  A7;B7  =  A0  -  A7;B1  =  A1  +  A6;B6  =  A1  -  A6;B2  =  A2  +  A5;B5  =  A2  -  A5;B3  =  A3  +  A4;B4  =  A3  -  A4;
B8  =  A8  +  (91*A15  >>  8);B15  =  A15  -  (162*B8  >>  8);B8  =  B8  +  (91*B15  >>  8);B9  =  A9  -  (153*A14  >>  8);B14  =  A14  +  (225*B9  >>  8);B9  =  B9  -  (153*B14  >>  8);B10  =  A10  +  (37*A13  >>  8);B13  =  A13  -  (74*B10  >>  8);B10  =  B10  +  (37*B13  >>  8);B11  =  A11  -  (232*A12  >>  8);B12  =  A12  +  (254*B11  >>  8);B11  =  B11  -  (232*B12  >>  8);
B16  =  A16  +  A23;B23  =  A16  -  A23;B17  =  A17  +  A22;B22  =  A17  -  A22;B18  =  A18  +  A21;B21  =  A18  -  A21;B19  =  A19  +  A20;B20  =  A19  -  A20;
B24  =  A24  +  A31;B31  =  A24  -  A31;B25  =  A25  +  A30;B30  =  A25  -  A30;B26  =  A26  +  A29;B29  =  A26  -  A29;B27  =  A27  +  A28;B28  =  A27  -  A28;
/stage  3
C0  =  B0  +  B3;C3  =  B0  -  B3;C1  =  B1  +  B2;C2  =  B1  -  B2;
C4  =  B4  +  (210*B7  >>  8);C7  =  B7  -  (251*C4  >>  8);C4  =  C4  +  (210*C7  >>  8);C5  =  B5  +  (136*B6  >>  8);C6  =  B6  -  (212*C5  >>  8);C5  =  C5  +  (136*C6  >>  8);
C8  =  B8  +  B11;C11  =  B8  -  B11;C9  =  B9  +  B10;C10  =  B9  -  B10;
C12  =  B12  +  B15;C15  =  B12  -  B15;C13  =  B13  +  B14;C14  =  B13  -  B14;
C16  =  B16  +  B28;C28  =  B16  -  B28;C17  =  B17  +  B29;C29  =  B17  -  B29;C18  =  B18  +  B30;C30  =  B18  -  B30;C19  =  B19  +  B31;C31  =  B19  -  B31;
C20  =  B20  +  B23;C23  =  B20  -  B23;C21  =  B21  +  B22;C22  =  B21  -  B22;
C24  =  B24  +  B27;C27  =  B24  -  B27;C25  =  B25  +  B26;C26  =  B25  -  B26;
/stage  4
D0  =  C0  +  C1;
D3  =  C2  -  (106*C3  >>  8);D2  =  C3  +  (90*D3  >>  8);
D4  =  C4  +  C5;D5  =  C4  -  C5;
D7  =  C6  +  C7;    
D8    =  C8    +  C14;D14  =  C8    -  C14;D9    =  C9    +  C15;D15  =  C9    -  C15;
D11  =  C10  -  C11;D12  =  C12  +  C13;D13  =  C12  -  C13;  
D16  =  C16  +  (106*C19  >>  8);D19  =  C19  -  (181*D16  >>  8);D16  =  D16  +  (106*D19  >>  8);D20  =  C20  +  C26;D26  =  C20  -  C26;D21  =  C21  +  C27;D27  =  C21  -  C27;D22  =  C22  +  C23;D23  =  C22  -  C23;D24  =  C24  +  C25;
D28  =  C28  +  (106*C31  >>  8);D31  =  C31  -  (181*D28  >>  8);D28  =  D28  +  (106*D31  >>  8);
/stage  5
E5  =  D5  +  D7;
E9  =  D8  +  (106*D9  >>  8);E8  =  -(D9  -  (90*E9  >>  8));
E11  =  D11  +  D12;E12  =  D12  -  (E11  >>  1);
E15  =  D14  +  (106*D15  >>  8);
E16  =  D16  +  C18;E18  =  D16  -  C18;E17  =  C17  +  D19;E19  =  C17  -  D19;
E20  =  D20  +  (106*D21  >>  8);E21  =  D21  -  (90*E20  >>  8);E23  =  D23  +  D24;E24  =  D24  -  (E23  >>  1);E26  =  D26  +  (106*D27  >>  8);
E28  =  -  D28  +  C30;E30  =  D28  +  C30;E29  =  -  C29  +  D31;E31  =  C29  +  D31;
/stage  6
F16  =  E16  -  (50*E17  >>  8);
F18  =  E18  -  (171*E19  >>  8);
F28  =  E28  -  (171*E29  >>  8);F29  =  E29  +  (118*F28  >>  8);F30  =  E30  -  (50*E31  >>  8);F31  =  E31  +  (48*F30  >>  8);
/stage  7
Y0  =  D0;Y1  =  E24;Y2  =  E12;Y3  =  -F16;Y4  =  D4;Y5  =  F31;Y6  =  E8;Y7  =  -E26;Y8  =  D2;Y9  =  E21;Y10  =  E15;Y11  =  F29;Y12  =  E5;Y13  =  -F18;Y14  =  D13;Y15  =  D22;Y16  =  0;Y17  =  0;Y18  =  0;Y19  =  0;Y20  =  0;Y21  =  0;Y22  =  0;Y23  =  0;Y24  =  0;Y25  =  0;Y26  =  0;Y27  =  0;Y28  =  0;Y29  =  0;Y30  =  0;Y31  =  0;
}
具体的に、周波数変換部２３０は、３２×３２入力ブロックの６４個の各列を、入力値Ｘ０ないしＸ３１として、前述したポイント変換過程を３２回反復的に行って、１６×３２中間値行列を生成し、１６×３２中間値行列を構成する１６個の各行を、入力値Ｘ０ないしＸ３１として、前述したポイント変換過程を１６回反復的に行って、低周波数帯域の１６×１６変換行列を獲得する。
【００４５】
図７は、本発明の一実施形態による映像変換方法を示すフローチャートである。図７を参照すれば、ステップ７１０で、周波数領域選択部２１０は、Ｍ×Ｎ（Ｍ及びＮは、正の整数）入力ブロックの周波数変換のための所定の周波数領域を選択する。前述したように、周波数変換による変換ブロックのエネルギーは、低周波数帯域に集中するので、周波数領域選択部２１０は、低周波数帯域を選択することが望ましい。
【００４６】
ステップ７２０で、縮小変換行列獲得部２２０は、Ｍ×Ｎ入力ブロックの周波数変換に利用されるＭ×Ｎ変換行列の元素のうち、選択された周波数領域に対応する変換係数の生成のための元素を選択して、縮小された変換行列を獲得する。具体的に、縮小変換行列獲得部２２０は、低周波数帯域のａ×ｄ変換ブロックを獲得しようとする場合、Ｍ×Ｎサイズの垂直変換行列のうち、上側のａ行に該当する元素を選択して、ａ×Ｎサイズの縮小垂直変換行列を生成し、Ｍ×Ｎサイズの水平変換行列のうち、左側のｄ列に該当する元素を選択して、Ｍ×ｄサイズの縮小水平変換行列を生成する。
【００４７】
ステップ７３０で、周波数変換部２３０は、縮小された変換行列を、Ｍ×Ｎ入力ブロックに適用して、周波数変換を行うことによって、選択された周波数領域に対応する変換係数を生成する。
【００４８】
一方、前述した本発明の実施形態によれば、変換過程で発生する変換係数は、全体変換ブロックのうち、選択された周波数帯域のみに対して変換係数が生成されるので、ブロック内の０ではない有効変換係数の位置を表すシグニフィカンスマップは、選択された周波数領域のみに対して生成される。また、前述した例では、選択された低周波数帯域がブロック形態を有した場合のみを例示したが、これに限定されず、選択された低周波数帯域は、図１２に示したように、ＤＣ係数を中心として三角形など多様な形態に選択される。また、選択された低周波数帯域についての情報は、ビットストリームに別途に所定のシンタックスを利用してシグナリングされたり、符号化側と復号化側で事前にいかなる形態及びいかなる帯域の低周波数帯域の変換係数のみを生成するか設定する場合には、別途のシンタックスを伝送せずに、既定の低周波数帯域のみに対して変換及び逆変換が行われる。
【００４９】
図８は、本発明の一実施形態による映像復号化装置を示すブロック図である。図８を参照すれば、本発明の一実施形態による映像復号化装置８００は、エントロピー復号化部８１０、逆量子化部８２０、逆変換部８３０及び予測部８４０を備える。
【００５０】
エントロピー復号化部８１０は、入力ビットストリームから、復号化される現在ブロックの予測モード情報、参照ピクチャー情報及びレジデュアル情報を抽出する。逆量子化部８２０は、エントロピー復号化部８１０でエントロピー復号化された量子化された変換係数を逆量子化する。逆変換部８３０は、逆量子化された変換係数を逆変換する。逆変換の結果、ブロック単位に対するレジデュアル値が復元される。特に、本発明の一実施形態による逆変換部８３０は、既存の逆ＤＣＴに利用される変換行列の元素を、有理数値に置換することによって、浮動小数点演算ではない整数に基づいた加算、減算及びシフト演算により逆ＤＣＴを行うことによって、演算複雑度を低減させる一方、演算速度を速める。また、本発明の一実施形態による逆変換部８３０は、逆ＤＣＴに利用される逆変換行列の元素に２の累乗を乗じた後で四捨五入した元素で構成された逆変換行列を利用して、逆ＤＣＴを行うことによって、全体的な演算複雑度を低減させることができる。また、本発明の一実施形態による逆変換部８３０は、Ｍ×Ｎ入力ブロックの周波数逆変換に利用されるＭ×Ｎ逆変換行列の元素のうち、所定の周波数領域に対応する逆変換係数の生成のための元素を選択して、縮小された逆変換行列を獲得し、縮小された逆変換行列を適用して、逆変換を行うことによって、逆変換過程にかかる全体演算量を減少させる。
【００５１】
予測部８４０は、インター予測またはイントラ予測を通じて、現在ブロックの予測値を生成し、生成された予測値は、逆変換部８３０で復元されたレジデュアルと加えられて、現在ブロックが復元される。
【００５２】
図９は、本発明の一実施形態による映像逆変換装置の構成を示すブロック図である。図９の映像逆変換装置９００は、図８の逆変換部８３０に対応する。図９を参照すれば、映像逆変換装置９００は、縮小逆変換行列獲得部９１０及び周波数逆変換部９２０を備える。
【００５３】
縮小逆変換行列獲得部９１０は、所定の周波数帯域の変換ブロックを受信し、周波数帯域情報に基づいて受信された変換ブロックの逆変換のための縮小逆変換行列を生成する。具体的に、ビットストリームには、図１２Ａ及び図１２Ｂのような長方形の低周波数帯域ブロック、及び三角形の低周波数帯域ブロックのような多様な低周波数帯域形態についての情報と、低周波数帯域のサイズ情報とが含まれ、縮小逆変換行列獲得部９１０は、かかる低周波数帯域形態についての情報と、低周波数帯域のサイズ情報とに基づいて、変換係数が、全体変換ブロックに含まれた変換係数のうち、いかなる形態及びいかなる帯域の変換係数に該当するかを決定する。
【００５４】
縮小逆変換行列獲得部９１０は、Ｍ×Ｎ（Ｍ及びＮは、正の整数）ブロックの周波数逆変換に利用されるＭ×Ｎ逆変換行列の元素のうち、受信された変換ブロックの周波数帯域に該当する変換係数の逆変換のための元素を選択して、縮小された逆変換行列を獲得する。ここで、Ｍ×Ｎ逆変換行列は、前述したＭ×Ｎ変換行列の逆行列であって、逆変換行列の元素を有理数値に置換したり、逆変換行列の元素に２の累乗を乗じた後で四捨五入した元素を有するＮ×Ｎ逆変換行列である。置換されたＮ×Ｎ変換行列を利用する場合、加算、減算及びシフト演算のみを利用して、逆ＤＣＴを行う。
【００５５】
周波数逆変換部９２０は、受信された所定の周波数帯域の変換ブロックに、縮小された逆変換行列を適用して、Ｍ×Ｎ変換ブロックを逆変換したブロック、すなわち、レジデュアルブロックを生成する。
【００５６】
図１０は、本発明の一実施形態によって、受信された変換ブロックの周波数帯域によって、縮小逆変換行列獲得部９１０が縮小逆変換行列を獲得する過程を説明するための参照図である。
【００５７】
図１０を参照すれば、逆変換しようとするａ×ｄ変換ブロックをＹ  １０２５、Ｍ×Ｎサイズの垂直逆変換行列をＣｉ  １０１０、Ｍ×Ｎサイズの水平変換行列をＣｉＴ  １０３０であると仮定する。ａ×ｄ変換ブロックＹ  １０２５は、Ｍ×Ｎ変換ブロック  １０２０のうち、低周波数帯域に該当する一部の変換係数のみを含む変換ブロックであって、Ｍ×Ｎサイズの垂直逆変換行列Ｃｉ  １０１０、Ｍ×Ｎサイズの水平逆変換行列ＣｉＴ  １０３０をそのまま適用して逆変換されない。したがって、縮小逆変換行列獲得部９１０は、Ｍ×Ｎサイズの垂直逆変換行列Ｃｉ  １０１０及びＭ×Ｎサイズの水平逆変換行列ＣｉＴ  １０３０を縮小したＭ×ｄサイズの縮小垂直逆変換行列ＭＣｉ  １０１５及びａ×Ｎサイズの縮小水平変換行列ＭＣｉＴ  １０３５を適用して、次の数式；ＭＣｉ＊Ｙ＊ＭＣｉＴによる行列演算を通じて、低周波数帯域のａ×ｄ変換ブロックＹ  １０２５から、Ｍ×Ｎサイズのレジデュアルブロックを復元する。すなわち、縮小逆変換行列獲得部９１０は、Ｍ×Ｎサイズの垂直逆変換行列Ｃｉ  １０１０のうち、左側のｄ列に該当する元素を選択して、Ｎ×ｄサイズの縮小垂直逆変換行列ＭＣｉ  １０１５を生成する。また、縮小逆変換行列獲得部９１０は、Ｍ×Ｎサイズの水平逆変換行列ＣｉＴ  １０３０のうち、上側のａ列に該当する元素を選択して、ａｘＮサイズの縮小水平逆変換行列ＭＣｉＴ  １０３５を生成する。例えば、図１０に示したように、Ｍ及びＮは１６、ａ及びｄは８であると仮定すれば、縮小変換逆行列獲得部９１０は、低周波数帯域の８×８サイズの変換ブロックを逆変換して、１６×１６レジデュアルブロックを復元するために、１６×１６垂直逆変換行列のうち、左側の８列のみを選択して、１６×８サイズの縮小垂直逆変換行列を獲得し、１６×１６水平逆変換行列のうち、上側の８列のみを選択して、８×１６サイズの縮小水平逆変換行列を獲得する。周波数逆変換部９２０は、１６×８サイズの縮小垂直逆変換行列、８×１６サイズの縮小水平逆変換行列、及び８×８変換ブロック間の行列演算を通じて、１６×１６サイズの逆変換ブロック、すなわち、レジデュアルブロックを生成する。具体的に、１６×８サイズの縮小垂直逆変換行列を、８×８変換ブロックに適用すれば、１６×８サイズの中間値が生成され、１６×８サイズの中間値に、再び８×１６サイズの縮小水平逆変換行列を適用すれば、最終的に１６×１６サイズのレジデュアルブロックが獲得される。
【００５８】
Ｍ及びＮは３２、Ｘ０ないしＸ１５は、入力値、Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉ，Ｆｉ及びＧｉ（ｉは、０から３１までの整数）は、中間値、Ｙ０ないしＹ３１は、出力値を表すとする時、周波数逆変換部９２０は、図４のフローグラフ４００に基づいて生成された低周波数帯域の１６×１６変換ブロックの行方向及び列方向の入力値に対して、次のポイント変換を繰り返して、３２×３２レジデュアルブロックを復元する。
【００５９】
{
/stage  0
G16  =  (  12  *  X1  )  >>  8;G17  =  (  -  171  *  X15)  >>  8;G18  =  (  109  *  X9  )  >>  8;G19  =  (  -  86  *  X7)  >>  8;G20  =  (  62  *  X5  )  >>  8;G21  =  (  -  131  *  X11)  >>  8;G22  =  (  152  *  X13  )  >>  8;G23  =  (  -  37  *  X3)  >>  8;G24  =  (  253  *  X3  )  >>  8;G25  =  (  205  *  X13)  >>  8;G26  =  (  219  *  X11)  >>  8;G27  =  (  248  *  X5)  >>  8;G28  =  (  241  *  X7  )  >>  8;G29  =  (  231  *  X9)  >>  8;G30  =  (  189  *  X15  )  >>  8;G31  =  (  255  *  X1)  >>  8;
/Stage  1
F8  =  (  25  *  X2  )  >>  8;F9  =  (  -  162  *  X14)  >>  8;F10  =  (  120  *  X10  )  >>  8;F11  =  (  -  74  *  X6)  >>  8;F12  =  (  244  *  X6  )  >>  8;F13  =  (  225  *  X10)  >>  8;F14  =  (  197  *  X14  )  >>  8;F15  =  (  254  *  X2)  >>  8;
F16  =  G16  +  G17;F17  =  G16  -  G17;F18  =  G19  -  G18;F19  =  G19  +  G18;F20  =  G20  +  G21;F21  =  G20  -  G21;F22  =  G23  -  G22;F23  =  G23  +  G22;F24  =  G24  +  G25;F25  =  G24  -  G25;F26  =  G27  -  G26;F27  =  G27  +  G26;F28  =  G28  +  G29;F29  =  G28  -  G29;F30  =  G31  -  G30;F31  =  G31  +  G30;
/stage  2
E4  =  (  49  *  X4  )  >>  8;E5  =  (  -  142  *  X12)  >>  8;E6  =  (  212  *  X12  )  >>  8;E7  =  (  251  *  X4)  >>  8;
E8  =  F8  +  F9;E9  =  F8  -  F9;E10  =  F11  -  F10;E11  =  F11  +  F10;E12  =  F12  +  F13;E13  =  F12  -  F13;E14  =  F15  -  F14;E15  =  F15  +  F14;E17  =  (  49  *  F30  -  251  *  F17)  >>  8;E18  =  (  -  251*F29  -  49*F18)  >>  8;E21  =  (  212  *  F26  -  142  *  F21)  >>  8;E22  =  (  -  142*F25  -  212*F22)  >>  8;E25  =  (  212  *  F25  -  142  *  F22)  >>  8;E26  =  (  142  *  F26  +  212  *  F21)  >>  8;E29  =  (  49  *  F29  -  251  *  F18)  >>  8;E30  =  (  251  *  F30  +  49  *  F17)  >>  8;
/stage  3
D0  =  (  181  *  (  X0  ))  >>  8;D1  =  (  181  *  (  X0  ))  >>  8;D2  =  (  97  *  X8  )  >>  8;D3  =  (  236  *  X8  )  >>  8;
D4  =  E4  +  E5;D5  =  E4  -  E5;D6  =  E7  -  E6;D7  =  E7  +  E6;D9  =  (  97*E14  -  236*E9)  >>  8;D10  =  (-  236*E13  -  97*E10)  >>  8;D13  =  (  97  *  E13  -  236  *  E10)  >>  8;D14  =  (  236  *  E14  +  97  *  E9)  >>  8;D16  =  F16  +  F19;D19  =  F16  -  F19;D20  =  F23  -  F20;D23  =  F23  +  F20;D24  =  F24  +  F27;D27  =  F24  -  F27;D28  =  F31  -  F28;D31  =  F31  +  F28;D17  =  E17  +  E18;D18  =  E17  -  E18;D21  =  E22  -  E21;D22  =  E22  +  E21;D25  =  E25  +  E26;D26  =  E25  -  E26;D29  =  E30  -  E29;D30  =  E30  +  E29;
/stage  4
C0  =  D0  +  D3;C3  =  D0  -  D3;C8  =  E8  +  E11;C11  =  E8  -  E11;C12  =  E15  -  E12;C15  =  E15  +  E12;C1  =  D1  +  D2;C2  =  D1  -  D2;C9  =  D9  +  D10;C10  =  D9  -  D10;C13  =  D14  -  D13;C14  =  D14  +  D13;C5  =  (  181  *  (  D6  -  D5  ))  >>  8;C6  =  (  181  *  (  D6  +  D5  ))  >>  8;C18  =  (  97*D29  -  236*D18)  >>  8;C20  =  (  -  236*D27  -  97*D20)  >>  8;C26  =  (  -  236*D21  +  97*D26)  >>  8;C28  =  (  97*D19  +  236*D28)  >>  8;C19  =  (  97*D28  -  236*D19)  >>  8;C21  =  (-  236*D26  -  97*D21)  >>  8;C27  =  (-  236*D20  +  97*D27)  >>  8;C29  =  (  97*D18  +  236*D29)  >>  8;
/stage  5
B0  =  C0  +  D7;B7  =  C0  -  D7;B1  =  C1  +  C6;B6  =  C1  -  C6;B2  =  C2  +  C5;B5  =  C2  -  C5;B3  =  C3  +  D4;B4  =  C3  -  D4;B10  =  (  181  *  (  C13  -  C10  ))  >>  8;B13  =  (  181  *  (  C13  +  C10  ))  >>  8;B11  =  (  181  *  (  C12  -  C11  ))  >>  8;B12  =  (  181  *  (  C12  +  C11  ))  >>  8;B16  =  D16  +  D23;B23  =  D16  -  D23;B24  =  D31  -  D24;B31  =  D31  +  D24;B17  =  D17  +  D22;B22  =  D17  -  D22;B25  =  D30  -  D25;B30  =  D30  +  D25;B18  =  C18  +  C21;B21  =  C18  -  C21;B26  =  C29  -  C26;B29  =  C29  +  C26;B19  =  C19  +  C20;B20  =  C19  -  C20;B27  =  C28  -  C27;B28  =  C28  +  C27;
/stage  6
A0  =  B0  +  C15;A15  =  B0  -  C15;A1  =  B1  +  C14;A14  =  B1  -  C14;A2  =  B2  +  B13;A13  =  B2  -  B13;A3  =  B3  +  B12;A12  =  B3  -  B12;A4  =  B4  +  B11;A11  =  B4  -  B11;A5  =  B5  +  B10;A10  =  B5  -  B10;A6  =  B6  +  C9;A9  =  B6  -  C9;A7  =  B7  +  C8;A8  =  B7  -  C8;A20  =  (  181  *  (  B27  -  B20  ))  >>  8;A27  =  (  181  *  (  B27  +  B20  ))  >>  8;A21  =  (  181  *  (  B26  -  B21  ))  >>  8;A26  =  (  181  *  (  B26  +  B21  ))  >>  8;A22  =  (  181  *  (  B25  -  B22  ))  >>  8;A25  =  (  181  *  (  B25  +  B22  ))  >>  8;A23  =  (  181  *  (  B24  -  B23  ))  >>  8;A24  =  (  181  *  (  B24  +  B23  ))  >>  8;
/stage  7
Y0  =  A0  +  B31;Y31  =  A0  -  B31;Y1  =  A1  +  B30;Y30  =  A1  -  B30;Y2  =  A2  +  B29;Y29  =  A2  -  B29;Y3  =  A3  +  B28;Y28  =  A3  -  B28;Y4  =  A4  +  A27;Y27  =  A4  -  A27;Y5  =  A5  +  A26;Y26  =  A5  -  A26;Y6  =  A6  +  A25;Y25  =  A6  -  A25;Y7  =  A7  +  A24;Y24  =  A7  -  A24;Y8  =  A8  +  A23;Y23  =  A8  -  A23;Y9  =  A9  +  A22;Y22  =  A9  -  A22;Y10  =  A10  +  A21;Y21  =  A10  -  A21;Y11  =  A11  +  A20;Y20  =  A11  -  A20;Y12  =  A12  +  B19;Y19  =  A12  -  B19;Y13  =  A13  +  B18;Y18  =  A13  -  B18;Y14  =  A14  +  B17;Y17  =  A14  -  B17;Y15  =  A15  +  B16;Y16  =  A15  -  B16;
}
Ｍ及びＮは６４、Ｘ０ないしＸ１５は、入力値、Ｚｉ，Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉ，Ｆｉ，Ｇｉ及びＨｉ（ｉは、０から６３までの整数）は、中間値、Ｙ０ないしＹ６３は、出力値を表すとする時、周波数逆変換部９２０は、図４のフローグラフ４００に基づいて生成された低周波数帯域の１６×１６変換ブロックの行方向及び列方向の入力値に対して、次のポイント変換を繰り返して、６４×６４レジデュアルブロックを復元する。
【００６０】
{
/stage  0
H32  =  (25*X1)  >>  10;H33  =  0;H34  =  0;H35  =  (-369*X15)  >>  10;H36  =  (224*X9)  >>  10;H37  =  0;H38  =  0;H39  =  (-175*X7)  >>  10;H40  =  (125*X5)  >>  10;H41  =  0;H42  =  0;H43  =  (-273*X11)  >>  10;H44  =  (321*X13)  >>  10;H45  =  0;H46  =  0;H47  =  (-75*X3)  >>  10;H48  =  (1021*X3)  >>  10;H49  =  0;H50  =  0;H51  =  (972*X13)  >>  10;H52  =  (987*X11)  >>  10;H53  =  0;H54  =  0;H55  =  (1016*X5)  >>  10;H56  =  (1009*X7)  >>  10;H57  =  0;H58  =  0;H59  =  (999*X9)  >>  10;H60  =  (955*X15)  >>  10;H61  =  0;H62  =  0;H63  =  (1024*X1)  >>  10;
/stage  1
G16  =  (50*X2)  >>  10;G17  =  0;G18  =  0;G19  =  (-345*X14)  >>  10;G20  =  (249*X10)  >>  10;G21  =  0;G22  =  0;G23  =  (-150*X6)  >>  10;G24  =  (1013*X6)  >>  10;G25  =  0;G26  =  0;G27  =  (993*X10)  >>  10;G28  =  (964*X14)  >>  10;G29  =  0;G30  =  0;G31  =  (1023*X2)  >>  10;
G32  =  H32+H33;G33  =  H32-H33;G34  =  H35-H34;G35  =  H35+H34;G36  =  H36+H37;G37  =  H36-H37;G38  =  H39-H38;G39  =  H39+H38;G40  =  H40+H41;G41  =  H40-H41;G42  =  H43-H42;G43  =  H43+H42;G44  =  H44+H45;G45  =  H44-H45;G46  =  H47-H46;G47  =  H47+H46;G48  =  H48+H49;G49  =  H48-H49;G50  =  H51-H50;G51  =  H51+H50;G52  =  H52+H53;G53  =  H52-H53;G54  =  H55-H54;G55  =  H55+H54;G56  =  H56+H57;G57  =  H56-H57;G58  =  H59-H58;G59  =  H59+H58;G60  =  H60+H61;G61  =  H60-H61;G62  =  H63-H62;G63  =  H63+H62;
/stage  2
F8  =  (100*X4)  >>  10;F9  =  0;F10  =  0;F11  =  (-297*X12)  >>  10;F12  =  (980*X12)  >>  10;F13  =  0;F14  =  0;F15  =  (1019*X4)  >>  10;
F16  =  G16+G17;F17  =  G16-G17;F18  =  G19-G18;F19  =  G19+G18;F20  =  G20+G21;F21  =  G20-G21;F22  =  G23-G22;F23  =  G23+G22;F24  =  G24+G25;F25  =  G24-G25;F26  =  G27-G26;F27  =  G27+G26;F28  =  G28+G29;F29  =  G28-G29;F30  =  G31-G30;F31  =  G31+G30;F33  =  (100*G62-1019*G33)  >>  10;F34  =  (-1019*G61-100*G34)  >>  10;F37  =  (792*G58-650*G37)  >>  10;F38  =  (-650*G57-792*G38)  >>  10;F41  =  (483*G54-903*G41)  >>  10;F42  =  (-903*G53-483*G42)  >>  10;F45  =  (980*G50-297*G45)  >>  10;F46  =  (-297*G49-980*G46)  >>  10;F49  =  (980*G49-297*G46)  >>  10;F50  =  (297*G50+980*G45)  >>  10;F53  =  (483*G53-903*G42)  >>  10;F54  =  (903*G54+483*G41)  >>  10;F57  =  (792*G57-650*G38)  >>  10;F58  =  (650*G58+792*G37)  >>  10;F61  =  (100*G61-1019*G34)  >>  10;F62  =  (1019*G62+100*G33)  >>  10;
/stage  3
E4  =  (200*X8)  >>  10;E5  =  0;E6  =  0;E7  =  (1004*X8)  >>  10;
E8  =  F8+F9;E9  =  F8-F9;E10  =  F11-F10;E11  =  F11+F10;E12  =  F12+F13;E13  =  F12-F13;E14  =  F15-F14;E15  =  F15+F14;E17  =  (200*F30-1004*F17)  >>  10;E18  =  (-1004*F29-200*F18)  >>  10;E21  =  (851*F26-569*F21)  >>  10;E22  =  (-569*F25-851*F22)  >>  10;E25  =  (851*F25-569*F22)  >>  10;E26  =  (569*F26+851*F21)  >>  10;E29  =  (200*F29-1004*F18)  >>  10;E30  =  (1004*F30+200*F17)  >>  10;E32  =  G32+G35;E33  =  F33+F34;E34  =  F33-F34;E35  =  G32-G35;E36  =  G39-G36;E37  =  F38-F37;E38  =  F38+F37;E39  =  G39+G36;E40  =  G40+G43;E41  =  F41+F42;E42  =  F41-F42;E43  =  G40-G43;E44  =  G47-G44;E45  =  F46-F45;E46  =  F46+F45;E47  =  G47+G44;E48  =  G48+G51;E49  =  F49+F50;E50  =  F49-F50;E51  =  G48-G51;E52  =  G55-G52;E53  =  F54-F53;E54  =  F54+F53;E55  =  G55+G52;E56  =  G56+G59;E57  =  F57+F58;E58  =  F57-F58;E59  =  G56-G59;E60  =  G63-G60;E61  =  F62-F61;E62  =  F62+F61;E63  =  G63+G60;
/stage  4
D0  =  (724*(X0))  >>  10;D1  =  (724*(X0))  >>  10;D2  =  0;D3  =  0;
D4  =  E4+E5;D5  =  E4-E5;D6  =  E7-E6;D7  =  E7+E6;D9  =  (392*E14-946*E9)  >>  10;D10  =  (-946*E13-392*E10)  >>  10;D13  =  (392*E13-946*E10)  >>  10;D14  =  (946*E14+392*E9)  >>  10;D16  =  F16+F19;D19  =  F16-F19;D20  =  F23-F20;D23  =  F23+F20;D24  =  F24+F27;D27  =  F24-F27;D28  =  F31-F28;D31  =  F31+F28;D17  =  E17+E18;D18  =  E17-E18;D21  =  E22-E21;D22  =  E22+E21;D25  =  E25+E26;D26  =  E25-E26;D29  =  E30-E29;D30  =  E30+E29;D34  =  (200*E61-1004*E34)  >>  10;D35  =  (200*E60-1004*E35)  >>  10;D36  =  (-1004*E59-200*E36)  >>  10;D37  =  (-1004*E58-200*E37)  >>  10;D42  =  (851*E53-569*E42)  >>  10;D43  =  (851*E52-569*E43)  >>  10;D44  =  (-569*E51-851*E44)  >>  10;D45  =  (-569*E50-851*E45)  >>  10;D50  =  (851*E50-569*E45)  >>  10;D51  =  (851*E51-569*E44)  >>  10;D52  =  (569*E52+851*E43)  >>  10;D53  =  (569*E53+851*E42)  >>  10;D58  =  (200*E58-1004*E37)  >>  10;D59  =  (200*E59-1004*E36)  >>  10;D60  =  (1004*E60+200*E35)  >>  10;D61  =  (1004*E61+200*E34)  >>  10;
/stage  5
C0  =  D0+D3;C3  =  D0-D3;C8  =  E8+E11;C11  =  E8-E11;C12  =  E15-E12;C15  =  E15+E12;C1  =  D1+D2;C2  =  D1-D2;C9  =  D9+D10;C10  =  D9-D10;C13  =  D14-D13;C14  =  D14+D13;C5  =  (724*(D6-D5))  >>  10;C6  =  (724*(D6+D5))  >>  10;C18  =  (392*D29-946*D18)  >>  10;C20  =  (-946*D27-392*D20)  >>  10;C26  =  (-946*D21+392*D26)  >>  10;C28  =  (392*D19+946*D28)  >>  10;C19  =  (392*D28-946*D19)  >>  10;C21  =  (-946*D26-392*D21)  >>  10;C27  =  (-946*D20+392*D27)  >>  10;C29  =  (392*D18+946*D29)  >>  10;C32  =  E32+E39;C39  =  E32-E39;C40  =  E47-E40;C47  =  E47+E40;C48  =  E48+E55;C55  =  E48-E55;C56  =  E63-E56;C63  =  E63+E56;C33  =  E33+E38;C38  =  E33-E38;C41  =  E46-E41;C46  =  E46+E41;C49  =  E49+E54;C54  =  E49-E54;C57  =  E62-E57;C62  =  E62+E57;C34  =  D34+D37;C37  =  D34-D37;C42  =  D45-D42;C45  =  D45+D42;C50  =  D50+D53;C53  =  D50-D53;C58  =  D61-D58;C61  =  D61+D58;C35  =  D35+D36;C36  =  D35-D36;C43  =  D44-D43;C44  =  D44+D43;C51  =  D51+D52;C52  =  D51-D52;C59  =  D60-D59;C60  =  D60+D59;
/stage  6
B0  =  C0+D7;B7  =  C0-D7;B1  =  C1+C6;B6  =  C1-C6;B2  =  C2+C5;B5  =  C2-C5;B3  =  C3+D4;B4  =  C3-D4;B10  =  (724*(C13-C10))  >>  10;B13  =  (724*(C13+C10))  >>  10;B11  =  (724*(C12-C11))  >>  10;B12  =  (724*(C12+C11))  >>  10;B16  =  D16+D23;B23  =  D16-D23;B24  =  D31-D24;B31  =  D31+D24;B17  =  D17+D22;B22  =  D17-D22;B25  =  D30-D25;B30  =  D30+D25;B18  =  C18+C21;B21  =  C18-C21;B26  =  C29-C26;B29  =  C29+C26;B19  =  C19+C20;B20  =  C19-C20;B27  =  C28-C27;B28  =  C28+C27;B36  =  (392*C59-946*C36)  >>  10;B40  =  (-946*C55-392*C40)  >>  10;B52  =  (-946*C43+392*C52)  >>  10;B56  =  (392*C39+946*C56)  >>  10;B37  =  (392*C58-946*C37)  >>  10;B41  =  (-946*C54-392*C41)  >>  10;B53  =  (-946*C42+392*C53)  >>  10;B57  =  (392*C38+946*C57)  >>  10;B38  =  (392*C57-946*C38)  >>  10;B42  =  (-946*C53-392*C42)  >>  10;B54  =  (-946*C41+392*C54)  >>  10;B58  =  (392*C37+946*C58)  >>  10;B39  =  (392*C56-946*C39)  >>  10;B43  =  (-946*C52-392*C43)  >>  10;B55  =  (-946*C40+392*C55)  >>  10;B59  =  (392*C36+946*C59)  >>  10;
/stage  7
A0  =  B0+C15;A15  =  B0-C15;A1  =  B1+C14;A14  =  B1-C14;A2  =  B2+B13;A13  =  B2-B13;A3  =  B3+B12;A12  =  B3-B12;A4  =  B4+B11;A11  =  B4-B11;A5  =  B5+B10;A10  =  B5-B10;A6  =  B6+C9;A9  =  B6-C9;A7  =  B7+C8;A8  =  B7-C8;A20  =  (724*(B27-B20))  >>  10;A27  =  (724*(B27+B20))  >>  10;A21  =  (724*(B26-B21))  >>  10;A26  =  (724*(B26+B21))  >>  10;A22  =  (724*(B25-B22))  >>  10;A25  =  (724*(B25+B22))  >>  10;A23  =  (724*(B24-B23))  >>  10;A24  =  (724*(B24+B23))  >>  10;A32  =  C32+C47;A47  =  C32-C47;A48  =  C63-C48;A63  =  C63+C48;A33  =  C33+C46;A46  =  C33-C46;A49  =  C62-C49;A62  =  C62+C49;A34  =  C34+C45;A45  =  C34-C45;A50  =  C61-C50;A61  =  C61+C50;A35  =  C35+C44;A44  =  C35-C44;A51  =  C60-C51;A60  =  C60+C51;A36  =  B36+B43;A43  =  B36-B43;A52  =  B59-B52;A59  =  B59+B52;A37  =  B37+B42;A42  =  B37-B42;A53  =  B58-B53;A58  =  B58+B53;A38  =  B38+B41;A41  =  B38-B41;A54  =  B57-B54;A57  =  B57+B54;A39  =  B39+B40;A40  =  B39-B40;A55  =  B56-B55;A56  =  B56+B55;
/stage  8
Z0  =  A0+B31;Z31  =  A0-B31;Z1  =  A1+B30;Z30  =  A1-B30;Z2  =  A2+B29;Z29  =  A2-B29;Z3  =  A3+B28;Z28  =  A3-B28;Z4  =  A4+A27;Z27  =  A4-A27;Z5  =  A5+A26;Z26  =  A5-A26;Z6  =  A6+A25;Z25  =  A6-A25;Z7  =  A7+A24;Z24  =  A7-A24;Z8  =  A8+A23;Z23  =  A8-A23;Z9  =  A9+A22;Z22  =  A9-A22;Z10  =  A10+A21;Z21  =  A10-A21;Z11  =  A11+A20;Z20  =  A11-A20;Z12  =  A12+B19;Z19  =  A12-B19;Z13  =  A13+B18;Z18  =  A13-B18;Z14  =  A14+B17;Z17  =  A14-B17;Z15  =  A15+B16;Z16  =  A15-B16;Z40  =  (724*(A55-A40))  >>  10;Z55  =  (724*(A55+A40))  >>  10;Z41  =  (724*(A54-A41))  >>  10;Z54  =  (724*(A54+A41))  >>  10;Z42  =  (724*(A53-A42))  >>  10;Z53  =  (724*(A53+A42))  >>  10;Z43  =  (724*(A52-A43))  >>  10;Z52  =  (724*(A52+A43))  >>  10;Z44  =  (724*(A51-A44))  >>  10;Z51  =  (724*(A51+A44))  >>  10;Z45  =  (724*(A50-A45))  >>  10;Z50  =  (724*(A50+A45))  >>  10;Z46  =  (724*(A49-A46))  >>  10;Z49  =  (724*(A49+A46))  >>  10;Z47  =  (724*(A48-A47))  >>  10;Z48  =  (724*(A48+A47))  >>  10;
/stage  9
Y0  =  Z0+A63;Y63  =  Z0-A63;Y1  =  Z1+A62;Y62  =  Z1-A62;Y2  =  Z2+A61;Y61  =  Z2-A61;Y3  =  Z3+A60;Y60  =  Z3-A60;Y4  =  Z4+A59;Y59  =  Z4-A59;Y5  =  Z5+A58;Y58  =  Z5-A58;Y6  =  Z6+A57;Y57  =  Z6-A57;Y7  =  Z7+A56;Y56  =  Z7-A56;Y8  =  Z8+Z55;Y55  =  Z8-Z55;Y9  =  Z9+Z54;Y54  =  Z9-Z54;Y10  =  Z10+Z53;Y53  =  Z10-Z53;Y11  =  Z11+Z52;Y52  =  Z11-Z52;Y12  =  Z12+Z51;Y51  =  Z12-Z51;Y13  =  Z13+Z50;Y50  =  Z13-Z50;Y14  =  Z14+Z49;Y49  =  Z14-Z49;Y15  =  Z15+Z48;Y48  =  Z15-Z48;Y16  =  Z16+Z47;Y47  =  Z16-Z47;Y17  =  Z17+Z46;Y46  =  Z17-Z46;Y18  =  Z18+Z45;Y45  =  Z18-Z45;Y19  =  Z19+Z44;Y44  =  Z19-Z44;Y20  =  Z20+Z43;Y43  =  Z20-Z43;Y21  =  Z21+Z42;Y42  =  Z21-Z42;Y22  =  Z22+Z41;Y41  =  Z22-Z41;Y23  =  Z23+Z40;Y40  =  Z23-Z40;Y24  =  Z24+A39;Y39  =  Z24-A39;Y25  =  Z25+A38;Y38  =  Z25-A38;Y26  =  Z26+A37;Y37  =  Z26-A37;Y27  =  Z27+A36;Y36  =  Z27-A36;Y28  =  Z28+A35;Y35  =  Z28-A35;Y29  =  Z29+A34;Y34  =  Z29-A34;Y30  =  Z30+A33;Y33  =  Z30-A33;Y31  =  Z31+A32;Y32  =  Z31-A32;
}
Ｍ及びＮは３２、Ｘ０ないしＸ１５は、入力値、Ｚｉ，Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉ，Ｆｉ（ｉは、０から３１までの整数）は、中間値、Ｙ０ないしＹ３１は、出力値を表すとする時、周波数逆変換部９２０は、図５のフローグラフ５００に基づいて生成された低周波数帯域の１６×１６変換ブロックの行方向及び列方向の入力値に対して、次のポイント変換を繰り返して、３２×３２レジデュアルブロックを復元する。
【００６１】
{
/stage  0
D0=  X0;E24  =  X1;E12  =  X2;F16  =  -X3;D4  =  X4;    F31  =  X5;    E8  =  X6;  E26  =  -X7;D2  =  X8;      E21  =  X9;    E15  =  X10;    F29  =  X11;E5  =  X12;    F18  =  -X13;      D13  =  X14;      D22  =  X15;
/stage  1
E16  =  (251*F16  )  >>  8;E17  =  (-49*F16  )  >>  8;E18  =  (212*F18  )  >>  8;E19  =  (-142*F18  )  >>  8;E28  =  (142*F29)  >>  8;E29  =  (212*F29)  >>  8;E30  =  (49*F31)  >>  8;E31  =  (251*F31)  >>  8;
/stage  2
D5  =  (181*(E5  ))  >>  8;D7  =  (181*(E5  ))  >>  8;D8  =  (97*E8  )  >>  8;D9  =  (-236*E8  )  >>  8;D11  =  (181*(-  E12))  >>  8;D12  =  (181*(  E12))  >>  8;D14  =  (236*E15)  >>  8;D15  =  (97*E15)  >>  8;D16  =  E16  +  E18;C18  =  E16  -  E18;C17  =  E17  +  E19;D19  =  E17  -  E19;D20  =  (  -  97*E21)  >>  8;D21  =  (  236*E21)  >>  8;D23  =  (181*(-  E24))  >>  8;D24  =  (181*(  E24))  >>  8;D26  =  (236*E26  )  >>  8;D27  =  (97*E26  )  >>  8;D28  =  -  E28  +  E30;C30  =  E28  +  E30;C29  =  -  E29  +  E31;D31  =  E29  +  E31;
/stage  3
C0  =  (181*D0  )  >>  8;C1  =  (181*D0  )  >>  8;C2  =  (97*D2  )  >>  8;C3  =  (236*D2  )  >>  8;C4  =  D4  +  D5;C5  =  D4  -  D5;C6  =    D7;  C7  =  D7;    C8    =  D8    +  D14;C14  =  D8    -  D14;C9    =  D9    +  D15;C15  =  D9    -  D15;C10  =  D11;  C11  =  -  D11;C12  =  D12  +  D13;C13  =  D12  -  D13;  C16  =  (181*(D16  -  D19))  >>  8;C19  =  (181*(D16  +  D19))  >>  8;C20  =  D20  +  D26;C26  =  D20  -  D26;C21  =  D21  +  D27;C27  =  D21  -  D27;C22  =  D22  +  D23;C23  =  D22  -  D23;C24  =  D24  ;C25  =  D24  ;C28  =  (181*(D28  -  D31))  >>  8;C31  =  (181*(D28  +  D31))  >>  8;
/stage  4
B0  =  C0  +  C3;B3  =  C0  -  C3;B1  =  C1  +  C2;B2  =  C1  -  C2;B4  =  (49*C4  -  251*C7)  >>  8;B7  =  (251*C4  +  49*C7)  >>  8;B5  =  (142*C5  -  212*C6)  >>  8;B6  =  (212*C5  +  142*C6)  >>  8;B8  =  C8  +  C11;B11  =  C8  -  C11;B9  =  C9  +  C10;B10  =  C9  -  C10;B12  =  C12  +  C15;B15  =  C12  -  C15;B13  =  C13  +  C14;B14  =  C13  -  C14;B16  =  C16  +  C28;B28  =  C16  -  C28;B17  =  C17  +  C29;B29  =  C17  -  C29;B18  =  C18  +  C30;B30  =  C18  -  C30;B19  =  C19  +  C31;B31  =  C19  -  C31;B20  =  C20  +  C23;B23  =  C20  -  C23;B21  =  C21  +  C22;B22  =  C21  -  C22;B24  =  C24  +  C27;B27  =  C24  -  C27;B25  =  C25  +  C26;B26  =  C25  -  C26;
/stage  5
A0  =  B0  +  B7;A7  =  B0  -  B7;A1  =  B1  +  B6;A6  =  B1  -  B6;A2  =  B2  +  B5;A5  =  B2  -  B5;A3  =  B3  +  B4;A4  =  B3  -  B4;A8  =  (197*B8  -  162*B15)  >>  8;A15  =  (162*B8  +  197*B15)  >>  8;A9  =  (120*B9  +  225*B14)  >>  8;A14  =  (-225*B9  +  120*B14)  >>  8;A10  =  (244*B10  -  74*B13)  >>  8;A13  =  (74*B10  +  244*B13)  >>  8;A11  =  (25*B11  +  254*B12)  >>  8;A12  =  (-254*B11  +  25*B12)  >>  8;A16  =  B16  +  B23;A23  =  B16  -  B23;A17  =  B17  +  B22;A22  =  B17  -  B22;A18  =  B18  +  B21;A21  =  B18  -  B21;A19  =  B19  +  B20;A20  =  B19  -  B20;A24  =  B24  +  B31;A31  =  B24  -  B31;A25  =  B25  +  B30;A30  =  B25  -  B30;A26  =  B26  +  B29;A29  =  B26  -  B29;A27  =  B27  +  B28;A28  =  B27  -  B28;
/stage  6
Z0    =  A0  +  A15;Z1    =  A1  +  A14;Z2    =  A2  +  A13;Z3    =  A3  +  A12;Z4    =  A4  +  A11;Z5    =  A5  +  A10;Z6    =  A6  +  A9;Z7    =  A7  +  A8;Z8    =  A7  -  A8;Z9    =  A6  -  A9;Z10  =  A5  -  A10;Z11  =  A4  -  A11;Z12  =  A3  -  A12;Z13  =  A2  -  A13;Z14  =  A1  -  A14;Z15  =  A0  -  A15;Z16  =  (171*A16  +  189*A31)  >>  8;Z31  =  (-189*A16  +  171*A31)  >>  8;Z17  =  (205*A17  -  152*A30)  >>  8;Z30  =  (152*A17  +  205*A30)  >>  8;Z18  =  (131*A18  +  219*A29)  >>  8;Z29  =  (-219*A18  +  131*A29)  >>  8;Z19  =  (231*A19  -  109*A28)  >>  8;Z28  =  (109*A19  +  231*A28)  >>  8;Z20  =  (86*A20  +  241*A27)  >>  8;Z27  =  (-241*A20  +  86*A27)  >>  8;Z21  =  (248*A21  -  62*A26)  >>  8;Z26  =  (62*A21  +  248*A26)  >>  8;Z22  =  (37*A22  +  253*A25)  >>  8;Z25  =  (-253*A22  +  37*A25)  >>  8;Z23  =  (255*A23  -  12*A24)  >>  8;Z24  =  (12*A23  +  255*A24)  >>  8
/stage  7
Y0  =  Z0  +  Z31;Y31  =  Z0  -  Z31;Y1  =  Z1  +  Z30;Y30  =  Z1  -  Z30;Y2  =  Z2  +  Z29;Y29  =  Z2  -  Z29;Y3  =  Z3  +  Z28;Y28  =  Z3  -  Z28;Y4  =  Z4  +  Z27;Y27  =  Z4  -  Z27;Y5  =  Z5  +  Z26;Y26  =  Z5  -  Z26;Y6  =  Z6  +  Z25;Y25  =  Z6  -  Z25;Y7  =  Z7  +  Z24;Y24  =  Z7  -  Z24;Y8  =  Z8  +  Z23;Y23  =  Z8  -  Z23;Y9  =  Z9  +  Z22;Y22  =  Z9  -  Z22;Y10  =  Z10  +  Z21;Y21  =  Z10  -  Z21;Y11  =  Z11  +  Z20;Y20  =  Z11  -  Z20;Y12  =  Z12  +  Z19;Y19  =  Z12  -  Z19;Y13  =  Z13  +  Z18;Y18  =  Z13  -  Z18;Y14  =  Z14  +  Z17;Y17  =  Z14  -  Z17;Y15  =  Z15  +  Z16;Y16  =  Z15  -  Z16;
}
また、Ｍ及びＮは３２、Ｘ０ないしＸ１５は、入力値、Ｚｉ，Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ，Ｅｉ，Ｆｉ（ｉは、０から３１までの整数）は、中間値、Ｙ０ないしＹ３１は、出力値を表すとする時、周波数逆変換部９２０は、図５のフローグラフ５００に基づいて生成された低周波数帯域の１６×１６変換ブロックの行方向及び列方向の入力値に対して、次のポイント変換を繰り返して、３２×３２レジデュアルブロックを復元することも可能である。
【００６２】
{
/stage  0
D0=  X0;E24  =  X1;E12  =  X2;F16  =  -X3;D4  =  X4;    F31  =  X5;    E8  =  X6;  E26  =  -X7;D2  =  X8;      E21  =  X9;    E15  =  X10;    F29  =  X11;E5  =  X12;    F18  =  -X13;      D13  =  X14;      D22  =  X15;
/stage  1
E17  =  -  (48*F16>>  8);E16  =  F16  +  (50*E17>>  8);E19  =  -  (118*F18  >>  8);E18  =  F18  +  (171*E19>>  8);
E29  =  F29  ;E28  =  (171*E29>>  8);E31  =  F31  ;E30  =  (50*E31>>  8);
/stage  2
D7  =    (E5  >>  1);D5=  E5  -  D7;
D9  =  -E8  ;D8  =  -  (106*D9>>  8);
D12  =  E12  ;D11  =  -  D12;
D15  =  (90*E15>>  8);D14  =  E15  -  (106*D15>>  8);
D16  =  E16  +  E18;C18  =  E16  -  E18;C17  =  E17  +  E19;D19  =  E17  -  E19;
D21  =  E21  ;D20  =  -  (106*D21>>  8);D24  =  E24  ;D23  =  -  D24;D27  =  (90*E26>>  8);D26  =  E26  -  (106*D27>>  8);D28  =  -  E28  +  E30;C30  =  E28  +  E30;C29  =  -  E29  +  E31;D31  =  E29  +  E31;
/stage  3
C1  =  D0  >>  1;C0  =  D0  -  C1;
C3  =  D2  ;C2  =  (106*C3>>  8);
C4  =  D4  +  D5;C5  =  D4  -  D5;C6  =  D7;  C7  =  D7;    
C8    =  D8    +  D14;C14  =  D8    -  D14;C9    =  D9    +  D15;C15  =  D9    -  D15;C10  =  D11;  C11  =  -  D11;C12  =  D12  +  D13;C13  =  D12  -  D13;  
D16  =  D16  -  (106*D19>>  8);C19  =  D19  +  (181*D16>>  8);C16  =  D16  -  (106*C19>>  8);C20  =  D20  +  D26;C26  =  D20  -  D26;C21  =  D21  +  D27;C27  =  D21  -  D27;C22  =  D22  +  D23;C23  =  D22  -  D23;C24  =  D24;C25  =  D24;D28  =  D28  -  (106*D31>>  8);C31  =  D31  +  (181*D28>>  8);C28  =  D28  -  (106*C31>>  8);
/stage  4
B0  =  C0  +  C3;B3  =  C0  -  C3;B1  =  C1  +  C2;B2  =  C1  -  C2;
C4  =  C4  -  (210*C7>>  8);B7  =  C7  +  (251*C4>>  8);B4  =  C4  -  (210*B7>>  8);C5  =  C5  -  (136*C6>>  8);B6  =  C6  +  (212*C5>>  8);B5  =  C5  -  (136*B6>>  8);
B8  =  C8  +  C11;B11  =  C8  -  C11;B9  =  C9  +  C10;B10  =  C9  -  C10;
B12  =  C12  +  C15;B15  =  C12  -  C15;B13  =  C13  +  C14;B14  =  C13  -  C14;
B16  =  C16  +  C28;B28  =  C16  -  C28;B17  =  C17  +  C29;B29  =  C17  -  C29;B18  =  C18  +  C30;B30  =  C18  -  C30;B19  =  C19  +  C31;B31  =  C19  -  C31;
B20  =  C20  +  C23;B23  =  C20  -  C23;B21  =  C21  +  C22;B22  =  C21  -  C22;
B24  =  C24  +  C27;B27  =  C24  -  C27;B25  =  C25  +  C26;B26  =  C25  -  C26;
/stage  5
A0  =  B0  +  B7;A7  =  B0  -  B7;A1  =  B1  +  B6;A6  =  B1  -  B6;A2  =  B2  +  B5;A5  =  B2  -  B5;A3  =  B3  +  B4;A4  =  B3  -  B4;
B8  =  B8  -  (91*B15>>  8);A15  =  B15  +  (162*B8>>  8);A8  =  B8  -  (91*A15>>  8);B9  =  B9  +  (153*B14>>  8);A14  =  B14  -  (225*B9>>  8);A9  =  B9  +  (153*A14>>  8);B10  =  B10  -  (37*B13>>  8);A13  =  B13  +  (74*B10>>  8);A10  =  B10  -  (37*A13>>  8);B11  =  B11  +  (232*B12>>  8);A12  =  B12  -  (254*B11>>  8);A11  =  B11  +  (232*A12>>  8);A16  =  B16  +  B23;A23  =  B16  -  B23;A17  =  B17  +  B22;A22  =  B17  -  B22;A18  =  B18  +  B21;A21  =  B18  -  B21;A19  =  B19  +  B20;A20  =  B19  -  B20;
A24  =  B24  +  B31;A31  =  B24  -  B31;A25  =  B25  +  B30;A30  =  B25  -  B30;A26  =  B26  +  B29;A29  =  B26  -  B29;A27  =  B27  +  B28;A28  =  B27  -  B28;
/stage  6
Z0    =  A0  +  A15;Z1    =  A1  +  A14;Z2    =  A2  +  A13;Z3    =  A3  +  A12;Z4    =  A4  +  A11;Z5    =  A5  +  A10;Z6    =  A6  +  A9;Z7    =  A7  +  A8;Z8    =  A7  -  A8;Z9    =  A6  -  A9;Z10  =  A5  -  A10;Z11  =  A4  -  A11;Z12  =  A3  -  A12;Z13  =  A2  -  A13;Z14  =  A1  -  A14;Z15  =  A0  -  A15;
A16  =  A16  +  (113*A31>>  8);Z31  =  A31  -  (189*A16>>  8);Z16  =  A16  +  (113*Z31>>  8);A17  =  A17  -  (84*A30>>  8);Z30  =  A30  +  (152*A17>>  8);Z17  =  A17  -  (84*Z30>>  8);A18  =  A18  +  (145*A29>>  8);Z29  =  A29  -  (219*A18>>  8);Z18  =  A18  +  (145*Z29>>  8);A19  =  A19  -  (57*A28>>  8);Z28  =  A28  +  (109*A19>>  8);Z19  =  A19  -  (57*Z28>>  8);A20  =  A20  +  (180*A27>>  8);Z27  =  A27  -  (241*A20>>  8);Z20  =  A20  +  (180*Z27>>  8);A21  =  A21  -  (31*A26>>  8);Z26  =  A26  +  (62*A21>>  8);Z21  =  A21  -  (31*Z26>>  8);A22  =  A22  +  (220*A25>>  8);Z25  =  A25  -  (253*A22>>  8);Z22  =  A22  +  (220*Z25>>  8);A23  =  A23  -  (6*A24>>  8);Z24  =  A24  +  (12*A23>>  8);Z23  =  A23  -  (6*Z24>>  8);
/stage  7
Y0  =  Z0  +  Z31;Y31  =  Z0  -  Z31;Y1  =  Z1  +  Z30;Y30  =  Z1  -  Z30;Y2  =  Z2  +  Z29;Y29  =  Z2  -  Z29;Y3  =  Z3  +  Z28;Y28  =  Z3  -  Z28;Y4  =  Z4  +  Z27;Y27  =  Z4  -  Z27;Y5  =  Z5  +  Z26;Y26  =  Z5  -  Z26;Y6  =  Z6  +  Z25;Y25  =  Z6  -  Z25;Y7  =  Z7  +  Z24;Y24  =  Z7  -  Z24;Y8  =  Z8  +  Z23;Y23  =  Z8  -  Z23;Y9  =  Z9  +  Z22;Y22  =  Z9  -  Z22;Y10  =  Z10  +  Z21;Y21  =  Z10  -  Z21;Y11  =  Z11  +  Z20;Y20  =  Z11  -  Z20;Y12  =  Z12  +  Z19;Y19  =  Z12  -  Z19;Y13  =  Z13  +  Z18;Y18  =  Z13  -  Z18;Y14  =  Z14  +  Z17;Y17  =  Z14  -  Z17;Y15  =  Z15  +  Z16;Y16  =  Z15  -  Z16;
}
図１１は、本発明の一実施形態による映像逆変換方法を示すフローチャートである。図１１を参照すれば、ステップ１１１０で、縮小逆変換行列獲得部９１０は、Ｍ×Ｎ（Ｍ及びＮは、正の整数）ブロックの変換係数のうち、所定の周波数帯域の変換係数を受信し、ステップ１１２０で、Ｍ×Ｎブロックの周波数逆変換に利用されるＭ×Ｎ逆変換行列の元素のうち、所定の周波数帯域の変換係数の逆変換のための元素を選択して、縮小された逆変換行列を獲得する。前述したように、ビットストリームには、図１２Ａ及び図１２Ｂのような長方形の低周波数帯域ブロック、及び三角形の低周波数帯域ブロックのような多様な低周波数帯域形態についての情報と、低周波数帯域のサイズ情報とが含まれ、縮小逆変換行列獲得部９１０は、かかる低周波数帯域形態についての情報と、低周波数帯域のサイズ情報とに基づいて、変換係数が、全体変換ブロックに含まれた変換係数のうち、いかなる形態及びいかなる帯域の変換係数に該当するかを決定する。
【００６３】
逆変換しようとする変換ブロックのサイズをａ×ｄとする時、縮小逆変換行列獲得部９１０は、Ｍ×Ｎサイズの垂直逆変換行列のうち、左側のｄ列に該当する元素を選択して、Ｎ×ｄサイズの縮小垂直逆変換行列を生成し、Ｍ×Ｎサイズの水平逆変換行列のうち、上側のａ列に該当する元素を選択して、ａ×Ｎサイズの縮小水平逆変換行列を生成する。
【００６４】
ステップ１１３０で、周波数逆変換部９２０は、縮小された逆変換行列を、受信された所定の周波数帯域の変換ブロックに適用して、周波数逆変換を行う。前述した例において、ａ×ｄサイズの変換ブロック、Ｎ×ｄサイズの縮小垂直逆変換行列、及びａ×Ｎサイズの縮小水平逆変換行列間の行列演算を通じて、Ｍ×Ｎサイズのレジデュアルブロックが生成される。
【００６５】
以上のように、本発明は、たとえ限定された実施形態及び図面により説明されたとしても、本発明が前記の実施形態に限定されるものではなく、これは、当業者ならば、かかる記載から多様な修正及び変形が可能であろう。したがって、本発明の思想は、特許請求の範囲によってのみ把握されねばならず、これと均等または等価的な変形は、いずれも本発明の思想の範疇に属するといえる。また、本発明によるシステムは、コンピュータで読み取り可能な記録媒体に、コンピュータで読み取り可能なコードとして具現することが可能である。コンピュータで読み取り可能な記録媒体は、コンピュータシステムにより読み取られるデータが保存される全ての種類の記録装置を含む。記録媒体の例としては、ＲＯＭ(Read  Only  Memory)、ＲＡＭ(Random  Access  Memory)、ＣＤ−ＲＯＭ、磁気テープ、フロッピー（登録商標）ディスク、光データ保存装置などを含む。また、コンピュータで読み取り可能な記録媒体は、ネットワークに連結されたコンピュータシステムに分散されて、分散方式でコンピュータで読み取り可能なコードが保存されて実行される。
【図１】
2013542664.tif 000005
【図２】
2013542664.tif 000006
【図３】
2013542664.tif 000007
【図４】
2013542664.tif 000008
【図５】
2013542664.tif 000009
【図６】
2013542664.tif 000010
【図７】
2013542664.tif 000011
【図８】
2013542664.tif 000012
【図９】
2013542664.tif 000013
【図１０】
2013542664.tif 000014
【図１１】
2013542664.tif 000015
【図１２ａ】
2013542664.tif 000016
【図１２ｂ】
2013542664.tif 000017
【国際調査報告】
2013542664.tif 000018
2013542664.tif 000019
2013542664.tif 000020
2013542664.tif 000021