{"id":15606733,"url":"https://github.com/raymondcm/uol-finalyearproject","last_synced_at":"2026-03-13T20:33:36.895Z","repository":{"id":73410096,"uuid":"76043909","full_name":"RaymondCM/UOL-FinalYearProject","owner":"RaymondCM","description":"GPU implementation of a Full Search Block Matching Motion Estimation Algorithm","archived":false,"fork":false,"pushed_at":"2018-01-09T14:29:35.000Z","size":102231,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-28T10:14:11.406Z","etag":null,"topics":["c-plus-plus","cardiac","cross-platform","opencl","opencv","parallel","thesis"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RaymondCM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-12-09T14:49:20.000Z","updated_at":"2023-05-06T13:13:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"9cb92956-c46b-411f-b4e2-c675f169a1de","html_url":"https://github.com/RaymondCM/UOL-FinalYearProject","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RaymondCM/UOL-FinalYearProject","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaymondCM%2FUOL-FinalYearProject","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaymondCM%2FUOL-FinalYearProject/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaymondCM%2FUOL-FinalYearProject/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaymondCM%2FUOL-FinalYearProject/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RaymondCM","download_url":"https://codeload.github.com/RaymondCM/UOL-FinalYearProject/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RaymondCM%2FUOL-FinalYearProject/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30474885,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T17:15:31.527Z","status":"ssl_error","status_checked_at":"2026-03-13T17:15:22.394Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","cardiac","cross-platform","opencl","opencv","parallel","thesis"],"created_at":"2024-10-03T04:41:50.395Z","updated_at":"2026-03-13T20:33:36.886Z","avatar_url":"https://github.com/RaymondCM.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ParallelCardiacImaging\n\nPresented is a GPU implementation of a Full Search Block Matching Motion\nEstimation algorithm using sum of absolute difference error criterion and a novel criterion to find\noptimal block displacement, and to estimate the heart rate of apical four chamber\nview ultrasound images. With the rapid growth of GPU processing power in recent\nyears an effective deployment medium for parallelisation of traditionally serial\nalgorithms exists. This project will attempt to evaluate the feasibility of using heterogeneous\nsystems for motion estimation by comparing algorithm execution times\nand accuracy on the CPU and GPU. This thesis concludes by showing the GPU implementation\nis sufficiently fast enough for real-time processing and can shorten\ncomputation time of accurate heart rate estimates by a factor of 450 times ([Link](https://github.com/RaymondKirk/UOL-FinalYearProject/blob/master/uol-finalyearthesis.pdf)).\n\n## Execution\n\nYou can run the software in two different modes, ROI selection and fullscreen. ROI selection mode will prompt the user to select a region for analysis and the fullscreen mode will perform analysis on the whole image. This property can be changed by setting the ```set_roi``` flag to true in ```main.cpp```. Below are two examples of the modes, the fullscreen mode also demonstrates motion vector plotting and HSV plotting.\n\n#### Fullscreen\n![Fullscreen](https://user-images.githubusercontent.com/16948324/32838923-836c1178-ca0a-11e7-9199-245079b25dec.gif)\n\n#### ROI Selection\n![ROI Selection](https://user-images.githubusercontent.com/16948324/32838050-a5a676f0-ca07-11e7-8de5-072c9d63eec5.gif)\n\n## Dependencies\t\t\n### DCMTK \t\t\nInstructions below for Ubuntu 14.04, the stable release has [compiler issues](http://forum.dcmtk.org/viewtopic.php?f=1\u0026t=4235) so a snapshot from GitHub is used. \n\n```\nwget http://git.dcmtk.org/?p=dcmtk.git;a=snapshot;h=681e3182ccfe3873b95824b07a4565c8b54a8a18;sf=tgz\ntar xzvf index.html\\?p=dcmtk.git\\;a=snapshot\\;h=681e3182ccfe3873b95824b07a4565c8b54a8a18\\;sf=tgz\ncmake-gui \u0026 #Configure and Generate make files to build_folder\ncd build_folder\ncmake --build .\nmake #(Optional?)\nsudo make install\n```\n\n### OpenCV\n#### Windows\nFollow instructions at [RaymondKirk/OpenCV-InstallScript](https://github.com/RaymondKirk/OpenCV-InstallScript) or download the [OpenCV](https://github.com/opencv/opencv) source and build with cmake (See instructions below). Build the binaries for debug and release to \"C:/OpenCV/build\" with OPENCL. Build INSTALL to produce system headers and dynamic linked libraries. Add a system environment variable to the installed OpenCV_DIR (C:\\OpenCV\\build\\install\\x86\\vc15 for Visual Studio 15 2017). Finally add a variable to system PATH (%OpenCV_DIR%/bin). See OpenCV [documentation](http://docs.opencv.org/2.4/doc/tutorials/introduction/windows_visual_studio_Opencv/windows_visual_studio_Opencv.html) for guidelines and resources.\n\nTo build use CMake-GUI with these options WITH_CUDA=0, WITH_OPENCL=1 and BUILD_opencv_java=0. Optionally add both python interpreters.\n\n```\ncmake -H./ -BC:/OpenCV/build/ -G \"Visual Studio 15 2017\" -DWITH_CUDA=0 -DWITH_OPENCL=1 -DBUILD_opencv_java=0 #USE CMake-GUI\n```\n\nTo set environment variables to installed location.\n\n```\nsetx -m OpenCV_DIR C:\\OpenCV\\build\\install\\x86\\vc15\nsetx -m PATH=%PATH%;%OpenCV_DIR%\\bin\n```\n\nWhen compiling add ```-DCMAKE_PREFIX_PATH=C:\\OpenCV\\build\\install``` for ProjectY3 target when OpenCV cannot be found.\n\n#### Linux (Ubuntu)\nFor OSX/Linux download the [C++ Source](http://opencv.org/downloads.html) and run the following commands to install under `usr/local`, replace `opencv_downloaded_source` with the source location. For other platforms instructions can be found on imebra [docs](http://docs.opencv.org/2.4/doc/tutorials/introduction/table_of_content_introduction/table_of_content_introduction.html)\t\n \n```\ncd opencv_downloaded_source\nmkdir opencv_bin\ncd opencv_bin\ncmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..\nmake\nsudo make install\n```\n\nOpenCV dependencies (ubuntu) listed below.\n\n``` \nsudo apt-get install build-essential\nsudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev\nsudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev\n```\n### OpenCL\n#### OSX\n[C++ bindings](https://www.khronos.org/registry/OpenCL/api/2.1/cl.hpp) not included by default with OpenCL, download and include them.\n\n## Compile\nOn ubuntu from project root run ```cmake -H./ -B./build``` or use [CMake for VSCode](https://marketplace.visualstudio.com/items?itemName=vector-of-bool.cmake-tools).\n\nTo execute the program type the following code from the root of the file structure.\n\n```\ncd build/\nmake clean #OPTIONAL\nmake ProjectY3\n./ProjectY3\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraymondcm%2Fuol-finalyearproject","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraymondcm%2Fuol-finalyearproject","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraymondcm%2Fuol-finalyearproject/lists"}