Skip to content

Commit cd6f7d1

Browse files
committed
Rewrite deriche filter- add test - add python wrapper
1 parent bd46b03 commit cd6f7d1

File tree

4 files changed

+214
-101
lines changed

4 files changed

+214
-101
lines changed

modules/ximgproc/include/opencv2/ximgproc/deriche_filter.hpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,25 +51,25 @@ namespace ximgproc {
5151
*
5252
* For more details about this implementation, please see http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.476.5736&rep=rep1&type=pdf
5353
*
54-
* @param _op Source 8-bit or 16bit image, 1-channel or 3-channel image.
55-
* @param _dst result CV_32FC image with same number of channel than _op.
56-
* @param alphaDerive double see paper
57-
* @param alphaMean double see paper
54+
* @param op Source 8-bit or 16bit image, 1-channel or 3-channel image.
55+
* @param dst result CV_32FC image with same number of channel than _op.
56+
* @param alpha double see paper
57+
* @param omega double see paper
5858
*
5959
*/
60-
CV_EXPORTS void GradientDericheY(InputArray _op, OutputArray _dst, double alphaDerive,double alphaMean);
60+
CV_EXPORTS_W void GradientDericheY(InputArray op, OutputArray dst, double alpha,double omega);
6161
/**
6262
* @brief Applies X Deriche filter to an image.
6363
*
6464
* For more details about this implementation, please see http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.476.5736&rep=rep1&type=pdf
6565
*
66-
* @param _op Source 8-bit or 16bit image, 1-channel or 3-channel image.
67-
* @param _dst result CV_32FC image with same number of channel than _op.
68-
* @param alphaDerive double see paper
69-
* @param alphaMean double see paper
66+
* @param op Source 8-bit or 16bit image, 1-channel or 3-channel image.
67+
* @param dst result CV_32FC image with same number of channel than _op.
68+
* @param alpha double see paper
69+
* @param omega double see paper
7070
*
7171
*/
72-
CV_EXPORTS void GradientDericheX(InputArray _op, OutputArray _dst, double alphaDerive,double alphaMean);
72+
CV_EXPORTS_W void GradientDericheX(InputArray op, OutputArray dst, double alpha,double omega);
7373

7474
}
7575
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import sys
2+
import numpy as np
3+
import cv2 as cv
4+
5+
def AddSlider(sliderName,windowName,minSlider,maxSlider,valDefault, update=[]):
6+
if update is None:
7+
cv.createTrackbar(sliderName, windowName, valDefault,maxSlider-minSlider+1)
8+
else:
9+
cv.createTrackbar(sliderName, windowName, valDefault,maxSlider-minSlider+1, update)
10+
cv.setTrackbarMin(sliderName, windowName, minSlider)
11+
cv.setTrackbarMax(sliderName, windowName, maxSlider)
12+
cv.setTrackbarPos(sliderName, windowName, valDefault)
13+
class Filtrage:
14+
def __init__(self):
15+
self.s =0
16+
self.alpha = 100
17+
self.omega = 100
18+
self.updateFiltre=True
19+
self.img=[]
20+
self.dximg=[]
21+
self.dyimg=[]
22+
self.module=[]
23+
def DericheFilter(self):
24+
self.dximg = cv.ximgproc.GradientDericheX( self.img, self.alpha/100., self.omega/1000. )
25+
self.dyimg = cv.ximgproc.GradientDericheY( self.img, self.alpha/100., self.omega/1000. )
26+
dx2=self.dximg*self.dximg
27+
dy2=self.dyimg*self.dyimg
28+
self.module = np.sqrt(dx2+dy2)
29+
cv.normalize(src=self.module,dst=self.module,norm_type=cv.NORM_MINMAX)
30+
def SlideBarDeriche(self):
31+
cv.destroyWindow(self.filename)
32+
cv.namedWindow(self.filename)
33+
AddSlider("alpha",self.filename,1,400,self.alpha,self.UpdateAlpha)
34+
AddSlider("omega",self.filename,1,1000,self.omega,self.UpdateOmega)
35+
36+
def UpdateOmega(self,x ):
37+
self.updateFiltre=True
38+
self.omega=x
39+
def UpdateAlpha(self,x ):
40+
self.updateFiltre=True
41+
self.alpha=x
42+
def run(self,argv):
43+
# Load the source image
44+
self.filename = argv[0] if len(argv) > 0 else "../doc/pics/corridor_fld.jpg"
45+
self.img=cv.imread(self.filename,cv.IMREAD_GRAYSCALE)
46+
if self.img is None:
47+
print ('cannot read file')
48+
return
49+
self.SlideBarDeriche()
50+
while True:
51+
cv.imshow(self.filename,self.img)
52+
if self.updateFiltre:
53+
self.DericheFilter()
54+
cv.imshow("module",self.module)
55+
self.updateFiltre =False
56+
code = cv.waitKey(10)
57+
if code==27:
58+
break
59+
if __name__ == '__main__':
60+
Filtrage().run(sys.argv[1:])

0 commit comments

Comments
 (0)