Original Image (113.0KB) |
Depth Map |
Foveated Compression (82.0KB) |
Original Image (113.0KB) |
Depth Foveated Compression α=500 (59.7KB) |
Alpha = 100 (113.0KB) |
Alpha = 300 (90.3KB) |
Alpha = 500 (64.7KB) |
Alpha = 700 (48.6KB) |
Alpha = 900 (37.6KB) |
Alpha = 100 (82.0KB) with Foveated |
Alpha = 300 (77.2KB) with Foveated |
Alpha = 500 (59.7KB) with Foveated |
Alpha = 700 (45.1KB) with Foveated |
Alpha = 900 (34.9KB) with Foveated |
[reference : https://www.youtube.com/watch?v=9xFTXSDw_9U]
-
Cloning this repository in 'C:/opencv_sources/' (like 'C:/opencv_sources/opencv-4.x' folder format)
-
Make 'build' folder in 'opencv_sources' folder & Make 'C:/opencv-4.x/build/' folder
-
By using CMake Program in Window, [Configure & Generate]
a. Set source code location : 'C:/opencv_sources/opencv-4.x'
b. Set build location : 'C:/opencv_sources/build'
c. configure
d. Uncheck 'BUILD_PERF_TESTS', 'BUILD_TEST', 'BUILD_JAVA', 'BUILD_PACKAGE', 'WITH_1394', 'WITH_GSTREAMER', 'WITH_LAPACK', 'WITH_VTK'
e. Check 'OPENCV_ENABLE_NONFREE'
f. Set 'OPENCV_EXTRA_MODULES_PATH' value : 'C:/opencv-sources/opencv_contrib-4.x/modules'
g. Set 'CMAKE_INSTALL_PREFIX' value : 'C:/opencv_4.x/build'
h. configure
i. Check BUILD_opencv_world & Just Search python
j. Configure & Generate -
Open project & Set Debug -> Release & 'CMakeTargets/INSTALL' 우클릭 후 build 선택
If this instruction is confused, you can follow reference video [https://www.youtube.com/watch?v=9xFTXSDw_9U]
After This process, We can apply custom-built opencv to python
Now, We can build opencv in this process
-
Run 'Developer command prompt' in Window
-
Go to the folder path 'C:/opencv_sources'
-
Run below command in prompt.
-DOPENCV_EXTRA_MODULES_PATH="C:/opencv_sources/opencv_contrib-4.x/modules" -DCMAKE_INSTALL_PREFIX="C:/opencv-4.x/build" ^
-DINSTALL_TESTS=ON -DINSTALL_C_EXAMPLES=ON -DBUILD_EXAMPLES=OFF -DBUILD_opencv_world=ON ^
-DWITH_CUDA=ON -DCUDA_TOOLKIT_ROOT_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1" ^
-DCUDA_FAST_MATH=ON -DWITH_CUBLAS=ON -DCUDA_ARCH_PTX=7.5 -DWITH_NVCUVID=ON ^
-DWITH_OPENGL=OFF -DWITH_MFX=OFF -DBUILD_PACKAGE=OFF -DWITH_MATLAB=OFF -DBUILD_PREF_TESTS=OFF -DBUILD_TESTS=OFF ^
-DBUILD_opencv_python3=ON -DBUILD_opencv_python2=OFF -DOPENCV_SKIP_PYTHON_LOADER=ON ^
-DBUILD_JAVA=OFF -DWITH_LAPACK=OFF -DWITH_VTK=OFF -DWITH_1394=OFF -DWITH_GSTREAMER=OFF ^
-DWITH_TBB=OFF -DWITH_EIGN=OFF -DMKL_WITH_TBB=OFF -DBUILD_WITH_STATIC_CRT=OFF ^
-DOPENCV_ENABLE_NONFREE=ON -DBUILD_opencv_rgbd=OFF -
Open 'C:/opencv_sources/build/OpenCV.sln' file & Debug -> Release & 'CMakeTargets/INSTALL' 우클릭 후 build 선택
-
Copy three dll file in 'C:/opencv-4.x/build/bin/' & paste to 'python312/Lib/site-packages'
(%%% python site-packages folder location can vary by user %%%)
(%%% In my case folder path is 'C:\Users\username\AppData\Local\Programs\Python\Python312\Lib\site-packages' %%%)
-> After this Process, We can use opencv with custom-built version
├─ opencv-4.x
| ├─ ...
| ├─ 3rdparty
| | ├─ ...
| | └─ libjpeg-turbo
| | ├─ ...
| | ├─ jcdctmgr.c (func. forward_DCT - DCT 변환하여 넘겨주는 함수)
| | └─ (이 함수에서 quantization level을 결정해 Low Pass Filter를 적용해주는 방식으로 Foveated Compression 적용)
| └─ modules
| ├─ ...
| └─ imgcodecs
| ├─ ...
| └─ src
| ├─ ...
| ├─ loadsave.cpp (func. imencode - cv2.imencode에 호출되는 함수 (Foveation 정보를 이용한 image compression))
| | (func. imencode_D - cv2.imencode_D에 호출되는 함수 (Depth 정보를 이용한 image compression))
| | (source code 상 jcdctmgr.c 코드의 alpha 변수에 의해 compression level이 결정됨.)
| └─ grfmt_jpeg.cpp (func. JpegEncoder::write - 이미지를 jpeg으로 encode하는 함수)
|
└─ opencv_contrib-4.x
import cv2
cv2.imencode('.jpg', image) # 일반 jpeg encoding
cv2.imencode('.jpg', image, [cv2.IMWRITE_JPEG_FOVEATION_DISTANCE, 62]) # foveated compression encoding
cv2.imencode_D('.jpg', image, depth_map) # Depth Foveated Compression encoding













