28 #ifndef __FIREVISION_UTILS_COLOR_THRESHOLD_H_ 29 #define __FIREVISION_UTILS_COLOR_THRESHOLD_H_ 32 #include <sys/types.h> 49 inline bool is_similar(
int u,
int v,
int ref_u,
int ref_v,
int ref_length,
int chroma_thresh,
int sat_thresh) {
50 int length = sqrt(u * u + v * v);
53 int64_t difflen2, thres;
55 diffu = ref_u * length - u * ref_length;
56 diffv = ref_v * length - v * ref_length;
57 difflen2 = diffu * diffu + diffv * diffv;
58 thres = length * ref_length;
61 return (length > sat_thresh) && (difflen2 * chroma_thresh < thres);
64 inline bool is_similar_y(
int y,
int u,
int v,
65 int ref_y,
int ref_u,
int ref_v,
66 int ref_length,
int chroma_thresh,
int sat_thresh,
int y_thresh) {
68 return is_similar(u, v, ref_u, ref_v, ref_length, chroma_thresh, sat_thresh)
69 #if defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 6) || (__GNUC__ > 4)) 70 && std::abs(y - ref_y) < (255 - y_thresh);
72 && ((y-ref_y) < 0 ? -1*(y-ref_y) : (y-ref_y)) < (255 - y_thresh);