1. Trang chủ
  2. » Luận Văn - Báo Cáo

Hệ thống điều khiển giao thông thông minh đô thị (10)

6 165 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

- 68 - PHỤ LỤC Phụ lục Source code hàm rút trích đặc trưng double N_GetMColor(N_Color * pdwBits, int w, int h, int x, int y, int iRadius, double & dbRed, double & dbGreen, double & dbBlue, double & dbDRed, double & dbDGreen, double & dbDBlue, double & dbH, double & dbL, double & dbS, double & dbDH, double & dbDL, double & dbDS) { int iCur; int x1, y1; double dbTotalRed = 0; double dbTotalGreen = 0; double dbTotalBlue = 0; int iPixelNum = 0; double dbTotalH = 0, dbTotalL = 0, dbTotalS = 0; double dbTempH = 0, dbTempL = 0, dbTempS = 0; for (y1 = y - iRadius; y1 < y + iRadius; y1 + + ) for (x1 = x - iRadius; x1 < x + iRadius; x1 + + ) { if (x1 > - && x1 < w && y1 > - && y1 < h) { iPixelNum ++ ; iCur = w*y1 + x1 % w; dbTotalRed + = pdwBits[iCur].Red; dbTotalGreen + = pdwBits[iCur].Green; dbTotalBlue + = pdwBits[iCur].Blue; } } dbRed = dbTotalRed/iPixelNum; dbGreen = dbTotalGreen/iPixelNum; dbBlue = dbTotalBlue/iPixelNum; return 1; } Trong đó, biến: • pdwBits: trỏ đến vùng nhớ khung hình • w, h: kích thước khung hình - 69 - • x, y, iRadius: xác định vị trí kích thước thành phẩn ảnh với (x, y) tâm Phụ lục Hàm xác định cường độ sáng void _RgbToHls(double R, double G, double B, double & H, double & L, double & S) { double max, min, diff, r_dist, g_dist, b_dist; // Get the maximum and minimum RGB components max = R; if (max < G) max = G; if (max < B) max = B; = R; if (min > G) = G; if (min > B) = B; diff = max - min; L = (max + min) / 2.0; if (fabs(diff) < 0.00001) { S = 0; H = 0; } else { if (L < = 0.5) S = diff /(max + min); else S = diff /(2 - max - min); r_dist = (max - R) / diff; g_dist = (max - G) / diff; b_dist = (max - B) / diff; if (R = = max) H = b_dist - g_dist; else if (G = = max) - 70 - H = + r_dist - b_dist; else H = + g_dist - r_dist; H = H * 60; if (H < 0) H = H + 360; } } Phụ lục Source code hàm đo khoảng cách Fc boolean N_IsDiff(double dbGDS, double dbGDD, double dbHS, double dbHD, double dbLS, double dbLD, double dbSS, double dbSD, double dbDeltaGD, double dbDeltaDiff) { if (fabs(dbGDS - dbGDD) > dbDeltaGD) { double dbHDiff = fabs(dbHS - dbHD); if (dbHDiff > 180) dbHDiff = 360 - dbHDiff; if (dbHDiff > 120) dbHDiff = 120; dbHDiff = dbHDiff * L_Ef((dbLS + dbLD)/2.0) * S_Ef((dbSS + dbSD)/2.0); if (dbHDiff > dbDeltaDiff) // src cell is difference with dst cell { return true; } } return false; } Phụ lục Source code thuật toán phát đối tượng chuyển động long N_CompareImages(BYTE* lpImagePrv, BYTE* lpImageCur, BYTE* lpImageBgr, BYTE* lpImageObj, BYTE* lpImageResult, int iRadius, BYTE bInterval, double dbDeltaM, double dbDeltaD, - 71 - double dbDeltaH, double dbDeltaL, double dbDeltaS, double dbDeltaDH, double dbDeltaDL, double dbDeltaDS, double dbThresold1, double dbThresold2) { BYTE * pBitsR = lpImageResult; BYTE * pBitsC = lpImageCur; double dbRedC, dbGreenC, dbBlueC; double dbDRedC, dbDGreenC, dbDBlueC; double dbHC, dbLC, dbSC; double dbDHC, dbDLC, dbDSC; double dbGDC; BYTE * pBitsB = lpImageBgr; double dbRedB, dbGreenB, dbBlueB; double dbDRedB, dbDGreenB, dbDBlueB; double dbHB, dbLB, dbSB; double dbDHB, dbDLB, dbDSB; double dbGDB; BYTE * pBitsP = lpImagePrv; double dbRedP, dbGreenP, dbBlueP; double dbDRedP, dbDGreenP, dbDBlueP; double dbHP, dbLP, dbSP; double dbDHP, dbDLP, dbDSP; double dbGDP; int size = iRadius * + 1; int wcell = (CAMERA_WIDTH + size - 1) / size; int hcell = (CAMERA_HEIGHT + size - 1) / size; int x, y; long Res = 0; for (int i = 0; i < hcell; i + + ) { y = i * size + iRadius; x = iRadius; for (int j = 0; j < wcell; j + + , x + = size) { N_GetMColor((N_Color*)pBitsC, CAMERA_WIDTH, CAMERA_HEIGHT, x, y, iRadius, dbRedC, dbGreenC, dbBlueC, dbDRedC, dbDGreenC, dbDBlueC, dbHC, dbLC, dbSC, - 72 - dbDHC, dbDLC, dbDSC); _RgbToHls(dbRedC/255.0, dbGreenC/255.0, dbBlueC/255.0, dbHC, dbLC, dbSC); dbGDC = dbLC; N_GetMColor((N_Color*)pBitsB, CAMERA_WIDTH, CAMERA_HEIGHT, x, y, iRadius, dbRedB, dbGreenB, dbBlueB, dbDRedB, dbDGreenB, dbDBlueB, dbHB, dbLB, dbSB, dbDHB, dbDLB, dbDSB); _RgbToHls(dbRedB/255.0, dbGreenB/255.0, dbBlueB/255.0, dbHB, dbLB, dbSB); dbGDB = dbLB; N_GetMColor((N_Color*)pBitsP, CAMERA_WIDTH, CAMERA_HEIGHT, x, y, iRadius, dbRedP, dbGreenP, dbBlueP, dbDRedP, dbDGreenP, dbDBlueP, dbHP, dbLP, dbSP, dbDHP, dbDLP, dbDSP); _RgbToHls(dbRedP/255.0, dbGreenP/255.0, dbBlueP/255.0, dbHP, dbLP, dbSP); dbGDP = dbLP;// + L_Ef(dbLP); // compare current cell with the cell of previous image if (N_IsDiff(dbGDC, dbGDP, dbHC, dbHP, dbLC, dbLP, dbSC, dbSP, dbThresold1, dbThresold2)) { //diff area N_SetMColor((N_Color*)pBitsP, CAMERA_WIDTH, CAMERA_HEIGHT, x, y, iRadius, (unsigned char)0, (unsigned char)0, (unsigned char)0); lpTmpBgrImages[i*wcell + j] = bInterval; } else if (lpTmpBgrImages[i*wcell + j] > 0) { if (lpTmpBgrImages[i*wcell + j] = = 1) { N_CopyAreaImage(pBitsC, pBitsB, CAMERA_WIDTH, CAMERA_HEIGHT, x, y, iRadius); - 73 - } lpTmpBgrImages[i*wcell + j] - - ; } // compare current cell with the cell of background image if (N_IsDiff(dbGDC, dbGDB, dbHC, dbHB, dbLC, dbLB, dbSC, dbSB, dbThresold1, dbThresold2)) { //moving area if (lpTmpBgrImages[i*wcell + j] > 1) { N_SetMColor((N_Color*)pBitsR, CAMERA_WIDTH, CAMERA_HEIGHT, x, y, iRadius, (unsigned char)0, (unsigned char)0, (unsigned char)0); Res + + ; } } } } return Res; }

Ngày đăng: 01/06/2018, 13:19

Xem thêm:

TỪ KHÓA LIÊN QUAN

Mục lục

    DANH MỤC CÁC BẢNG

    DANH MỤC CÁC HÌNH VẼ

    DANH MỤC CÁC TỪ VIẾT TẮT

    Chương 1 - TỔNG QUAN

    1.2 - Vấn đề cần giải quyết

    1.4 - Các yêu cầu đặt ra đối với hệ thống

    1.5 - Cấu trúc của luận văn

    Chương 2 - BÀI TOÁN NHẬN DẠNG ĐỐI TƯỢNG CHUYỂN ĐỘNG TRONG VIDEO

    2.1 - Một số khái niệm

    2.1.1 - Cấu trúc Video

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN