Program Ekstraksi Ciri Discrete Cosine Transform

return 0; } int FastInverseDct const cv:: Mat src , cv:: Mat dst { if src .data == 0 return ErrorCode :: ARG_ZERO_SIZED_IMAGE ; if src .rows = src .cols return ErrorCode :: ARG_IMAGE_NOT_SQUARE ; if src .type = CV_64F return ErrorCode :: ARG_IMAGE_HAS_INVALID_TYPE ; TO_DO: make sure order is the power of 2 cv:: Mat tmp1; src .convertTotmp1, CV_64F ; cv:: Mat kernel = GenerateDctMatrix src .rows; cv:: Mat tmp2 = kernel.t tmp1 kernel; tmp2.convertTo dst , CV_8U ; return 0; } Zig Zag Scanning int zigzag const cv:: Mat src , cv:: Mat dst { if src .data == 0 return ErrorCode :: ARG_ZERO_SIZED_IMAGE ; if src .rows = src .cols return ErrorCode :: ARG_IMAGE_NOT_SQUARE ; unsigned int size = src .rows; unsigned int totalData = size size; dst = cv:: Mat 1, totalData, src .type; unsigned int i, j, n; for i = n = 0; i size 2; i++ { for j = i size ? 0 : i-size+1; j = i j size; j++ { int idx = i1? jsize-1+i : i-jsize+j; s[idx] = n++; int row = idx size; int col = idx size; dst .at double 0, n++ = src .at double row, col; s[n++] = static_castunsigned intm.atunsigned charrow, col; } } return 0; }

4.2.5 Fungsi Similaritas Kosinus

double CheckSimilarity const cv:: Mat m1 , const cv:: Mat m2 , unsigned int persentase { cv:: Mat z1, z2; unsigned int size; if persentase = 0 || persentase = 100 { pixelscanning m1 , z1; pixelscanning m2 , z2; size = z1.cols; unsigned int size = z1.cols; } else { cv:: Mat t1, t2; pixelscanning m1 , t1; pixelscanning m2 , t2; size = t1.cols persentase 100; cv:: Rect windowt1.cols - size - 1 ,0, size, 1; z1 = t1window; z2 = t2window; } double magnitude1 = 0.0; double magnitude2 = 0.0; double dotProduct = 0.0; for unsigned int i = 0; i size; i++ { double v1 = z1.at double 0, i; double v2 = z2.at double 0, i; magnitude1 += v1v1; magnitude2 += v2v2; dotProduct += v1v2; } cv:: Mat dot = z1 z2.t; double numerator = dot.at double 0, 0; double denumerator = sqrtmagnitude1 sqrtmagnitude2; std::cout dot, num, denum numerator \t dotProduct \t magnitude1 \t magnitude2 \t denumerator \n; return numerator denumerator; } };

4.2.6 Tanpa Ekstraksi Ciri

TEMPLATE MATCHING std:: string ok = [N] ; cv:: Mat chkTemplate; if 1 cv::matchTemplatefTemplate, test1, chkTemplate, CV_TM_CCOEFF_NORMED ; double minval, maxval, threshold = 0.6; cv:: Point minloc, maxloc; cv::minMaxLocchkTemplate, minval, maxval, minloc, maxloc; if maxval = threshold { ok = [Y] ; } else int match_method = 0; cv::matchTemplatefTemplate, test1, chkTemplate, match_method; cv::normalize chkTemplate, chkTemplate, 0, 1, cv::NORM_MINMAX, -1, cv::Mat ;