28 #ifndef _FIREVISION_UTILS_COLOR_THRESHOLD_H_
29 #define _FIREVISION_UTILS_COLOR_THRESHOLD_H_
31 #include <sys/types.h>
35 namespace firevision {
51 is_similar(
int u,
int v,
int ref_u,
int ref_v,
int ref_length,
int chroma_thresh,
int sat_thresh)
53 int length = sqrt(u * u + v * v);
56 int64_t difflen2, thres;
58 diffu = ref_u * length - u * ref_length;
59 diffv = ref_v * length - v * ref_length;
60 difflen2 = diffu * diffu + diffv * diffv;
61 thres = (int64_t)length * ref_length;
64 return (length > sat_thresh) && (difflen2 * chroma_thresh < thres);
79 return is_similar(u, v, ref_u, ref_v, ref_length, chroma_thresh, sat_thresh)
80 #if defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 6) || (__GNUC__ > 4))
81 && std::abs(y - ref_y) < (255 - y_thresh);
83 && ((y - ref_y) < 0 ? -1 * (y - ref_y) : (y - ref_y)) < (255 - y_thresh);