亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? motion_estimation.c

?? QccPack implementation in C
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* *  * QccPack: Quantization, compression, and coding libraries * Copyright (C) 1997-2005  James E. Fowler *  * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. *  * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Library General Public License for more details. *  * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, * MA 02139, USA. *  */#include "libQccPack.h"int QccVIDMotionEstimationExtractBlock(const QccIMGImageComponent *image,                                       double row,                                       double col,                                       QccMatrix block,                                       int block_size,                                       int subpixel_accuracy){  int block_row, block_col;  int step;  int row2, col2;  int extraction_row, extraction_col;  if (image == NULL)    return(0);  if (image->image == NULL)    return(0);  if (block == NULL)    return(0);  switch (subpixel_accuracy)    {    case QCCVID_ME_FULLPIXEL:      step = 1;      row2 = (int)row;      col2 = (int)col;      break;    case QCCVID_ME_HALFPIXEL:      step = 2;      row2 = (int)(row * 2);      col2 = (int)(col * 2);      break;    case QCCVID_ME_QUARTERPIXEL:      step = 4;      row2 = (int)(row * 4);      col2 = (int)(col * 4);      break;    case QCCVID_ME_EIGHTHPIXEL:      step = 8;      row2 = (int)(row * 8);      col2 = (int)(col * 8);      break;    default:      QccErrorAddMessage("(QccVIDMotionEstimationExtractBlock): Unrecognized subpixel accuracy (%d)",                         subpixel_accuracy);      return(1);    }  for (block_row = 0; block_row < block_size; block_row++)    for (block_col = 0; block_col < block_size; block_col++)      {        extraction_row = block_row * step + row2;        extraction_col = block_col * step + col2;        if (extraction_row < 0)          extraction_row = 0;        else          if (extraction_row >= image->num_rows)            extraction_row = image->num_rows - 1;        if (extraction_col < 0)          extraction_col = 0;        else          if (extraction_col >= image->num_cols)            extraction_col = image->num_cols - 1;        block[block_row][block_col] =          image->image[extraction_row][extraction_col];      }  return(0);}int QccVIDMotionEstimationInsertBlock(QccIMGImageComponent *image,                                      double row,                                      double col,                                      const QccMatrix block,                                      int block_size,                                      int subpixel_accuracy){  int block_row, block_col;  int step;  int row2, col2;  int insertion_row, insertion_col;  if (image == NULL)    return(0);  if (image->image == NULL)    return(0);  if (block == NULL)    return(0);  switch (subpixel_accuracy)    {    case QCCVID_ME_FULLPIXEL:      step = 1;      row2 = (int)row;      col2 = (int)col;      break;    case QCCVID_ME_HALFPIXEL:      step = 2;      row2 = (int)(row * 2);      col2 = (int)(col * 2);      break;    case QCCVID_ME_QUARTERPIXEL:      step = 4;      row2 = (int)(row * 4);      col2 = (int)(col * 4);      break;    case QCCVID_ME_EIGHTHPIXEL:      step = 8;      row2 = (int)(row * 8);      col2 = (int)(col * 8);      break;    default:      QccErrorAddMessage("(QccVIDMotionEstimationInsertBlock): Unrecognized subpixel accuracy (%d)",                         subpixel_accuracy);      return(1);    }  for (block_row = 0; block_row < block_size; block_row++)    for (block_col = 0; block_col < block_size; block_col++)      {        insertion_row = block_row * step + row2;        insertion_col = block_col * step + col2;        if ((insertion_row >= 0) &&            (insertion_row < image->num_rows) &&            (insertion_col >= 0) &&            (insertion_col < image->num_cols))          image->image[insertion_row][insertion_col] =            block[block_row][block_col];      }  return(0);}double QccVIDMotionEstimationMAE(QccMatrix current_block,                                 QccMatrix reference_block,                                 QccMatrix weights,                                 int block_size){  double mae = 0.0;  int block_row, block_col;  if (current_block == NULL)    return(0.0);  if (reference_block == NULL)    return(0.0);  if (weights == NULL)    for (block_row = 0; block_row < block_size; block_row++)      for (block_col = 0; block_col < block_size; block_col++)        mae +=          fabs(current_block[block_row][block_col] -               reference_block[block_row][block_col]);  else    for (block_row = 0; block_row < block_size; block_row++)      for (block_col = 0; block_col < block_size; block_col++)        mae +=          weights[block_row][block_col] *          fabs(current_block[block_row][block_col] -               reference_block[block_row][block_col]);  return(mae / block_size / block_size);}static int QccVIDMotionEstimationWindowSearch(QccMatrix current_block,                                              QccMatrix reference_block,                                              int block_size,                                              const QccIMGImageComponent                                              *reference_frame,                                              double search_row,                                              double search_col,                                              double window_size,                                              double search_step,                                              int subpixel_accuracy,                                              double *motion_vector_horizontal,                                              double *motion_vector_vertical){  double u, v;  double reference_frame_row, reference_frame_col;  double current_mae;  double min_mae = MAXDOUBLE;  for (v = -window_size; v <= window_size; v += search_step)    for (u = -window_size; u <= window_size; u += search_step)      {        reference_frame_row = search_row + v;        reference_frame_col = search_col + u;                if (QccVIDMotionEstimationExtractBlock(reference_frame,                                               reference_frame_row,                                               reference_frame_col,                                               reference_block,                                               block_size,                                               subpixel_accuracy))          {            QccErrorAddMessage("(QccVIDMotionEstimationWindowSearch): Error calling QccVIDMotionEstimationExtractBlock()");            return(1);          }                current_mae = QccVIDMotionEstimationMAE(current_block,                                                reference_block,                                                NULL,                                                block_size);                if (current_mae < min_mae)          {            min_mae = current_mae;            *motion_vector_horizontal = u;            *motion_vector_vertical = v;          }      }  return(0);}int QccVIDMotionEstimationFullSearch(const QccIMGImageComponent *current_frame,                                     const QccIMGImageComponent                                     *reference_frame,                                     QccIMGImageComponent                                     *motion_vectors_horizontal,                                     QccIMGImageComponent                                     *motion_vectors_vertical,                                     int block_size,                                     int window_size,                                     int subpixel_accuracy){  int return_value;  QccMatrix current_block = NULL;  QccMatrix reference_block = NULL;  int block_row, block_col;  double u, v;  double current_search_step;  double final_search_step;  int mv_row, mv_col;  double search_row, search_col;  double current_window_size;  if (current_frame == NULL)    return(0);  if (reference_frame == NULL)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品偷自拍| 天天做天天摸天天爽国产一区| 韩国精品一区二区| 精品国产乱码久久久久久牛牛| 九九**精品视频免费播放| 久久免费电影网| 成+人+亚洲+综合天堂| 亚洲人成在线播放网站岛国| 欧美色综合网站| 三级欧美韩日大片在线看| 欧美一区二区精品在线| 精品一区二区三区在线播放| 久久精品免费在线观看| a在线播放不卡| 亚洲国产一区二区三区青草影视 | 国产日产亚洲精品系列| 国产综合久久久久久鬼色| 精品少妇一区二区三区| 亚洲成人三级小说| 欧美综合天天夜夜久久| 亚洲无人区一区| 欧美婷婷六月丁香综合色| 首页综合国产亚洲丝袜| 日本丶国产丶欧美色综合| 亚洲成人精品影院| 日韩欧美一区在线| 国产精品小仙女| 国产制服丝袜一区| 国产日韩欧美激情| 色综合中文综合网| 欧美日韩一区在线观看| 美女爽到高潮91| 国产欧美一区二区三区在线老狼| 成人黄色软件下载| 亚洲在线中文字幕| 67194成人在线观看| 精品一区二区三区免费| 亚洲国产精品高清| 在线视频中文字幕一区二区| 丝袜美腿亚洲色图| 中文字幕欧美日本乱码一线二线| 欧美中文字幕一区| 国产综合久久久久影院| 国产精品视频在线看| 欧美伊人久久大香线蕉综合69 | 美腿丝袜一区二区三区| 精品国产区一区| 色哟哟精品一区| 欧美亚洲另类激情小说| 韩国精品一区二区| 亚洲精品你懂的| xfplay精品久久| 色婷婷一区二区| 久88久久88久久久| 亚洲国产激情av| 精品国产sm最大网站| 欧美一a一片一级一片| 国产一区中文字幕| 亚洲成人高清在线| 欧美韩日一区二区三区| 欧美喷潮久久久xxxxx| 波多野结衣亚洲一区| 久久精品国产秦先生| 亚洲一区影音先锋| 国产精品三级电影| 精品剧情在线观看| 欧美日韩大陆一区二区| 91色视频在线| 懂色一区二区三区免费观看| 日韩精品一二三四| 亚洲另类在线一区| 久久久久久久久久久久久女国产乱 | 欧美日韩免费在线视频| 豆国产96在线|亚洲| 精品中文字幕一区二区小辣椒| 午夜电影一区二区三区| 亚洲黄色av一区| 国产精品丝袜91| 久久久精品黄色| 精品区一区二区| 欧美精品久久99久久在免费线| 91麻豆swag| 成人免费高清视频| 国产成人精品一区二区三区四区| 日本不卡1234视频| 亚洲第一精品在线| 亚洲欧美精品午睡沙发| 91精品国产综合久久久蜜臀图片| 色妞www精品视频| 丁香另类激情小说| 蜜臀av一区二区三区| 一区二区三区高清在线| 亚洲欧美中日韩| 亚洲欧美一区二区三区国产精品| 中文一区在线播放| 国产精品色噜噜| 国产精品欧美综合在线| 久久精品视频一区| 337p日本欧洲亚洲大胆色噜噜| 日韩欧美一级在线播放| 日韩免费一区二区| 欧美一个色资源| 欧美精品一区二区三区久久久| 7777精品伊人久久久大香线蕉最新版 | 91无套直看片红桃| 色呦呦国产精品| 欧美日韩精品一区二区三区四区| 精品1区2区3区| 91色|porny| 欧美中文字幕亚洲一区二区va在线| 色婷婷激情综合| 北条麻妃一区二区三区| 国产成人免费视频网站高清观看视频 | 日韩免费福利电影在线观看| 精品国偷自产国产一区| 欧美国产禁国产网站cc| 一区二区三区免费| 日本美女一区二区三区| 国产在线精品一区在线观看麻豆| 精品一区二区免费视频| 成人午夜激情片| 欧美视频一区二区在线观看| 91麻豆精品国产自产在线观看一区| 精品国产一区二区三区不卡| 中文字幕乱码久久午夜不卡 | 欧美一区二区三区成人| 久久久久久久久久美女| 一区二区三区四区在线播放| 午夜视频一区二区三区| 国产一区二区三区免费看| 99久久精品国产导航| 8x福利精品第一导航| 国产亚洲精久久久久久| 亚洲综合图片区| 国产河南妇女毛片精品久久久| 色综合久久久久综合体桃花网| 精品久久五月天| 一区二区三区自拍| 免费成人深夜小野草| 99久久综合色| 日韩免费一区二区| 一区二区三区中文字幕电影| 韩国v欧美v日本v亚洲v| 一本大道av一区二区在线播放| 欧美一级日韩免费不卡| 亚洲精品视频在线| 国产激情偷乱视频一区二区三区| 色婷婷亚洲综合| 精品精品国产高清一毛片一天堂| 欧美国产禁国产网站cc| 日韩电影一二三区| 欧美在线高清视频| 国产午夜精品福利| 日韩高清不卡在线| 99久久婷婷国产综合精品| 欧美va亚洲va香蕉在线| 一区二区三区电影在线播| 粉嫩在线一区二区三区视频| 日韩一区二区视频| 一区二区三区中文字幕电影 | 欧美韩日一区二区三区| 日韩电影免费一区| 色综合欧美在线| 国产精品福利在线播放| 国产精品自拍av| 日韩美女一区二区三区| 天天影视涩香欲综合网| 色婷婷av一区二区三区大白胸| 国产欧美一区二区精品忘忧草 | 2欧美一区二区三区在线观看视频| 亚洲一级二级三级在线免费观看| 成人理论电影网| 久久精品综合网| 亚洲一级二级在线| 99精品1区2区| 久久综合九色综合欧美98 | 色94色欧美sute亚洲线路一久| 国产欧美综合在线观看第十页| 奇米一区二区三区av| 欧美女孩性生活视频| 一区二区三区美女| 精品一区二区在线播放| 久久久久久久国产精品影院| 激情偷乱视频一区二区三区| 欧美日韩午夜在线| 亚洲大片免费看| 欧美夫妻性生活| 日韩精品成人一区二区在线| 欧美电影在哪看比较好| 日韩成人免费在线| 日韩午夜激情视频| 男女男精品网站| 欧美丰满一区二区免费视频| 亚洲人123区| 欧美三级一区二区| 日韩激情视频网站| 日韩免费一区二区| 国产不卡在线一区| 国产亚洲欧美一区在线观看| 国产一区不卡在线|