?? lifting.c
字號:
} break; default: QccErrorAddMessage("(QccWAVLiftingAnalysis): Undefined lifting scheme"); goto QccError; } if (QccWAVWaveletLWT(input_signal2, output_signal, signal_length, 0, phase)) { QccErrorAddMessage("(QccWAVLiftingAnalysis): Error calling QccWAVWaveletLWT()"); goto QccError; } return_value = 0; goto QccReturn; QccError: return_value = 1; QccReturn: QccVectorFree(input_signal2); return(return_value);}int QccWAVLiftingSynthesis(const QccVector input_signal, QccVector output_signal, int signal_length, int phase, const QccWAVLiftingScheme *lifting_scheme, int boundary){ int return_value; if (input_signal == NULL) return(0); if (output_signal == NULL) return(0); if (lifting_scheme == NULL) return(0); if (!signal_length) return(0); if (QccWAVWaveletInverseLWT(input_signal, output_signal, signal_length, 0, phase)) { QccErrorAddMessage("(QccWAVLiftingSynthesis): Error calling QccWAVWaveletInverseLWT()"); goto QccError; } switch (lifting_scheme->scheme) { case QCCWAVLIFTINGSCHEME_LWT: break; case QCCWAVLIFTINGSCHEME_Daubechies4: if (QccWAVLiftingSynthesisDaubechies4(output_signal, signal_length, phase, boundary)) { QccErrorAddMessage("(QccWAVLiftingSynthesis): Error calling QccWAVLiftingSynthesisDaubechies4()"); goto QccError; } break; case QCCWAVLIFTINGSCHEME_CohenDaubechiesFeauveau9_7: if (QccWAVLiftingSynthesisCohenDaubechiesFeauveau9_7(output_signal, signal_length, phase, boundary)) { QccErrorAddMessage("(QccWAVLiftingSynthesis): Error calling QccWAVLiftingSynthesisCohenDaubechiesFeauveau9_7()"); goto QccError; } break; case QCCWAVLIFTINGSCHEME_CohenDaubechiesFeauveau5_3: if (QccWAVLiftingSynthesisCohenDaubechiesFeauveau5_3(output_signal, signal_length, phase, boundary)) { QccErrorAddMessage("(QccWAVLiftingSynthesis): Error calling QccWAVLiftingSynthesisCohenDaubechiesFeauveau5_3()"); goto QccError; } break; default: QccErrorAddMessage("(QccWAVLiftingSynthesis): Undefined lifting scheme"); goto QccError; } return_value = 0; goto QccReturn; QccError: return_value = 1; QccReturn: return(return_value);}int QccWAVLiftingRedundantAnalysis(const QccVector input_signal, QccVector output_signal_low, QccVector output_signal_high, int signal_length, const QccWAVLiftingScheme *lifting_scheme, int boundary){ int return_value; QccVector temp1 = NULL; QccVector temp2 = NULL; QccVector temp3 = NULL; int length1, length2; if ((temp1 = QccVectorAlloc(signal_length)) == NULL) { QccErrorAddMessage("(QccWAVLiftingRedundantAnalysis): Error calling QccVectorAlloc()"); goto Error; } if ((temp2 = QccVectorAlloc(signal_length)) == NULL) { QccErrorAddMessage("(QccWAVLiftingRedundantAnalysis): Error calling QccVectorAlloc()"); goto Error; } if ((temp3 = QccVectorAlloc(signal_length)) == NULL) { QccErrorAddMessage("(QccWAVLiftingRedundantAnalysis): Error calling QccVectorAlloc()"); goto Error; } if (QccWAVLiftingAnalysis(input_signal, temp1, signal_length, 0, lifting_scheme, boundary)) { QccErrorAddMessage("(QccWAVLiftingRedundantAnalysis): Error calling QccWAVLiftingAnalysis()"); goto Error; } if (QccWAVLiftingAnalysis(input_signal, temp2, signal_length, 1, lifting_scheme, boundary)) { QccErrorAddMessage("(QccWAVLiftingRedundantAnalysis): Error calling QccWAVLiftingAnalysis()"); goto Error; } if (QccVectorCopy(temp3, temp1, signal_length)) { QccErrorAddMessage("(QccWAVLiftingRedundantAnalysis): Error calling QccVectorCopy()"); goto Error; } length1 = QccWAVWaveletDWTSubbandLength(signal_length, 1, 0, 0, 0); length2 = QccWAVWaveletDWTSubbandLength(signal_length, 1, 1, 0, 0); if (QccVectorCopy(&temp1[length1], temp2, length2)) { QccErrorAddMessage("(QccWAVLiftingRedundantAnalysis): Error calling QccVectorCopy()"); goto Error; } if (QccVectorCopy(temp2, &temp3[length1], length2)) { QccErrorAddMessage("(QccWAVLiftingRedundantAnalysis): Error calling QccVectorCopy()"); goto Error; } if (QccWAVWaveletInverseLWT(temp1, output_signal_low, signal_length, 0, 0)) { QccErrorAddMessage("(QccWAVLiftingRedundantAnalysis): Error calling QccWAVWaveletInverseLWT()"); goto Error; } if (QccWAVWaveletInverseLWT(temp2, output_signal_high, signal_length, 0, 1)) { QccErrorAddMessage("(QccWAVLiftingRedundantAnalysis): Error calling QccWAVWaveletInverseLWT()"); goto Error; } return_value = 0; goto Return; Error: return_value = 1; Return: QccVectorFree(temp1); QccVectorFree(temp2); QccVectorFree(temp3); return(return_value);}int QccWAVLiftingRedundantSynthesis(const QccVector input_signal_low, const QccVector input_signal_high, QccVector output_signal, int signal_length, const QccWAVLiftingScheme *lifting_scheme, int boundary){ int return_value; QccVector temp1 = NULL; QccVector temp2 = NULL; QccVector temp3 = NULL; int length1, length2; if ((temp1 = QccVectorAlloc(signal_length)) == NULL) { QccErrorAddMessage("(QccWAVLiftingRedundantSynthesis): Error calling QccVectorAlloc()"); goto Error; } if ((temp2 = QccVectorAlloc(signal_length)) == NULL) { QccErrorAddMessage("(QccWAVLiftingRedundantSynthesis): Error calling QccVectorAlloc()"); goto Error; } if ((temp3 = QccVectorAlloc(signal_length)) == NULL) { QccErrorAddMessage("(QccWAVLiftingRedundantSynthesis): Error calling QccVectorAlloc()"); goto Error; } if (QccWAVWaveletLWT(input_signal_low, temp1, signal_length, 0, 0)) { QccErrorAddMessage("(QccWAVLiftingRedundantSynthesis): Error calling QccWAVWaveletInverseLWT()"); goto Error; } if (QccWAVWaveletLWT(input_signal_high, temp2, signal_length, 0, 1)) { QccErrorAddMessage("(QccWAVLiftingRedundantSynthesis): Error calling QccWAVWaveletInverseLWT()"); goto Error; } length1 = QccWAVWaveletDWTSubbandLength(signal_length, 1, 0, 0, 0); length2 = QccWAVWaveletDWTSubbandLength(signal_length, 1, 1, 0, 0); if (QccVectorCopy(temp3, temp1, signal_length)) { QccErrorAddMessage("(QccWAVLiftingRedundantSynthesis): Error calling QccVectorCopy()"); goto Error; } if (QccVectorCopy(&temp1[length1], temp2, length2)) { QccErrorAddMessage("(QccWAVLiftingRedundantSynthesis): Error calling QccVectorCopy()"); goto Error; } if (QccVectorCopy(temp2, &temp3[length1], length2)) { QccErrorAddMessage("(QccWAVLiftingRedundantSynthesis): Error calling QccVectorCopy()"); goto Error; } if (QccWAVLiftingSynthesis(temp1, output_signal, signal_length, 0, lifting_scheme, boundary)) { QccErrorAddMessage("(QccWAVLiftingRedundantSynthesis): Error calling QccWAVLiftingSynthesis()"); goto Error; } if (QccWAVLiftingSynthesis(temp2, temp3, signal_length, 1, lifting_scheme, boundary)) { QccErrorAddMessage("(QccWAVLiftingRedundantSynthesis): Error calling QccWAVLiftingSynthesis()"); goto Error; } if (QccVectorAdd(output_signal, temp3, signal_length)) { QccErrorAddMessage("(QccWAVLiftingRedundantSynthesis): Error calling QccVectorAdd()"); goto Error; } if (QccVectorScalarMult(output_signal, 0.5, signal_length)) { QccErrorAddMessage("(QccWAVLiftingRedundantSynthesis): Error calling QccVectorScalarMult()"); goto Error; } return_value = 0; goto Return; Error: return_value = 1; Return: QccVectorFree(temp1); QccVectorFree(temp2); QccVectorFree(temp3); return(return_value);}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -