There are two principle files: main.py to run xdog implementation with image and video_jit to run in "real time" with webcam
a) Original | b) Grayscale | c) Xdog GaryGrossi |
d) Xdog Test Nat | e) Xdog Test | f) Xdog Hatch |
Parameters
- a) Original image RGB
- b) Load as grayscale (OpenCV)
- c) XdogGary: sigma=0.5, k=200, gamma=0.98, epsilon=0.1, phi=10
- d) Xdog this project: sigma=1, k=1.6, gamma=0.5, epsilon=-0.5, phi=10
- e) Xdog this project: sigma=0.4, k=1.6, gamma=0.5, epsilon=-0.5, phi=10
- f) Xdog this project: hatchBlend function
-
Python 2.7
-
OpenCV (Tested on 2.4.13)
sudo apt-get install python-opencv
-
Numpy 1.11.2
pip install numpy
If you want to run video_jit.py:
-
conda install numba
There is a requirement.txt to install numpy and numba:
pip install -r requirements.txt
Test time in Difference of Gaussians (DoG) implementation
start = time.time()
img1 = cv2.GaussianBlur(img,(0,0),0.5)
elapsed = time.time() - start
elapsed = 0.000515937805176
start = time.time()
sigma = 0.5
gauss1 = gaussian_filter(img, 0.5)
elapsed = time.time() - start
print elapsed
elapsed = 0.00245594978333
So opencv cv2.GaussianBlur is faster. The difference from gaussian blur results from OpenCV and SciPy is similar.
The difference from each mat can be seen in image below: