diff --git a/lib/libstereo/src/costs/dual.hpp b/lib/libstereo/src/costs/dual.hpp
index 6ee5d15d29918ae1b4f2244d5768f5a1ac6e5df6..07bc49de96ec46059df4924e58b3367d4f1c6547 100644
--- a/lib/libstereo/src/costs/dual.hpp
+++ b/lib/libstereo/src/costs/dual.hpp
@@ -17,11 +17,13 @@ namespace impl {
 			cost_a(w,h,dmin,dmax), cost_b(w,h,dmin,dmax) {}
 
 		__host__ __device__ inline unsigned short operator()(const int y, const int x, const int d) const {
-			return (cost_a(y, x, d) + cost_b(y, x, d));
+			return cost_a(y,x,d)*wa + cost_b(y,x,d)*wb;
 		}
 
 		A cost_a;
 		B cost_b;
+		float wa = 1.0;
+		float wb = 1.0;
 	};
 }
 
@@ -41,6 +43,11 @@ public:
 		this->data().cost_b = cost_b.data();
 	}
 
+	void setWeights(float a, float b) {
+		this->data().wa = a;
+		this->data().wb = b;
+	}
+
 	static constexpr short COST_MAX = A::COST_MAX + B::COST_MAX;
 
 protected: