From d3ac1bc314136d0654fad24a9ee5b01c29e9f5af Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Viel Date: Fri, 20 Dec 2013 01:00:55 +0100 Subject: [PATCH 001/117] When a cluster is empty for KMeans, it's better to give it the point from another cluster j that is the furthest one from center j. --- modules/flann/include/opencv2/flann/kmeans_index.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/flann/include/opencv2/flann/kmeans_index.h b/modules/flann/include/opencv2/flann/kmeans_index.h index 3fea956a74..489ed80565 100644 --- a/modules/flann/include/opencv2/flann/kmeans_index.h +++ b/modules/flann/include/opencv2/flann/kmeans_index.h @@ -759,10 +759,13 @@ private: for (int k=0; k Date: Tue, 24 Dec 2013 15:14:00 +1000 Subject: [PATCH 002/117] converted necessary files for python3 compatibility using 2to3 --- modules/java/generator/rst_parser.py | 96 +++++++++++++------------- modules/matlab/generator/filters.py | 3 +- modules/matlab/generator/parse_tree.py | 21 +++--- 3 files changed, 60 insertions(+), 60 deletions(-) diff --git a/modules/java/generator/rst_parser.py b/modules/java/generator/rst_parser.py index 63f56dbaaf..d2c3d4019a 100755 --- a/modules/java/generator/rst_parser.py +++ b/modules/java/generator/rst_parser.py @@ -1,6 +1,8 @@ #!/usr/bin/env python +from __future__ import print_function import os, sys, re, string, fnmatch + allmodules = ["core", "flann", "imgproc", "ml", "highgui", "video", "features2d", "calib3d", "objdetect", "legacy", "contrib", "cuda", "androidcamera", "java", "python", "stitching", "ts", "photo", "nonfree", "videostab", "ocl", "softcascade", "superres"] verbose = False show_warnings = True @@ -141,10 +143,10 @@ class RstParser(object): def parse_section_safe(self, module_name, section_name, file_name, lineno, lines): try: self.parse_section(module_name, section_name, file_name, lineno, lines) - except AssertionError, args: + except AssertionError as args: if show_errors: - print >> sys.stderr, "RST parser error E%03d: assertion in \"%s\" at %s:%s" % (ERROR_001_SECTIONFAILURE, section_name, file_name, lineno) - print >> sys.stderr, " Details: %s" % args + print("RST parser error E%03d: assertion in \"%s\" at %s:%s" % (ERROR_001_SECTIONFAILURE, section_name, file_name, lineno), file=sys.stderr) + print(" Details: %s" % args, file=sys.stderr) def parse_section(self, module_name, section_name, file_name, lineno, lines): self.sections_total += 1 @@ -152,7 +154,7 @@ class RstParser(object): #if section_name.find(" ") >= 0 and section_name.find("::operator") < 0: if (section_name.find(" ") >= 0 and not bool(re.match(r"(\w+::)*operator\s*(\w+|>>|<<|\(\)|->|\+\+|--|=|==|\+=|-=)", section_name)) ) or section_name.endswith(":"): if show_errors: - print >> sys.stderr, "RST parser warning W%03d: SKIPPED: \"%s\" File: %s:%s" % (WARNING_002_HDRWHITESPACE, section_name, file_name, lineno) + print("RST parser warning W%03d: SKIPPED: \"%s\" File: %s:%s" % (WARNING_002_HDRWHITESPACE, section_name, file_name, lineno), file=sys.stderr) self.sections_skipped += 1 return @@ -311,7 +313,7 @@ class RstParser(object): if fdecl.balance != 0: if show_critical_errors: - print >> sys.stderr, "RST parser error E%03d: invalid parentheses balance in \"%s\" at %s:%s" % (ERROR_003_PARENTHESES, section_name, file_name, lineno) + print("RST parser error E%03d: invalid parentheses balance in \"%s\" at %s:%s" % (ERROR_003_PARENTHESES, section_name, file_name, lineno), file=sys.stderr) return # save last parameter if needed @@ -328,7 +330,7 @@ class RstParser(object): elif func: if func["name"] in known_text_sections_names: if show_errors: - print >> sys.stderr, "RST parser warning W%03d: SKIPPED: \"%s\" File: %s:%s" % (WARNING_002_HDRWHITESPACE, section_name, file_name, lineno) + print("RST parser warning W%03d: SKIPPED: \"%s\" File: %s:%s" % (WARNING_002_HDRWHITESPACE, section_name, file_name, lineno), file=sys.stderr) self.sections_skipped += 1 elif show_errors: self.print_info(func, True, sys.stderr) @@ -351,7 +353,7 @@ class RstParser(object): if l.find("\t") >= 0: whitespace_warnings += 1 if whitespace_warnings <= max_whitespace_warnings and show_warnings: - print >> sys.stderr, "RST parser warning W%03d: tab symbol instead of space is used at %s:%s" % (WARNING_004_TABS, doc, lineno) + print("RST parser warning W%03d: tab symbol instead of space is used at %s:%s" % (WARNING_004_TABS, doc, lineno), file=sys.stderr) l = l.replace("\t", " ") # handle first line @@ -388,8 +390,8 @@ class RstParser(object): def add_new_fdecl(self, func, decl): if decl.fdecl.endswith(";"): - print >> sys.stderr, "RST parser error E%03d: unexpected semicolon at the end of declaration in \"%s\" at %s:%s" \ - % (ERROR_011_EOLEXPECTED, func["name"], func["file"], func["line"]) + print("RST parser error E%03d: unexpected semicolon at the end of declaration in \"%s\" at %s:%s" \ + % (ERROR_011_EOLEXPECTED, func["name"], func["file"], func["line"]), file=sys.stderr) decls = func.get("decls", []) if (decl.lang == "C++" or decl.lang == "C"): rst_decl = self.cpp_parser.parse_func_decl_no_wrap(decl.fdecl) @@ -405,37 +407,37 @@ class RstParser(object): if show_errors: #check black_list if decl.name not in params_blacklist.get(func["name"], []): - print >> sys.stderr, "RST parser error E%03d: redefinition of parameter \"%s\" in \"%s\" at %s:%s" \ - % (ERROR_005_REDEFENITIONPARAM, decl.name, func["name"], func["file"], func["line"]) + print("RST parser error E%03d: redefinition of parameter \"%s\" in \"%s\" at %s:%s" \ + % (ERROR_005_REDEFENITIONPARAM, decl.name, func["name"], func["file"], func["line"]), file=sys.stderr) else: params[decl.name] = decl.comment func["params"] = params def print_info(self, func, skipped=False, out = sys.stdout): - print >> out + print(file=out) if skipped: - print >> out, "SKIPPED DEFINITION:" - print >> out, "name: %s" % (func.get("name","~empty~")) - print >> out, "file: %s:%s" % (func.get("file","~empty~"), func.get("line","~empty~")) - print >> out, "is class: %s" % func.get("isclass", False) - print >> out, "is struct: %s" % func.get("isstruct", False) - print >> out, "module: %s" % func.get("module","~unknown~") - print >> out, "namespace: %s" % func.get("namespace", "~empty~") - print >> out, "class: %s" % (func.get("class","~empty~")) - print >> out, "method: %s" % (func.get("method","~empty~")) - print >> out, "brief: %s" % (func.get("brief","~empty~")) + print("SKIPPED DEFINITION:", file=out) + print("name: %s" % (func.get("name","~empty~")), file=out) + print("file: %s:%s" % (func.get("file","~empty~"), func.get("line","~empty~")), file=out) + print("is class: %s" % func.get("isclass", False), file=out) + print("is struct: %s" % func.get("isstruct", False), file=out) + print("module: %s" % func.get("module","~unknown~"), file=out) + print("namespace: %s" % func.get("namespace", "~empty~"), file=out) + print("class: %s" % (func.get("class","~empty~")), file=out) + print("method: %s" % (func.get("method","~empty~")), file=out) + print("brief: %s" % (func.get("brief","~empty~")), file=out) if "decls" in func: - print >> out, "declarations:" + print("declarations:", file=out) for d in func["decls"]: - print >> out, " %7s: %s" % (d[0], re.sub(r"[ ]+", " ", d[1])) + print(" %7s: %s" % (d[0], re.sub(r"[ ]+", " ", d[1])), file=out) if "seealso" in func: - print >> out, "seealso: ", func["seealso"] + print("seealso: ", func["seealso"], file=out) if "params" in func: - print >> out, "parameters:" + print("parameters:", file=out) for name, comment in func["params"].items(): - print >> out, "%23s: %s" % (name, comment) - print >> out, "long: %s" % (func.get("long","~empty~")) - print >> out + print("%23s: %s" % (name, comment), file=out) + print("long: %s" % (func.get("long","~empty~")), file=out) + print(file=out) def validate(self, func): if func.get("decls", None) is None: @@ -443,13 +445,13 @@ class RstParser(object): return False if func["name"] in self.definitions: if show_errors: - print >> sys.stderr, "RST parser error E%03d: \"%s\" from: %s:%s is already documented at %s:%s" \ - % (ERROR_006_REDEFENITIONFUNC, func["name"], func["file"], func["line"], self.definitions[func["name"]]["file"], self.definitions[func["name"]]["line"]) + print("RST parser error E%03d: \"%s\" from: %s:%s is already documented at %s:%s" \ + % (ERROR_006_REDEFENITIONFUNC, func["name"], func["file"], func["line"], self.definitions[func["name"]]["file"], self.definitions[func["name"]]["line"]), file=sys.stderr) return False return self.validateParams(func) def validateParams(self, func): - documentedParams = func.get("params", {}).keys() + documentedParams = list(func.get("params", {}).keys()) params = [] for decl in func.get("decls", []): @@ -464,13 +466,13 @@ class RstParser(object): # 1. all params are documented for p in params: if p not in documentedParams and show_warnings: - print >> sys.stderr, "RST parser warning W%03d: parameter \"%s\" of \"%s\" is undocumented. %s:%s" % (WARNING_007_UNDOCUMENTEDPARAM, p, func["name"], func["file"], func["line"]) + print("RST parser warning W%03d: parameter \"%s\" of \"%s\" is undocumented. %s:%s" % (WARNING_007_UNDOCUMENTEDPARAM, p, func["name"], func["file"], func["line"]), file=sys.stderr) # 2. only real params are documented for p in documentedParams: if p not in params and show_warnings: if p not in params_blacklist.get(func["name"], []): - print >> sys.stderr, "RST parser warning W%03d: unexisting parameter \"%s\" of \"%s\" is documented at %s:%s" % (WARNING_008_MISSINGPARAM, p, func["name"], func["file"], func["line"]) + print("RST parser warning W%03d: unexisting parameter \"%s\" of \"%s\" is documented at %s:%s" % (WARNING_008_MISSINGPARAM, p, func["name"], func["file"], func["line"]), file=sys.stderr) return True def normalize(self, func): @@ -541,7 +543,7 @@ class RstParser(object): func["name"] = fname[4:] func["method"] = fname[4:] elif show_warnings: - print >> sys.stderr, "RST parser warning W%03d: \"%s\" - section name is \"%s\" instead of \"%s\" at %s:%s" % (WARNING_009_HDRMISMATCH, fname, func["name"], fname[6:], func["file"], func["line"]) + print("RST parser warning W%03d: \"%s\" - section name is \"%s\" instead of \"%s\" at %s:%s" % (WARNING_009_HDRMISMATCH, fname, func["name"], fname[6:], func["file"], func["line"]), file=sys.stderr) #self.print_info(func) def normalizeText(self, s): @@ -632,11 +634,11 @@ class RstParser(object): return s def printSummary(self): - print "RST Parser Summary:" - print " Total sections: %s" % self.sections_total - print " Skipped sections: %s" % self.sections_skipped - print " Parsed sections: %s" % self.sections_parsed - print " Invalid sections: %s" % (self.sections_total - self.sections_parsed - self.sections_skipped) + print("RST Parser Summary:") + print(" Total sections: %s" % self.sections_total) + print(" Skipped sections: %s" % self.sections_skipped) + print(" Parsed sections: %s" % self.sections_parsed) + print(" Invalid sections: %s" % (self.sections_total - self.sections_parsed - self.sections_skipped)) # statistic by language stat = {} @@ -651,12 +653,12 @@ class RstParser(object): for decl in d.get("decls", []): stat[decl[0]] = stat.get(decl[0], 0) + 1 - print - print " classes documented: %s" % classes - print " structs documented: %s" % structs + print() + print(" classes documented: %s" % classes) + print(" structs documented: %s" % structs) for lang in sorted(stat.items()): - print " %7s functions documented: %s" % lang - print + print(" %7s functions documented: %s" % lang) + print() def mathReplace2(match): m = mathReplace(match) @@ -743,7 +745,7 @@ def mathReplace(match): if __name__ == "__main__": if len(sys.argv) < 2: - print "Usage:\n", os.path.basename(sys.argv[0]), " " + print("Usage:\n", os.path.basename(sys.argv[0]), " ") exit(0) if len(sys.argv) >= 3: @@ -759,7 +761,7 @@ if __name__ == "__main__": module = sys.argv[1] if module != "all" and not os.path.isdir(os.path.join(rst_parser_dir, "../../" + module)): - print "RST parser error E%03d: module \"%s\" could not be found." % (ERROR_010_NOMODULE, module) + print("RST parser error E%03d: module \"%s\" could not be found." % (ERROR_010_NOMODULE, module)) exit(1) parser = RstParser(hdr_parser.CppHeaderParser()) diff --git a/modules/matlab/generator/filters.py b/modules/matlab/generator/filters.py index 6251c8305b..de69ff7e41 100644 --- a/modules/matlab/generator/filters.py +++ b/modules/matlab/generator/filters.py @@ -1,5 +1,4 @@ from textwrap import TextWrapper -from string import split, join import re, os # precompile a URL matching regular expression urlexpr = re.compile(r"((https?):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)", re.MULTILINE|re.UNICODE) @@ -177,4 +176,4 @@ def comment(text, wrap=80, escape='% ', escape_first='', escape_last=''): escapn = '\n'+escape lines = text.split('\n') wlines = (tw.wrap(line) for line in lines) - return escape_first+escape+join((join(line, escapn) for line in wlines), escapn)+escape_last + return escape_first+escape+escapn.join(escapn.join(line) for line in wlines)+escape_last diff --git a/modules/matlab/generator/parse_tree.py b/modules/matlab/generator/parse_tree.py index daea53c2f2..21c4899ffd 100644 --- a/modules/matlab/generator/parse_tree.py +++ b/modules/matlab/generator/parse_tree.py @@ -1,4 +1,3 @@ -from string import join from textwrap import fill from filters import * @@ -74,7 +73,7 @@ class ParseTree(object): self.namespaces = namespaces if namespaces else [] def __str__(self): - return join((ns.__str__() for ns in self.namespaces), '\n\n\n') + return '\n\n\n'.join(ns.__str__() for ns in self.namespaces) def build(self, namespaces): babel = Translator() @@ -94,7 +93,7 @@ class ParseTree(object): constants.append(obj) else: raise TypeError('Unexpected object type: '+str(type(obj))) - self.namespaces.append(Namespace(name, constants, class_tree.values(), methods)) + self.namespaces.append(Namespace(name, constants, list(class_tree.values()), methods)) def insertIntoClassTree(self, obj, class_tree): cname = obj.name if type(obj) is Class else obj.clss @@ -208,9 +207,9 @@ class Namespace(object): def __str__(self): return 'namespace '+self.name+' {\n\n'+\ - (join((c.__str__() for c in self.constants), '\n')+'\n\n' if self.constants else '')+\ - (join((f.__str__() for f in self.methods), '\n')+'\n\n' if self.methods else '')+\ - (join((o.__str__() for o in self.classes), '\n\n') if self.classes else '')+'\n};' + ('\n'.join(c.__str__() for c in self.constants)+'\n\n' if self.constants else '')+\ + ('\n'.join(f.__str__() for f in self.methods)+'\n\n' if self.methods else '')+\ + ('\n\n'.join(o.__str__() for o in self.classes) if self.classes else '')+'\n};' class Class(object): """ @@ -228,8 +227,8 @@ class Class(object): def __str__(self): return 'class '+self.name+' {\n\t'+\ - (join((c.__str__() for c in self.constants), '\n\t')+'\n\n\t' if self.constants else '')+\ - (join((f.__str__() for f in self.methods), '\n\t') if self.methods else '')+'\n};' + ('\n\t'.join(c.__str__() for c in self.constants)+'\n\n\t' if self.constants else '')+\ + ('\n\t'.join(f.__str__() for f in self.methods) if self.methods else '')+'\n};' class Method(object): """ @@ -260,7 +259,7 @@ class Method(object): def __str__(self): return (self.rtp+' ' if self.rtp else '')+self.name+'('+\ - join((arg.__str__() for arg in self.req+self.opt), ', ')+\ + ', '.join(arg.__str__() for arg in self.req+self.opt)+\ ')'+(' const' if self.const else '')+';' class Argument(object): @@ -343,11 +342,11 @@ def todict(obj, classkey=None): for k in obj.keys(): obj[k] = todict(obj[k], classkey) return obj - elif hasattr(obj, "__iter__"): + elif isinstance(obj, list): return [todict(v, classkey) for v in obj] elif hasattr(obj, "__dict__"): data = dict([(key, todict(value, classkey)) - for key, value in obj.__dict__.iteritems() + for key, value in obj.__dict__.items() if not callable(value) and not key.startswith('_')]) if classkey is not None and hasattr(obj, "__class__"): data[classkey] = obj.__class__.__name__ From 7cad2c6788113f9b3e60846323e9bf3da60cc531 Mon Sep 17 00:00:00 2001 From: Hilton Bristow Date: Tue, 24 Dec 2013 15:15:06 +1000 Subject: [PATCH 003/117] fixed relative imports in Jinja for python3 --- 3rdparty/jinja2/markupsafe/__init__.py | 4 ++-- 3rdparty/jinja2/markupsafe/_native.py | 2 +- 3rdparty/jinja2/utils.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/3rdparty/jinja2/markupsafe/__init__.py b/3rdparty/jinja2/markupsafe/__init__.py index f13d7070df..a602dd5554 100644 --- a/3rdparty/jinja2/markupsafe/__init__.py +++ b/3rdparty/jinja2/markupsafe/__init__.py @@ -9,7 +9,7 @@ :license: BSD, see LICENSE for more details. """ import re -from _compat import text_type, string_types, int_types, \ +from ._compat import text_type, string_types, int_types, \ unichr, PY2 @@ -227,7 +227,7 @@ class _MarkupEscapeHelper(object): try: from _speedups import escape, escape_silent, soft_unicode except ImportError: - from _native import escape, escape_silent, soft_unicode + from ._native import escape, escape_silent, soft_unicode if not PY2: soft_str = soft_unicode diff --git a/3rdparty/jinja2/markupsafe/_native.py b/3rdparty/jinja2/markupsafe/_native.py index 4b4aee3893..81d0777d13 100644 --- a/3rdparty/jinja2/markupsafe/_native.py +++ b/3rdparty/jinja2/markupsafe/_native.py @@ -8,7 +8,7 @@ :copyright: (c) 2010 by Armin Ronacher. :license: BSD, see LICENSE for more details. """ -from _compat import text_type +from ._compat import text_type def escape(s): diff --git a/3rdparty/jinja2/utils.py b/3rdparty/jinja2/utils.py index ddc47da0a0..cbea660b41 100644 --- a/3rdparty/jinja2/utils.py +++ b/3rdparty/jinja2/utils.py @@ -517,4 +517,4 @@ class Joiner(object): # Imported here because that's where it was in the past -from markupsafe import Markup, escape, soft_unicode +from .markupsafe import Markup, escape, soft_unicode From 483061e802c77c3fdc0eb420d4f717b729ff4ff8 Mon Sep 17 00:00:00 2001 From: Hilton Bristow Date: Tue, 24 Dec 2013 16:39:29 +1000 Subject: [PATCH 004/117] explicit string encoding when writing to file in python3 --- modules/matlab/generator/build_info.py | 2 +- modules/matlab/generator/cvmex.py | 2 +- modules/matlab/generator/gen_matlab.py | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/matlab/generator/build_info.py b/modules/matlab/generator/build_info.py index 65619a2a75..1340d9f926 100644 --- a/modules/matlab/generator/build_info.py +++ b/modules/matlab/generator/build_info.py @@ -21,7 +21,7 @@ def substitute(build, output_dir): # populate template populated = template.render(build=build, time=time) with open(os.path.join(output_dir, 'buildInformation.m'), 'wb') as f: - f.write(populated) + f.write(populated.encode('utf-8')) if __name__ == "__main__": """ diff --git a/modules/matlab/generator/cvmex.py b/modules/matlab/generator/cvmex.py index 52c5f649f5..731d30a0e7 100644 --- a/modules/matlab/generator/cvmex.py +++ b/modules/matlab/generator/cvmex.py @@ -22,7 +22,7 @@ def substitute(cv, output_dir): # populate template populated = template.render(cv=cv, time=time) with open(os.path.join(output_dir, 'mex.m'), 'wb') as f: - f.write(populated) + f.write(populated.encode('utf-8')) if __name__ == "__main__": """ diff --git a/modules/matlab/generator/gen_matlab.py b/modules/matlab/generator/gen_matlab.py index 49e575099a..9f0975d97b 100644 --- a/modules/matlab/generator/gen_matlab.py +++ b/modules/matlab/generator/gen_matlab.py @@ -105,27 +105,27 @@ class MatlabWrapperGenerator(object): for method in namespace.methods: populated = tfunction.render(fun=method, time=time, includes=namespace.name) with open(output_source_dir+'/'+method.name+'.cpp', 'wb') as f: - f.write(populated) + f.write(populated.encode('utf-8')) if namespace.name in doc and method.name in doc[namespace.name]: populated = tdoc.render(fun=method, doc=doc[namespace.name][method.name], time=time) with open(output_class_dir+'/'+method.name+'.m', 'wb') as f: - f.write(populated) + f.write(populated.encode('utf-8')) # classes for clss in namespace.classes: # cpp converter populated = tclassc.render(clss=clss, time=time) with open(output_private_dir+'/'+clss.name+'Bridge.cpp', 'wb') as f: - f.write(populated) + f.write(populated.encode('utf-8')) # matlab classdef populated = tclassm.render(clss=clss, time=time) with open(output_class_dir+'/'+clss.name+'.m', 'wb') as f: - f.write(populated) + f.write(populated.encode('utf-8')) # create a global constants lookup table const = dict(constants(todict(parse_tree.namespaces))) populated = tconst.render(constants=const, time=time) with open(output_dir+'/cv.m', 'wb') as f: - f.write(populated) + f.write(populated.encode('utf-8')) if __name__ == "__main__": From aa368980246fd290ae7c842e71c1fc386cc79f3c Mon Sep 17 00:00:00 2001 From: Volodymyr Kysenko Date: Tue, 7 Jan 2014 19:38:57 -0800 Subject: [PATCH 005/117] added epsilon value to weights in the MergeMertens in order to avoid zero weights for pixels from uniformly filled areas of image --- modules/photo/src/merge.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/photo/src/merge.cpp b/modules/photo/src/merge.cpp index 7adfb5ec68..295e03c95f 100644 --- a/modules/photo/src/merge.cpp +++ b/modules/photo/src/merge.cpp @@ -208,7 +208,7 @@ public: if(channels == 3) { weights[i] = weights[i].mul(saturation); } - weights[i] = weights[i].mul(wellexp); + weights[i] = weights[i].mul(wellexp) + 1e-12f; weight_sum += weights[i]; } int maxlevel = static_cast(logf(static_cast(min(size.width, size.height))) / logf(2.0f)); From 89dd828e3cd4f4b46922185133e6296801b218fb Mon Sep 17 00:00:00 2001 From: Volodymyr Kysenko Date: Thu, 9 Jan 2014 14:10:00 -0800 Subject: [PATCH 006/117] added test for correct handling of uniforma areas in the MergeMertens --- modules/photo/test/test_hdr.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/photo/test/test_hdr.cpp b/modules/photo/test/test_hdr.cpp index 82ae25f525..27773fb384 100644 --- a/modules/photo/test/test_hdr.cpp +++ b/modules/photo/test/test_hdr.cpp @@ -166,6 +166,16 @@ TEST(Photo_MergeMertens, regression) merge->process(images, result); result.convertTo(result, CV_8UC3, 255); checkEqual(expected, result, 3, "Mertens"); + + Mat uniform(100, 100, CV_8UC3); + uniform = Scalar(0, 255, 0); + + images.clear(); + images.push_back(uniform); + + merge->process(images, result); + result.convertTo(result, CV_8UC3, 255); + checkEqual(uniform, result, 1e-2f, "Mertens"); } TEST(Photo_MergeDebevec, regression) From 8f6ebc2427da0a2db870b32fc351642d65deac5d Mon Sep 17 00:00:00 2001 From: Martin Dlouhy Date: Mon, 24 Feb 2014 07:54:08 +0100 Subject: [PATCH 007/117] fixed rotated rectangle (center instead of corner) --- .../py_contours/py_contour_features/py_contour_features.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/py_tutorials/py_imgproc/py_contours/py_contour_features/py_contour_features.rst b/doc/py_tutorials/py_imgproc/py_contours/py_contour_features/py_contour_features.rst index 6b7c661cc5..8220fb501e 100644 --- a/doc/py_tutorials/py_imgproc/py_contours/py_contour_features/py_contour_features.rst +++ b/doc/py_tutorials/py_imgproc/py_contours/py_contour_features/py_contour_features.rst @@ -123,7 +123,7 @@ Let (x,y) be the top-left coordinate of the rectangle and (w,h) be its width and 7.b. Rotated Rectangle ----------------------- -Here, bounding rectangle is drawn with minimum area, so it considers the rotation also. The function used is **cv2.minAreaRect()**. It returns a Box2D structure which contains following detals - ( top-left corner(x,y), (width, height), angle of rotation ). But to draw this rectangle, we need 4 corners of the rectangle. It is obtained by the function **cv2.boxPoints()** +Here, bounding rectangle is drawn with minimum area, so it considers the rotation also. The function used is **cv2.minAreaRect()**. It returns a Box2D structure which contains following detals - ( center (x,y), (width, height), angle of rotation ). But to draw this rectangle, we need 4 corners of the rectangle. It is obtained by the function **cv2.boxPoints()** :: rect = cv2.minAreaRect(cnt) From 3c1917771b6f7ad532c90ab4691d2eee0cb5e0f6 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Wed, 5 Mar 2014 16:31:41 +0400 Subject: [PATCH 008/117] modified OpenCL SURF API and the tests in 2.4.x to prove that it gives different from CPU results --- .../nonfree/include/opencv2/nonfree/ocl.hpp | 22 ++++- modules/nonfree/src/nonfree_init.cpp | 14 ++++ modules/nonfree/src/surf_ocl.cpp | 80 +++++++++++++++++++ modules/nonfree/test/test_features2d.cpp | 16 ++-- .../test_rotation_and_scale_invariance.cpp | 18 +++-- 5 files changed, 136 insertions(+), 14 deletions(-) diff --git a/modules/nonfree/include/opencv2/nonfree/ocl.hpp b/modules/nonfree/include/opencv2/nonfree/ocl.hpp index 78b6b466c4..ad0c16ac48 100644 --- a/modules/nonfree/include/opencv2/nonfree/ocl.hpp +++ b/modules/nonfree/include/opencv2/nonfree/ocl.hpp @@ -53,7 +53,7 @@ namespace cv //! Speeded up robust features, port from GPU module. ////////////////////////////////// SURF ////////////////////////////////////////// - class CV_EXPORTS SURF_OCL + class CV_EXPORTS SURF_OCL : public Feature2D { public: enum KeypointLayout @@ -72,10 +72,13 @@ namespace cv SURF_OCL(); //! the full constructor taking all the necessary parameters explicit SURF_OCL(double _hessianThreshold, int _nOctaves = 4, - int _nOctaveLayers = 2, bool _extended = false, float _keypointsRatio = 0.01f, bool _upright = false); + int _nOctaveLayers = 2, bool _extended = true, float _keypointsRatio = 0.01f, bool _upright = false); //! returns the descriptor size in float's (64 or 128) int descriptorSize() const; + + int descriptorType() const; + //! upload host keypoints to device memory void uploadKeypoints(const vector &keypoints, oclMat &keypointsocl); //! download keypoints from device to host memory @@ -103,6 +106,17 @@ namespace cv void operator()(const oclMat &img, const oclMat &mask, std::vector &keypoints, std::vector &descriptors, bool useProvidedKeypoints = false); + //! finds the keypoints using fast hessian detector used in SURF + void operator()(InputArray img, InputArray mask, + CV_OUT vector& keypoints) const; + //! finds the keypoints and computes their descriptors. Optionally it can compute descriptors for the user-provided keypoints + void operator()(InputArray img, InputArray mask, + CV_OUT vector& keypoints, + OutputArray descriptors, + bool useProvidedKeypoints=false) const; + + AlgorithmInfo* info() const; + void releaseMemory(); // SURF parameters @@ -116,7 +130,9 @@ namespace cv oclMat sum, mask1, maskSum, intBuffer; oclMat det, trace; oclMat maxPosBuffer; - + protected: + void detectImpl( const Mat& image, vector& keypoints, const Mat& mask) const; + void computeImpl( const Mat& image, vector& keypoints, Mat& descriptors) const; }; } } diff --git a/modules/nonfree/src/nonfree_init.cpp b/modules/nonfree/src/nonfree_init.cpp index f18e7d81d9..136b362ca4 100644 --- a/modules/nonfree/src/nonfree_init.cpp +++ b/modules/nonfree/src/nonfree_init.cpp @@ -63,6 +63,20 @@ CV_INIT_ALGORITHM(SIFT, "Feature2D.SIFT", obj.info()->addParam(obj, "edgeThreshold", obj.edgeThreshold); obj.info()->addParam(obj, "sigma", obj.sigma)) +#ifdef HAVE_OPENCV_OCL + +namespace ocl { +CV_INIT_ALGORITHM(SURF_OCL, "Feature2D.SURF_OCL", + obj.info()->addParam(obj, "hessianThreshold", obj.hessianThreshold); + obj.info()->addParam(obj, "nOctaves", obj.nOctaves); + obj.info()->addParam(obj, "nOctaveLayers", obj.nOctaveLayers); + obj.info()->addParam(obj, "extended", obj.extended); + obj.info()->addParam(obj, "upright", obj.upright)) +} + +#endif + + /////////////////////////////////////////////////////////////////////////////////////////////////////////// bool initModule_nonfree(void) diff --git a/modules/nonfree/src/surf_ocl.cpp b/modules/nonfree/src/surf_ocl.cpp index 293fd84b56..2922c2cee6 100644 --- a/modules/nonfree/src/surf_ocl.cpp +++ b/modules/nonfree/src/surf_ocl.cpp @@ -305,6 +305,11 @@ int cv::ocl::SURF_OCL::descriptorSize() const return extended ? 128 : 64; } +int cv::ocl::SURF_OCL::descriptorType() const +{ + return CV_32F; +} + void cv::ocl::SURF_OCL::uploadKeypoints(const vector &keypoints, oclMat &keypointsGPU) { if (keypoints.empty()) @@ -447,6 +452,81 @@ void cv::ocl::SURF_OCL::operator()(const oclMat &img, const oclMat &mask, vector downloadDescriptors(descriptorsGPU, descriptors); } + +void cv::ocl::SURF_OCL::operator()(InputArray img, InputArray mask, + CV_OUT vector& keypoints) const +{ + this->operator()(img, mask, keypoints, noArray(), false); +} + +void cv::ocl::SURF_OCL::operator()(InputArray img, InputArray mask, vector &keypoints, + OutputArray descriptors, bool useProvidedKeypoints) const +{ + oclMat _img, _mask; + if(img.kind() == _InputArray::OCL_MAT) + _img = *(oclMat*)img.obj; + else + _img.upload(img.getMat()); + if(_img.channels() != 1) + { + oclMat temp; + cvtColor(_img, temp, COLOR_BGR2GRAY); + _img = temp; + } + + if( !mask.empty() ) + { + if(mask.kind() == _InputArray::OCL_MAT) + _mask = *(oclMat*)mask.obj; + else + _mask.upload(mask.getMat()); + } + + SURF_OCL_Invoker surf((SURF_OCL&)*this, _img, _mask); + oclMat keypointsGPU; + + if (!useProvidedKeypoints || !upright) + ((SURF_OCL*)this)->uploadKeypoints(keypoints, keypointsGPU); + + if (!useProvidedKeypoints) + surf.detectKeypoints(keypointsGPU); + else if (!upright) + surf.findOrientation(keypointsGPU); + if(keypointsGPU.cols*keypointsGPU.rows != 0) + ((SURF_OCL*)this)->downloadKeypoints(keypointsGPU, keypoints); + + if( descriptors.needed() ) + { + oclMat descriptorsGPU; + surf.computeDescriptors(keypointsGPU, descriptorsGPU, descriptorSize()); + Size sz = descriptorsGPU.size(); + if( descriptors.kind() == _InputArray::STD_VECTOR ) + { + CV_Assert(descriptors.type() == CV_32F); + std::vector* v = (std::vector*)descriptors.obj; + v->resize(sz.width*sz.height); + Mat m(sz, CV_32F, &v->at(0)); + descriptorsGPU.download(m); + } + else + { + descriptors.create(sz, CV_32F); + Mat m = descriptors.getMat(); + descriptorsGPU.download(m); + } + } +} + +void cv::ocl::SURF_OCL::detectImpl( const Mat& image, vector& keypoints, const Mat& mask) const +{ + (*this)(image, mask, keypoints, noArray(), false); +} + +void cv::ocl::SURF_OCL::computeImpl( const Mat& image, vector& keypoints, Mat& descriptors) const +{ + (*this)(image, Mat(), keypoints, descriptors, true); +} + void cv::ocl::SURF_OCL::releaseMemory() { sum.release(); diff --git a/modules/nonfree/test/test_features2d.cpp b/modules/nonfree/test/test_features2d.cpp index b680d948b8..66a35931ad 100644 --- a/modules/nonfree/test/test_features2d.cpp +++ b/modules/nonfree/test/test_features2d.cpp @@ -50,6 +50,12 @@ const string DETECTOR_DIR = FEATURES2D_DIR + "/feature_detectors"; const string DESCRIPTOR_DIR = FEATURES2D_DIR + "/descriptor_extractors"; const string IMAGE_FILENAME = "tsukuba.png"; +#ifdef HAVE_OPENCV_OCL +#define SURF_NAME "SURF_OCL" +#else +#define SURF_NAME "SURF" +#endif + /****************************************************************************************\ * Regression tests for feature detectors comparing keypoints. * \****************************************************************************************/ @@ -978,7 +984,7 @@ TEST( Features2d_Detector_SIFT, regression ) TEST( Features2d_Detector_SURF, regression ) { - CV_FeatureDetectorTest test( "detector-surf", FeatureDetector::create("SURF") ); + CV_FeatureDetectorTest test( "detector-surf", FeatureDetector::create(SURF_NAME) ); test.safe_run(); } @@ -995,7 +1001,7 @@ TEST( Features2d_DescriptorExtractor_SIFT, regression ) TEST( Features2d_DescriptorExtractor_SURF, regression ) { CV_DescriptorExtractorTest > test( "descriptor-surf", 0.05f, - DescriptorExtractor::create("SURF") ); + DescriptorExtractor::create(SURF_NAME) ); test.safe_run(); } @@ -1036,10 +1042,10 @@ TEST(Features2d_BruteForceDescriptorMatcher_knnMatch, regression) const int sz = 100; const int k = 3; - Ptr ext = DescriptorExtractor::create("SURF"); + Ptr ext = DescriptorExtractor::create(SURF_NAME); ASSERT_TRUE(ext != NULL); - Ptr det = FeatureDetector::create("SURF"); + Ptr det = FeatureDetector::create(SURF_NAME); //"%YAML:1.0\nhessianThreshold: 8000.\noctaves: 3\noctaveLayers: 4\nupright: 0\n" ASSERT_TRUE(det != NULL); @@ -1144,7 +1150,7 @@ protected: }; TEST(Features2d_SIFTHomographyTest, regression) { CV_DetectPlanarTest test("SIFT", 80); test.safe_run(); } -TEST(Features2d_SURFHomographyTest, regression) { CV_DetectPlanarTest test("SURF", 80); test.safe_run(); } +TEST(Features2d_SURFHomographyTest, regression) { CV_DetectPlanarTest test(SURF_NAME, 80); test.safe_run(); } class FeatureDetectorUsingMaskTest : public cvtest::BaseTest { diff --git a/modules/nonfree/test/test_rotation_and_scale_invariance.cpp b/modules/nonfree/test/test_rotation_and_scale_invariance.cpp index 7ca9e3dd74..255cad313c 100644 --- a/modules/nonfree/test/test_rotation_and_scale_invariance.cpp +++ b/modules/nonfree/test/test_rotation_and_scale_invariance.cpp @@ -48,6 +48,12 @@ using namespace cv; const string IMAGE_TSUKUBA = "/features2d/tsukuba.png"; const string IMAGE_BIKES = "/detectors_descriptors_evaluation/images_datasets/bikes/img1.png"; +#ifdef HAVE_OPENCV_OCL +#define SURF_NAME "Feature2D.SURF_OCL" +#else +#define SURF_NAME "Feature2D.SURF" +#endif + #define SHOW_DEBUG_LOG 0 static @@ -615,7 +621,7 @@ protected: */ TEST(Features2d_RotationInvariance_Detector_SURF, regression) { - DetectorRotationInvarianceTest test(Algorithm::create("Feature2D.SURF"), + DetectorRotationInvarianceTest test(Algorithm::create(SURF_NAME), 0.44f, 0.76f); test.safe_run(); @@ -634,8 +640,8 @@ TEST(Features2d_RotationInvariance_Detector_SIFT, DISABLED_regression) */ TEST(Features2d_RotationInvariance_Descriptor_SURF, regression) { - DescriptorRotationInvarianceTest test(Algorithm::create("Feature2D.SURF"), - Algorithm::create("Feature2D.SURF"), + DescriptorRotationInvarianceTest test(Algorithm::create(SURF_NAME), + Algorithm::create(SURF_NAME), NORM_L1, 0.83f); test.safe_run(); @@ -655,7 +661,7 @@ TEST(Features2d_RotationInvariance_Descriptor_SIFT, regression) */ TEST(Features2d_ScaleInvariance_Detector_SURF, regression) { - DetectorScaleInvarianceTest test(Algorithm::create("Feature2D.SURF"), + DetectorScaleInvarianceTest test(Algorithm::create(SURF_NAME), 0.64f, 0.84f); test.safe_run(); @@ -674,8 +680,8 @@ TEST(Features2d_ScaleInvariance_Detector_SIFT, regression) */ TEST(Features2d_ScaleInvariance_Descriptor_SURF, regression) { - DescriptorScaleInvarianceTest test(Algorithm::create("Feature2D.SURF"), - Algorithm::create("Feature2D.SURF"), + DescriptorScaleInvarianceTest test(Algorithm::create(SURF_NAME), + Algorithm::create(SURF_NAME), NORM_L1, 0.61f); test.safe_run(); From da70b04262fa6c7c0d29d6ca69b496cab5e31259 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Wed, 5 Mar 2014 17:04:49 +0400 Subject: [PATCH 009/117] made SURF_OCL default constructor parameters the same as SURF --- modules/nonfree/src/surf_ocl.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/nonfree/src/surf_ocl.cpp b/modules/nonfree/src/surf_ocl.cpp index 2922c2cee6..e6fd6eeb6b 100644 --- a/modules/nonfree/src/surf_ocl.cpp +++ b/modules/nonfree/src/surf_ocl.cpp @@ -283,9 +283,9 @@ private: cv::ocl::SURF_OCL::SURF_OCL() { hessianThreshold = 100.0f; - extended = true; + extended = false; nOctaves = 4; - nOctaveLayers = 2; + nOctaveLayers = 3; keypointsRatio = 0.01f; upright = false; } From 60ce2b2e9f2266a01c193b9e3c67d8dfcd8e35fd Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Wed, 5 Mar 2014 17:10:51 +0400 Subject: [PATCH 010/117] modified SURF's performance test to test OpenCL version as well --- modules/nonfree/perf/perf_surf.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/modules/nonfree/perf/perf_surf.cpp b/modules/nonfree/perf/perf_surf.cpp index 20935a9a1e..f16b348231 100644 --- a/modules/nonfree/perf/perf_surf.cpp +++ b/modules/nonfree/perf/perf_surf.cpp @@ -12,6 +12,12 @@ typedef perf::TestBaseWithParam surf; "cv/detectors_descriptors_evaluation/images_datasets/leuven/img1.png",\ "stitching/a3.png" +#ifdef HAVE_OPENCV_OCL +typedef ocl::SURF_OCL surf_class; +#else +typdef SURF surf_class; +#endif + PERF_TEST_P(surf, detect, testing::Values(SURF_IMAGES)) { String filename = getDataPath(GetParam()); @@ -22,7 +28,7 @@ PERF_TEST_P(surf, detect, testing::Values(SURF_IMAGES)) Mat mask; declare.in(frame).time(90); - SURF detector; + surf_class detector; vector points; TEST_CYCLE() detector(frame, mask, points); @@ -41,7 +47,7 @@ PERF_TEST_P(surf, extract, testing::Values(SURF_IMAGES)) Mat mask; declare.in(frame).time(90); - SURF detector; + surf_class detector; vector points; vector descriptors; detector(frame, mask, points); @@ -61,7 +67,7 @@ PERF_TEST_P(surf, full, testing::Values(SURF_IMAGES)) Mat mask; declare.in(frame).time(90); - SURF detector; + surf_class detector; vector points; vector descriptors; From 22f42a639fdc0233a740bbad06536f32d7d99382 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Wed, 5 Mar 2014 18:48:19 +0400 Subject: [PATCH 011/117] fixed doc builder warnings; make sure the tests give reasonable results when OpenCL is not available --- modules/nonfree/doc/feature_detection.rst | 2 +- .../nonfree/include/opencv2/nonfree/ocl.hpp | 2 +- modules/nonfree/perf/perf_surf.cpp | 29 ++++++++++++------ modules/nonfree/test/test_features2d.cpp | 30 ++++++++++++++----- 4 files changed, 44 insertions(+), 19 deletions(-) diff --git a/modules/nonfree/doc/feature_detection.rst b/modules/nonfree/doc/feature_detection.rst index f97dec1002..190c9f8475 100644 --- a/modules/nonfree/doc/feature_detection.rst +++ b/modules/nonfree/doc/feature_detection.rst @@ -240,7 +240,7 @@ The class ``SURF_GPU`` uses some buffers and provides access to it. All buffers ocl::SURF_OCL ------------- -.. ocv:class:: ocl::SURF_OCL +.. ocv:class:: ocl::SURF_OCL : public Feature2D Class used for extracting Speeded Up Robust Features (SURF) from an image. :: diff --git a/modules/nonfree/include/opencv2/nonfree/ocl.hpp b/modules/nonfree/include/opencv2/nonfree/ocl.hpp index ad0c16ac48..5d9eb86b50 100644 --- a/modules/nonfree/include/opencv2/nonfree/ocl.hpp +++ b/modules/nonfree/include/opencv2/nonfree/ocl.hpp @@ -114,7 +114,7 @@ namespace cv CV_OUT vector& keypoints, OutputArray descriptors, bool useProvidedKeypoints=false) const; - + AlgorithmInfo* info() const; void releaseMemory(); diff --git a/modules/nonfree/perf/perf_surf.cpp b/modules/nonfree/perf/perf_surf.cpp index f16b348231..84c21b4691 100644 --- a/modules/nonfree/perf/perf_surf.cpp +++ b/modules/nonfree/perf/perf_surf.cpp @@ -13,9 +13,19 @@ typedef perf::TestBaseWithParam surf; "stitching/a3.png" #ifdef HAVE_OPENCV_OCL -typedef ocl::SURF_OCL surf_class; +static Ptr getSURF() +{ + ocl::PlatformsInfo p; + if(ocl::getOpenCLPlatforms(p) > 0) + return new ocl::SURF_OCL; + else + return new SURF; +} #else -typdef SURF surf_class; +static Ptr getSURF() +{ + return new SURF; +} #endif PERF_TEST_P(surf, detect, testing::Values(SURF_IMAGES)) @@ -28,10 +38,11 @@ PERF_TEST_P(surf, detect, testing::Values(SURF_IMAGES)) Mat mask; declare.in(frame).time(90); - surf_class detector; + Ptr detector = getSURF(); + vector points; - TEST_CYCLE() detector(frame, mask, points); + TEST_CYCLE() detector->operator()(frame, mask, points, noArray()); SANITY_CHECK_KEYPOINTS(points, 1e-3); } @@ -47,12 +58,12 @@ PERF_TEST_P(surf, extract, testing::Values(SURF_IMAGES)) Mat mask; declare.in(frame).time(90); - surf_class detector; + Ptr detector = getSURF(); vector points; vector descriptors; - detector(frame, mask, points); + detector->operator()(frame, mask, points, noArray()); - TEST_CYCLE() detector(frame, mask, points, descriptors, true); + TEST_CYCLE() detector->operator()(frame, mask, points, descriptors, true); SANITY_CHECK(descriptors, 1e-4); } @@ -67,11 +78,11 @@ PERF_TEST_P(surf, full, testing::Values(SURF_IMAGES)) Mat mask; declare.in(frame).time(90); - surf_class detector; + Ptr detector = getSURF(); vector points; vector descriptors; - TEST_CYCLE() detector(frame, mask, points, descriptors, false); + TEST_CYCLE() detector->operator()(frame, mask, points, descriptors, false); SANITY_CHECK_KEYPOINTS(points, 1e-3); SANITY_CHECK(descriptors, 1e-4); diff --git a/modules/nonfree/test/test_features2d.cpp b/modules/nonfree/test/test_features2d.cpp index 66a35931ad..3dfad7cdab 100644 --- a/modules/nonfree/test/test_features2d.cpp +++ b/modules/nonfree/test/test_features2d.cpp @@ -51,9 +51,19 @@ const string DESCRIPTOR_DIR = FEATURES2D_DIR + "/descriptor_extractors"; const string IMAGE_FILENAME = "tsukuba.png"; #ifdef HAVE_OPENCV_OCL -#define SURF_NAME "SURF_OCL" +static Ptr getSURF() +{ + ocl::PlatformsInfo p; + if(ocl::getOpenCLPlatforms(p) > 0) + return new ocl::SURF_OCL; + else + return new SURF; +} #else -#define SURF_NAME "SURF" +static Ptr getSURF() +{ + return new SURF; +} #endif /****************************************************************************************\ @@ -984,7 +994,7 @@ TEST( Features2d_Detector_SIFT, regression ) TEST( Features2d_Detector_SURF, regression ) { - CV_FeatureDetectorTest test( "detector-surf", FeatureDetector::create(SURF_NAME) ); + CV_FeatureDetectorTest test( "detector-surf", Ptr(getSURF()) ); test.safe_run(); } @@ -1001,7 +1011,7 @@ TEST( Features2d_DescriptorExtractor_SIFT, regression ) TEST( Features2d_DescriptorExtractor_SURF, regression ) { CV_DescriptorExtractorTest > test( "descriptor-surf", 0.05f, - DescriptorExtractor::create(SURF_NAME) ); + Ptr(getSURF()) ); test.safe_run(); } @@ -1042,10 +1052,10 @@ TEST(Features2d_BruteForceDescriptorMatcher_knnMatch, regression) const int sz = 100; const int k = 3; - Ptr ext = DescriptorExtractor::create(SURF_NAME); + Ptr ext = Ptr(getSURF()); ASSERT_TRUE(ext != NULL); - Ptr det = FeatureDetector::create(SURF_NAME); + Ptr det = Ptr(getSURF()); //"%YAML:1.0\nhessianThreshold: 8000.\noctaves: 3\noctaveLayers: 4\nupright: 0\n" ASSERT_TRUE(det != NULL); @@ -1102,7 +1112,11 @@ public: protected: void run(int) { - Ptr f = Algorithm::create("Feature2D." + fname); + Ptr f; + if(fname == "SURF") + f = getSURF(); + else + f = Algorithm::create("Feature2D." + fname); if(f.empty()) return; string path = string(ts->get_data_path()) + "detectors_descriptors_evaluation/planar/"; @@ -1150,7 +1164,7 @@ protected: }; TEST(Features2d_SIFTHomographyTest, regression) { CV_DetectPlanarTest test("SIFT", 80); test.safe_run(); } -TEST(Features2d_SURFHomographyTest, regression) { CV_DetectPlanarTest test(SURF_NAME, 80); test.safe_run(); } +TEST(Features2d_SURFHomographyTest, regression) { CV_DetectPlanarTest test("SURF", 80); test.safe_run(); } class FeatureDetectorUsingMaskTest : public cvtest::BaseTest { From b3e18d23a31313b4885f0c2fb8ca8afc0ff8199c Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Wed, 5 Mar 2014 11:25:27 +0400 Subject: [PATCH 012/117] Implicit CUDA and OpenCL control for module definition added. Feature allows to exclude CUDA or OpenCL optimizations at all even CUDA is used on build. Exclusion of CUDA or OpenCL cut unwanted dependencies. --- cmake/OpenCVModule.cmake | 66 +++++++++++++++++-------- modules/nonfree/CMakeLists.txt | 2 +- modules/superres/src/cuda/btv_l1_gpu.cu | 2 +- modules/ts/CMakeLists.txt | 2 +- 4 files changed, 49 insertions(+), 23 deletions(-) diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake index 03818018d9..c9c351113c 100644 --- a/cmake/OpenCVModule.cmake +++ b/cmake/OpenCVModule.cmake @@ -479,39 +479,49 @@ endmacro() # finds and sets headers and sources for the standard OpenCV module # Usage: # ocv_glob_module_sources() -macro(ocv_glob_module_sources) +macro(ocv_glob_module_sources EXCLUDE_CUDA EXCLUDE_OPENCL) file(GLOB_RECURSE lib_srcs "src/*.cpp") file(GLOB_RECURSE lib_int_hdrs "src/*.hpp" "src/*.h") file(GLOB lib_hdrs "include/opencv2/${name}/*.hpp" "include/opencv2/${name}/*.h") file(GLOB lib_hdrs_detail "include/opencv2/${name}/detail/*.hpp" "include/opencv2/${name}/detail/*.h") - file(GLOB lib_cuda_srcs "src/cuda/*.cu") - set(cuda_objs "") - set(lib_cuda_hdrs "") - if(HAVE_CUDA) - ocv_include_directories(${CUDA_INCLUDE_DIRS}) - file(GLOB lib_cuda_hdrs "src/cuda/*.hpp") + if (NOT ${EXCLUDE_CUDA}) + file(GLOB lib_cuda_srcs "src/cuda/*.cu") + set(cuda_objs "") + set(lib_cuda_hdrs "") + if(HAVE_CUDA) + ocv_include_directories(${CUDA_INCLUDE_DIRS}) + file(GLOB lib_cuda_hdrs "src/cuda/*.hpp") - ocv_cuda_compile(cuda_objs ${lib_cuda_srcs} ${lib_cuda_hdrs}) - source_group("Src\\Cuda" FILES ${lib_cuda_srcs} ${lib_cuda_hdrs}) + ocv_cuda_compile(cuda_objs ${lib_cuda_srcs} ${lib_cuda_hdrs}) + source_group("Src\\Cuda" FILES ${lib_cuda_srcs} ${lib_cuda_hdrs}) + endif() + else() + set(cuda_objs "") + set(lib_cuda_srcs "") + set(lib_cuda_hdrs "") endif() source_group("Src" FILES ${lib_srcs} ${lib_int_hdrs}) - file(GLOB cl_kernels "src/opencl/*.cl") - if(HAVE_opencv_ocl AND cl_kernels) - ocv_include_directories(${OPENCL_INCLUDE_DIRS}) - add_custom_command( - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp" - COMMAND ${CMAKE_COMMAND} -DCL_DIR="${CMAKE_CURRENT_SOURCE_DIR}/src/opencl" -DOUTPUT="${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" -P "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake" - DEPENDS ${cl_kernels} "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake") - source_group("OpenCL" FILES ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp") - list(APPEND lib_srcs ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp") + if (NOT ${EXCLUDE_OPENCL}) + file(GLOB cl_kernels "src/opencl/*.cl") + if(HAVE_opencv_ocl AND cl_kernels) + ocv_include_directories(${OPENCL_INCLUDE_DIRS}) + add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp" + COMMAND ${CMAKE_COMMAND} -DCL_DIR="${CMAKE_CURRENT_SOURCE_DIR}/src/opencl" -DOUTPUT="${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" -P "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake" + DEPENDS ${cl_kernels} "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake") + source_group("OpenCL" FILES ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp") + list(APPEND lib_srcs ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp") + endif() endif() source_group("Include" FILES ${lib_hdrs}) source_group("Include\\detail" FILES ${lib_hdrs_detail}) + message(":${EXCLUDE_CUDA}: ${lib_cuda_srcs}") + ocv_set_module_sources(${ARGN} HEADERS ${lib_hdrs} ${lib_hdrs_detail} SOURCES ${lib_srcs} ${lib_int_hdrs} ${cuda_objs} ${lib_cuda_srcs} ${lib_cuda_hdrs}) endmacro() @@ -614,9 +624,25 @@ endmacro() # Usage: # ocv_define_module(module_name [INTERNAL] [REQUIRED] [] [OPTIONAL ]) macro(ocv_define_module module_name) - ocv_add_module(${module_name} ${ARGN}) + set(_tmp_argn ${ARGN}) + set(exclude_cuda 0) + set(exclude_opencl 0) + set(argv0 ${ARGV1}) + set(argv1 ${ARGV2}) + set(argv2 ${ARGV3}) + foreach(i RANGE 0 2) + if("${argv${i}}" STREQUAL "EXCLUDE_CUDA") + set(exclude_cuda 1) + list(REMOVE_AT _tmp_argn ${i}) + elseif ("${argv${i}}" STREQUAL "EXCLUDE_OPENCL") + set(exclude_opencl 1) + list(REMOVE_AT _tmp_argn ${i}) + endif() + endforeach() + + ocv_add_module(${module_name} ${_tmp_argn}) ocv_module_include_directories() - ocv_glob_module_sources() + ocv_glob_module_sources(${exclude_cuda} ${exclude_opencl}) ocv_create_module() ocv_add_precompiled_headers(${the_module}) diff --git a/modules/nonfree/CMakeLists.txt b/modules/nonfree/CMakeLists.txt index b43273bc80..571614be0d 100644 --- a/modules/nonfree/CMakeLists.txt +++ b/modules/nonfree/CMakeLists.txt @@ -6,7 +6,7 @@ set(the_description "Functionality with possible limitations on the use") ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef -Wshadow) if(ENABLE_DYNAMIC_CUDA) add_definitions(-DDYNAMIC_CUDA_SUPPORT) - ocv_define_module(nonfree opencv_imgproc opencv_features2d opencv_calib3d OPTIONAL opencv_ocl) + ocv_define_module(nonfree EXCLUDE_CUDA opencv_imgproc opencv_features2d opencv_calib3d OPTIONAL opencv_ocl) else() ocv_define_module(nonfree opencv_imgproc opencv_features2d opencv_calib3d OPTIONAL opencv_gpu opencv_ocl) endif() diff --git a/modules/superres/src/cuda/btv_l1_gpu.cu b/modules/superres/src/cuda/btv_l1_gpu.cu index b4d96190ae..4b0ebdc592 100644 --- a/modules/superres/src/cuda/btv_l1_gpu.cu +++ b/modules/superres/src/cuda/btv_l1_gpu.cu @@ -42,7 +42,7 @@ #include "opencv2/opencv_modules.hpp" -#ifdef HAVE_OPENCV_GPU +#if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT) #include "opencv2/gpu/device/common.hpp" #include "opencv2/gpu/device/transform.hpp" diff --git a/modules/ts/CMakeLists.txt b/modules/ts/CMakeLists.txt index bb56da2d98..dcd3e1563b 100644 --- a/modules/ts/CMakeLists.txt +++ b/modules/ts/CMakeLists.txt @@ -11,7 +11,7 @@ ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef) ocv_add_module(ts opencv_core opencv_features2d) -ocv_glob_module_sources() +ocv_glob_module_sources(0 0) ocv_module_include_directories() ocv_create_module() From 0eaeff06418223c89f86fc2fdcf48fbc90f4c4cb Mon Sep 17 00:00:00 2001 From: kurodash Date: Fri, 7 Mar 2014 19:02:37 +0900 Subject: [PATCH 013/117] fix: use "cvAlloc" wrapper function for malloc. --- modules/core/src/persistence.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/core/src/persistence.cpp b/modules/core/src/persistence.cpp index 7759f708b6..4a6e0c9ec5 100644 --- a/modules/core/src/persistence.cpp +++ b/modules/core/src/persistence.cpp @@ -4855,7 +4855,7 @@ cvRegisterType( const CvTypeInfo* _info ) "Type name should contain only letters, digits, - and _" ); } - info = (CvTypeInfo*)malloc( sizeof(*info) + len + 1 ); + info = (CvTypeInfo*)cvAlloc( sizeof(*info) + len + 1 ); *info = *_info; info->type_name = (char*)(info + 1); @@ -4893,7 +4893,7 @@ cvUnregisterType( const char* type_name ) if( !CvType::first || !CvType::last ) CvType::first = CvType::last = 0; - free( info ); + cvFree( info ); } } From a87607e3ef6d30a2ccd8bd3b516fde4647dce16d Mon Sep 17 00:00:00 2001 From: Firat Kalaycilar Date: Wed, 12 Mar 2014 16:14:59 +0200 Subject: [PATCH 014/117] Fixed an issue with weight assignment causing the resulting GMM weights to be unsorted in BackgroundSubtractorMOG2 --- modules/video/src/bgfg_gaussmix2.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/video/src/bgfg_gaussmix2.cpp b/modules/video/src/bgfg_gaussmix2.cpp index 6bbb960482..b14bc8e1e2 100644 --- a/modules/video/src/bgfg_gaussmix2.cpp +++ b/modules/video/src/bgfg_gaussmix2.cpp @@ -319,7 +319,7 @@ struct MOG2Invoker : ParallelLoopBody for( int mode = 0; mode < nmodes; mode++, mean_m += nchannels ) { float weight = alpha1*gmm[mode].weight + prune;//need only weight if fit is found - + int swap_count = 0; //// //fit not found yet if( !fitsPDF ) @@ -384,6 +384,7 @@ struct MOG2Invoker : ParallelLoopBody if( weight < gmm[i-1].weight ) break; + swap_count++; //swap one up std::swap(gmm[i], gmm[i-1]); for( int c = 0; c < nchannels; c++ ) @@ -401,7 +402,7 @@ struct MOG2Invoker : ParallelLoopBody nmodes--; } - gmm[mode].weight = weight;//update weight by the calculated value + gmm[mode-swap_count].weight = weight;//update weight by the calculated value totalWeight += weight; } //go through all modes From b96762a48ff78ba39563301e3f2be9a9b7bf5ef3 Mon Sep 17 00:00:00 2001 From: Koji Miyazato Date: Thu, 13 Mar 2014 19:41:13 +0900 Subject: [PATCH 015/117] Fix for bug #3599: cv::FileStorage does not work for std::vector of user-defined struct. --- modules/core/include/opencv2/core/persistence.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/core/include/opencv2/core/persistence.hpp b/modules/core/include/opencv2/core/persistence.hpp index 8f515c54dd..e00c849400 100644 --- a/modules/core/include/opencv2/core/persistence.hpp +++ b/modules/core/include/opencv2/core/persistence.hpp @@ -697,11 +697,11 @@ void write(FileStorage& fs, const String& name, const Range& r ) template static inline void write( FileStorage& fs, const String& name, const std::vector<_Tp>& vec ) { - internal::WriteStructContext ws(fs, name, FileNode::SEQ+(DataType<_Tp>::fmt != 0 ? FileNode::FLOW : 0)); + fs << (DataType<_Tp>::fmt != 0 ? "[:" : "["); write(fs, vec); + fs << "]"; } - static inline void read(const FileNode& node, bool& value, bool default_value) { From b47bec2ed0f424a0e33ab6d2609c77847dab3c75 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Thu, 13 Mar 2014 23:22:41 +0400 Subject: [PATCH 016/117] performance tests for ORB --- .../perf/opencl/perf_brute_force_matcher.cpp | 6 +- modules/features2d/perf/opencl/perf_orb.cpp | 86 +++++++++++++++++++ 2 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 modules/features2d/perf/opencl/perf_orb.cpp diff --git a/modules/features2d/perf/opencl/perf_brute_force_matcher.cpp b/modules/features2d/perf/opencl/perf_brute_force_matcher.cpp index f7bd24cf52..2e6e574160 100644 --- a/modules/features2d/perf/opencl/perf_brute_force_matcher.cpp +++ b/modules/features2d/perf/opencl/perf_brute_force_matcher.cpp @@ -123,7 +123,7 @@ OCL_PERF_TEST_P(BruteForceMatcherFixture, RadiusMatch, ::testing::Combine(OCL_PE SANITY_CHECK_MATCHES(matches1, 1e-3); } -}//ocl -}//cvtest +} // ocl +} // cvtest -#endif //HAVE_OPENCL +#endif // HAVE_OPENCL diff --git a/modules/features2d/perf/opencl/perf_orb.cpp b/modules/features2d/perf/opencl/perf_orb.cpp new file mode 100644 index 0000000000..78a82aa449 --- /dev/null +++ b/modules/features2d/perf/opencl/perf_orb.cpp @@ -0,0 +1,86 @@ +#include "perf_precomp.hpp" +#include "opencv2/ts/ocl_perf.hpp" + +#ifdef HAVE_OPENCL + +namespace cvtest { +namespace ocl { + +typedef ::perf::TestBaseWithParam ORBFixture; + +#define ORB_IMAGES OCL_PERF_ENUM("cv/detectors_descriptors_evaluation/images_datasets/leuven/img1.png", "stitching/a3.png") + +OCL_PERF_TEST_P(ORBFixture, ORB_Detect, ORB_IMAGES) +{ + string filename = getDataPath(GetParam()); + Mat mframe = imread(filename, IMREAD_GRAYSCALE); + + if (mframe.empty()) + FAIL() << "Unable to load source image " << filename; + + UMat frame, mask; + mframe.copyTo(frame); + + declare.in(frame); + ORB detector(1500, 1.3f, 1); + vector points; + + OCL_TEST_CYCLE() detector(frame, mask, points); + + sort(points.begin(), points.end(), comparators::KeypointGreater()); + SANITY_CHECK_KEYPOINTS(points, 1e-5); +} + +OCL_PERF_TEST_P(ORBFixture, ORB_Extract, ORB_IMAGES) +{ + string filename = getDataPath(GetParam()); + Mat mframe = imread(filename, IMREAD_GRAYSCALE); + + if (mframe.empty()) + FAIL() << "Unable to load source image " << filename; + + UMat mask, frame; + mframe.copyTo(frame); + + declare.in(frame); + + ORB detector(1500, 1.3f, 1); + vector points; + detector(frame, mask, points); + sort(points.begin(), points.end(), comparators::KeypointGreater()); + + UMat descriptors; + + OCL_TEST_CYCLE() detector(frame, mask, points, descriptors, true); + + SANITY_CHECK(descriptors); +} + +OCL_PERF_TEST_P(ORBFixture, ORB_Full, ORB_IMAGES) +{ + string filename = getDataPath(GetParam()); + Mat mframe = imread(filename, IMREAD_GRAYSCALE); + + if (mframe.empty()) + FAIL() << "Unable to load source image " << filename; + + UMat mask, frame; + mframe.copyTo(frame); + + declare.in(frame); + ORB detector(1500, 1.3f, 1); + + vector points; + UMat descriptors; + + OCL_TEST_CYCLE() detector(frame, mask, points, descriptors, false); + + ::perf::sort(points, descriptors); + SANITY_CHECK_KEYPOINTS(points, 1e-5); + SANITY_CHECK(descriptors); +} + +} // ocl +} // cvtest + +#endif // HAVE_OPENCL From f9484bae8ab748132e753b8c217c5ded36a5c9dd Mon Sep 17 00:00:00 2001 From: kuroda sho Date: Fri, 14 Mar 2014 17:02:20 +0900 Subject: [PATCH 017/117] fix: use "cvAlloc" wrapper function for malloc. --- modules/core/src/persistence.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/core/src/persistence.cpp b/modules/core/src/persistence.cpp index 4a6e0c9ec5..6847eec34d 100644 --- a/modules/core/src/persistence.cpp +++ b/modules/core/src/persistence.cpp @@ -4893,7 +4893,7 @@ cvUnregisterType( const char* type_name ) if( !CvType::first || !CvType::last ) CvType::first = CvType::last = 0; - cvFree( info ); + cvFree( &info ); } } From 5f94a205d14180d5fd9c0b451add6da35a2b3f9f Mon Sep 17 00:00:00 2001 From: berak Date: Thu, 13 Mar 2014 08:39:15 +0100 Subject: [PATCH 018/117] fixed h / s ranges in histogram_calculation tutorial literalinclude literalinclude, dropped :lines: --- .../histogram_comparison.rst | 90 ++----------------- .../Histograms_Matching/compareHist_Demo.cpp | 6 +- 2 files changed, 9 insertions(+), 87 deletions(-) diff --git a/doc/tutorials/imgproc/histograms/histogram_comparison/histogram_comparison.rst b/doc/tutorials/imgproc/histograms/histogram_comparison/histogram_comparison.rst index 1a5c59de07..f5f636d08b 100644 --- a/doc/tutorials/imgproc/histograms/histogram_comparison/histogram_comparison.rst +++ b/doc/tutorials/imgproc/histograms/histogram_comparison/histogram_comparison.rst @@ -84,88 +84,10 @@ Code * **Code at glance:** -.. code-block:: cpp - - #include "opencv2/highgui/highgui.hpp" - #include "opencv2/imgproc/imgproc.hpp" - #include - #include - - using namespace std; - using namespace cv; - - /** @function main */ - int main( int argc, char** argv ) - { - Mat src_base, hsv_base; - Mat src_test1, hsv_test1; - Mat src_test2, hsv_test2; - Mat hsv_half_down; - - /// Load three images with different environment settings - if( argc < 4 ) - { printf("** Error. Usage: ./compareHist_Demo \n"); - return -1; - } - - src_base = imread( argv[1], 1 ); - src_test1 = imread( argv[2], 1 ); - src_test2 = imread( argv[3], 1 ); - - /// Convert to HSV - cvtColor( src_base, hsv_base, CV_BGR2HSV ); - cvtColor( src_test1, hsv_test1, CV_BGR2HSV ); - cvtColor( src_test2, hsv_test2, CV_BGR2HSV ); - - hsv_half_down = hsv_base( Range( hsv_base.rows/2, hsv_base.rows - 1 ), Range( 0, hsv_base.cols - 1 ) ); - - /// Using 30 bins for hue and 32 for saturation - int h_bins = 50; int s_bins = 60; - int histSize[] = { h_bins, s_bins }; - - // hue varies from 0 to 256, saturation from 0 to 180 - float h_ranges[] = { 0, 256 }; - float s_ranges[] = { 0, 180 }; - - const float* ranges[] = { h_ranges, s_ranges }; - - // Use the o-th and 1-st channels - int channels[] = { 0, 1 }; - - /// Histograms - MatND hist_base; - MatND hist_half_down; - MatND hist_test1; - MatND hist_test2; - - /// Calculate the histograms for the HSV images - calcHist( &hsv_base, 1, channels, Mat(), hist_base, 2, histSize, ranges, true, false ); - normalize( hist_base, hist_base, 0, 1, NORM_MINMAX, -1, Mat() ); +.. literalinclude:: ../../../../../samples/cpp/tutorial_code/Histograms_Matching/compareHist_Demo.cpp + :language: cpp + :tab-width: 4 - calcHist( &hsv_half_down, 1, channels, Mat(), hist_half_down, 2, histSize, ranges, true, false ); - normalize( hist_half_down, hist_half_down, 0, 1, NORM_MINMAX, -1, Mat() ); - - calcHist( &hsv_test1, 1, channels, Mat(), hist_test1, 2, histSize, ranges, true, false ); - normalize( hist_test1, hist_test1, 0, 1, NORM_MINMAX, -1, Mat() ); - - calcHist( &hsv_test2, 1, channels, Mat(), hist_test2, 2, histSize, ranges, true, false ); - normalize( hist_test2, hist_test2, 0, 1, NORM_MINMAX, -1, Mat() ); - - /// Apply the histogram comparison methods - for( int i = 0; i < 4; i++ ) - { int compare_method = i; - double base_base = compareHist( hist_base, hist_base, compare_method ); - double base_half = compareHist( hist_base, hist_half_down, compare_method ); - double base_test1 = compareHist( hist_base, hist_test1, compare_method ); - double base_test2 = compareHist( hist_base, hist_test2, compare_method ); - - printf( " Method [%d] Perfect, Base-Half, Base-Test(1), Base-Test(2) : %f, %f, %f, %f \n", i, base_base, base_half , base_test1, base_test2 ); - } - - printf( "Done \n" ); - - return 0; - } Explanation @@ -211,11 +133,11 @@ Explanation .. code-block:: cpp - int h_bins = 50; int s_bins = 32; + int h_bins = 50; int s_bins = 60; int histSize[] = { h_bins, s_bins }; - float h_ranges[] = { 0, 256 }; - float s_ranges[] = { 0, 180 }; + float h_ranges[] = { 0, 180 }; + float s_ranges[] = { 0, 256 }; const float* ranges[] = { h_ranges, s_ranges }; diff --git a/samples/cpp/tutorial_code/Histograms_Matching/compareHist_Demo.cpp b/samples/cpp/tutorial_code/Histograms_Matching/compareHist_Demo.cpp index f4dd4e5e4e..424a38e93a 100644 --- a/samples/cpp/tutorial_code/Histograms_Matching/compareHist_Demo.cpp +++ b/samples/cpp/tutorial_code/Histograms_Matching/compareHist_Demo.cpp @@ -40,13 +40,13 @@ int main( int argc, char** argv ) hsv_half_down = hsv_base( Range( hsv_base.rows/2, hsv_base.rows - 1 ), Range( 0, hsv_base.cols - 1 ) ); - /// Using 30 bins for hue and 32 for saturation + /// Using 50 bins for hue and 60 for saturation int h_bins = 50; int s_bins = 60; int histSize[] = { h_bins, s_bins }; - // hue varies from 0 to 256, saturation from 0 to 180 - float s_ranges[] = { 0, 256 }; + // hue varies from 0 to 179, saturation from 0 to 255 float h_ranges[] = { 0, 180 }; + float s_ranges[] = { 0, 256 }; const float* ranges[] = { h_ranges, s_ranges }; From 6b8de222d770174fc1fb31b1b64da8995e8a8ebf Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Wed, 5 Mar 2014 09:57:16 +0400 Subject: [PATCH 019/117] OpenCV_MODULES_SUFFIX variable added to OpenCVConfig.cmake to enable custom module configurations. --- cmake/templates/OpenCVConfig.cmake.in | 28 +++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/cmake/templates/OpenCVConfig.cmake.in b/cmake/templates/OpenCVConfig.cmake.in index 6db61d2112..3222048282 100644 --- a/cmake/templates/OpenCVConfig.cmake.in +++ b/cmake/templates/OpenCVConfig.cmake.in @@ -18,8 +18,8 @@ # This file will define the following variables: # - OpenCV_LIBS : The list of all imported targets for OpenCV modules. # - OpenCV_INCLUDE_DIRS : The OpenCV include directories. -# - OpenCV_COMPUTE_CAPABILITIES : The version of compute capability -# - OpenCV_ANDROID_NATIVE_API_LEVEL : Minimum required level of Android API +# - OpenCV_COMPUTE_CAPABILITIES : The version of compute capability. +# - OpenCV_ANDROID_NATIVE_API_LEVEL : Minimum required level of Android API. # - OpenCV_VERSION : The version of this OpenCV build: "@OPENCV_VERSION@" # - OpenCV_VERSION_MAJOR : Major version part of OpenCV_VERSION: "@OPENCV_VERSION_MAJOR@" # - OpenCV_VERSION_MINOR : Minor version part of OpenCV_VERSION: "@OPENCV_VERSION_MINOR@" @@ -27,22 +27,26 @@ # - OpenCV_VERSION_TWEAK : Tweak version part of OpenCV_VERSION: "@OPENCV_VERSION_TWEAK@" # # Advanced variables: -# - OpenCV_SHARED -# - OpenCV_CONFIG_PATH -# - OpenCV_INSTALL_PATH (not set on Windows) -# - OpenCV_LIB_COMPONENTS -# - OpenCV_USE_MANGLED_PATHS -# - OpenCV_HAVE_ANDROID_CAMERA +# - OpenCV_SHARED : Use OpenCV as shared library +# - OpenCV_CONFIG_PATH : Path to this OpenCVConfig.cmake +# - OpenCV_INSTALL_PATH : OpenCV location (not set on Windows) +# - OpenCV_LIB_COMPONENTS : Present OpenCV modules list +# - OpenCV_USE_MANGLED_PATHS : Mangled OpenCV path flag +# - OpenCV_MODULES_SUFFIX : The suffix for OpenCVModules-XXX.cmake file +# - OpenCV_HAVE_ANDROID_CAMERA : Presence of Android native camera wrappers # # =================================================================================== -set(modules_file_suffix "") -if(ANDROID) - string(REPLACE - _ modules_file_suffix "_${ANDROID_NDK_ABI_NAME}") +if(NOT DEFINED OpenCV_MODULES_SUFFIX) + if(ANDROID) + string(REPLACE - _ OpenCV_MODULES_SUFFIX "_${ANDROID_NDK_ABI_NAME}") + else() + set(OpenCV_MODULES_SUFFIX "") + endif() endif() if(NOT TARGET opencv_core) - include(${CMAKE_CURRENT_LIST_DIR}/OpenCVModules${modules_file_suffix}.cmake) + include(${CMAKE_CURRENT_LIST_DIR}/OpenCVModules${OpenCV_MODULES_SUFFIX}.cmake) endif() # TODO All things below should be reviewed. What is about of moving this code into related modules (special vars/hooks/files) From 6890aa0033d0cc092fd8c829ce2cedf4c1f0c079 Mon Sep 17 00:00:00 2001 From: vbystricky Date: Mon, 17 Mar 2014 16:03:15 +0400 Subject: [PATCH 020/117] Fix problems on Intel HD graphics --- modules/video/src/lkpyramid.cpp | 2 -- modules/video/src/opencl/pyrlk.cl | 46 ++----------------------------- 2 files changed, 2 insertions(+), 46 deletions(-) diff --git a/modules/video/src/lkpyramid.cpp b/modules/video/src/lkpyramid.cpp index cd57585658..a33e47664d 100644 --- a/modules/video/src/lkpyramid.cpp +++ b/modules/video/src/lkpyramid.cpp @@ -975,9 +975,7 @@ namespace cv idxArg = kernel.set(idxArg, imageI); //image2d_t I idxArg = kernel.set(idxArg, imageJ); //image2d_t J idxArg = kernel.set(idxArg, ocl::KernelArg::PtrReadOnly(prevPts)); // __global const float2* prevPts - idxArg = kernel.set(idxArg, (int)prevPts.step); // int prevPtsStep idxArg = kernel.set(idxArg, ocl::KernelArg::PtrReadWrite(nextPts)); // __global const float2* nextPts - idxArg = kernel.set(idxArg, (int)nextPts.step); // int nextPtsStep idxArg = kernel.set(idxArg, ocl::KernelArg::PtrReadWrite(status)); // __global uchar* status idxArg = kernel.set(idxArg, ocl::KernelArg::PtrReadWrite(err)); // __global float* err idxArg = kernel.set(idxArg, (int)level); // const int level diff --git a/modules/video/src/opencl/pyrlk.cl b/modules/video/src/opencl/pyrlk.cl index c018554902..822e628f25 100644 --- a/modules/video/src/opencl/pyrlk.cl +++ b/modules/video/src/opencl/pyrlk.cl @@ -262,50 +262,9 @@ inline void GetError(image2d_t J, const float x, const float y, const float* Pch *errval += fabs(diff); } -inline void SetPatch4(image2d_t I, const float x, const float y, - float4* Pch, float4* Dx, float4* Dy, - float* A11, float* A12, float* A22) -{ - *Pch = read_imagef(I, sampler, (float2)(x, y)); - - float4 dIdx = 3.0f * read_imagef(I, sampler, (float2)(x + 1, y - 1)) + 10.0f * read_imagef(I, sampler, (float2)(x + 1, y)) + 3.0f * read_imagef(I, sampler, (float2)(x + 1, y + 1)) - - (3.0f * read_imagef(I, sampler, (float2)(x - 1, y - 1)) + 10.0f * read_imagef(I, sampler, (float2)(x - 1, y)) + 3.0f * read_imagef(I, sampler, (float2)(x - 1, y + 1))); - - float4 dIdy = 3.0f * read_imagef(I, sampler, (float2)(x - 1, y + 1)) + 10.0f * read_imagef(I, sampler, (float2)(x, y + 1)) + 3.0f * read_imagef(I, sampler, (float2)(x + 1, y + 1)) - - (3.0f * read_imagef(I, sampler, (float2)(x - 1, y - 1)) + 10.0f * read_imagef(I, sampler, (float2)(x, y - 1)) + 3.0f * read_imagef(I, sampler, (float2)(x + 1, y - 1))); - - - *Dx = dIdx; - *Dy = dIdy; - float4 sqIdx = dIdx * dIdx; - *A11 += sqIdx.x + sqIdx.y + sqIdx.z; - sqIdx = dIdx * dIdy; - *A12 += sqIdx.x + sqIdx.y + sqIdx.z; - sqIdx = dIdy * dIdy; - *A22 += sqIdx.x + sqIdx.y + sqIdx.z; -} - -inline void GetPatch4(image2d_t J, const float x, const float y, - const float4* Pch, const float4* Dx, const float4* Dy, - float* b1, float* b2) -{ - float4 J_val = read_imagef(J, sampler, (float2)(x, y)); - float4 diff = (J_val - *Pch) * 32.0f; - float4 xdiff = diff* *Dx; - *b1 += xdiff.x + xdiff.y + xdiff.z; - xdiff = diff* *Dy; - *b2 += xdiff.x + xdiff.y + xdiff.z; -} - -inline void GetError4(image2d_t J, const float x, const float y, const float4* Pch, float* errval) -{ - float4 diff = read_imagef(J, sampler, (float2)(x,y))-*Pch; - *errval += fabs(diff.x) + fabs(diff.y) + fabs(diff.z); -} - #define GRIDSIZE 3 __kernel void lkSparse(image2d_t I, image2d_t J, - __global const float2* prevPts, int prevPtsStep, __global float2* nextPts, int nextPtsStep, __global uchar* status, __global float* err, + __global const float2* prevPts, __global float2* nextPts, __global uchar* status, __global float* err, const int level, const int rows, const int cols, int PATCH_X, int PATCH_Y, int c_winSize_x, int c_winSize_y, int c_iters, char calcErr) { __local float smem1[BUFFER]; @@ -434,9 +393,8 @@ __kernel void lkSparse(image2d_t I, image2d_t J, { if (tid == 0 && level == 0) status[gid] = 0; - return; + break; } - float b1 = 0; float b2 = 0; From 0c02e5de254d32e8f00bde4047f12624e77a7ef5 Mon Sep 17 00:00:00 2001 From: Anatoly Baksheev Date: Mon, 17 Mar 2014 17:02:49 +0400 Subject: [PATCH 021/117] minor doc fix --- modules/viz/doc/widget.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/viz/doc/widget.rst b/modules/viz/doc/widget.rst index 7c1fc45751..0601ba1b72 100644 --- a/modules/viz/doc/widget.rst +++ b/modules/viz/doc/widget.rst @@ -1049,7 +1049,7 @@ viz::WWidgetMerger::WWidgetMerger --------------------------------------- Constructs a WWidgetMerger. -.. ocv:WWidgetMerger:: WWidgetMerger() +.. ocv:function:: WWidgetMerger() viz::WWidgetMerger::addCloud ------------------------------- From 51cb6998ea1661b58a7ca267d6e0d6511ec63f6d Mon Sep 17 00:00:00 2001 From: yash Date: Mon, 24 Feb 2014 18:28:55 +0530 Subject: [PATCH 022/117] made the example consistent with the fuction definition and improved doc made the example consistent with the fuction definition and improved doc --- modules/core/doc/old_basic_structures.rst | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/modules/core/doc/old_basic_structures.rst b/modules/core/doc/old_basic_structures.rst index c8de17adae..1d5880a624 100644 --- a/modules/core/doc/old_basic_structures.rst +++ b/modules/core/doc/old_basic_structures.rst @@ -1436,7 +1436,7 @@ description rewritten using IplImage* color_img = cvCreateImage(cvSize(320,240), IPL_DEPTH_8U, 3); IplImage gray_img_hdr, *gray_img; - gray_img = (IplImage*)cvReshapeND(color_img, &gray_img_hdr, 1, 0, 0); + gray_img = (IplImage*)cvReshapeMatND(color_img, sizeof(gray_img_hdr), &gray_img_hdr, 1, 0, 0); ... @@ -1444,6 +1444,18 @@ description rewritten using int size[] = { 2, 2, 2 }; CvMatND* mat = cvCreateMatND(3, size, CV_32F); CvMat row_header, *row; + row = (CvMat*)cvReshapeMatND(mat, sizeof(row_header), &row_header, 0, 1, 0); + +.. + +In C, the header file for this function includes a convenient macro ``cvReshapeND`` that does away with the ``sizeof_header`` parameter. So, the lines containing the call to ``cvReshapeMatND`` in the examples may be replaced as follow: + +:: + + gray_img = (IplImage*)cvReshapeND(color_img, &gray_img_hdr, 1, 0, 0); + + ... + row = (CvMat*)cvReshapeND(mat, &row_header, 0, 1, 0); .. From 3940b6163b8370312d2a7fe66c96d43ab6d12efd Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Mon, 17 Mar 2014 18:52:28 +0400 Subject: [PATCH 023/117] remove intel guard since the code is 2 times faster on AMD too --- modules/ocl/perf/perf_filters.cpp | 6 +++--- modules/ocl/src/filtering.cpp | 6 +++--- modules/ocl/src/opencl/filtering_sep_filter_singlepass.cl | 2 ++ 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/modules/ocl/perf/perf_filters.cpp b/modules/ocl/perf/perf_filters.cpp index b3ffc51b30..c542d647cf 100644 --- a/modules/ocl/perf/perf_filters.cpp +++ b/modules/ocl/perf/perf_filters.cpp @@ -262,13 +262,13 @@ OCL_PERF_TEST_P(SobelFixture, Sobel, oclDst.download(dst); - SANITY_CHECK(dst); + SANITY_CHECK(dst, 1e-3); } else if (RUN_PLAIN_IMPL) { TEST_CYCLE() cv::Sobel(src, dst, -1, dx, dy); - SANITY_CHECK(dst); + SANITY_CHECK(dst, 1e-3); } else OCL_PERF_ELSE @@ -326,7 +326,7 @@ OCL_PERF_TEST_P(GaussianBlurFixture, GaussianBlur, Mat src(srcSize, type), dst(srcSize, type); declare.in(src, WARMUP_RNG).out(dst); - const double eps = src.depth() == CV_8U ? 1 + DBL_EPSILON : 3e-4; + const double eps = src.depth() == CV_8U ? 1 + DBL_EPSILON : 5e-4; if (RUN_OCL_IMPL) { diff --git a/modules/ocl/src/filtering.cpp b/modules/ocl/src/filtering.cpp index 35aa226de6..77052ffbf3 100644 --- a/modules/ocl/src/filtering.cpp +++ b/modules/ocl/src/filtering.cpp @@ -774,12 +774,12 @@ static void sepFilter2D_SinglePass(const oclMat &src, oclMat &dst, option += " -D KERNEL_MATRIX_X="; for(int i=0; i( &row_kernel.at(i) ) ); + option += cv::format("DIG(0x%x)", *reinterpret_cast( &row_kernel.at(i) ) ); option += "0x0"; option += " -D KERNEL_MATRIX_Y="; for(int i=0; i( &col_kernel.at(i) ) ); + option += cv::format("DIG(0x%x)", *reinterpret_cast( &col_kernel.at(i) ) ); option += "0x0"; switch(src.type()) @@ -1410,7 +1410,7 @@ Ptr cv::ocl::createSeparableLinearFilter_GPU(int srcType, int //if image size is non-degenerate and large enough //and if filter support is reasonable to satisfy larger local memory requirements, //then we can use single pass routine to avoid extra runtime calls overhead - if( clCxt && clCxt->supportsFeature(FEATURE_CL_INTEL_DEVICE) && + if( clCxt && rowKernel.rows <= 21 && columnKernel.rows <= 21 && (rowKernel.rows & 1) == 1 && (columnKernel.rows & 1) == 1 && imgSize.width > optimizedSepFilterLocalSize + (rowKernel.rows>>1) && diff --git a/modules/ocl/src/opencl/filtering_sep_filter_singlepass.cl b/modules/ocl/src/opencl/filtering_sep_filter_singlepass.cl index c6555bff0f..c5f490284e 100644 --- a/modules/ocl/src/opencl/filtering_sep_filter_singlepass.cl +++ b/modules/ocl/src/opencl/filtering_sep_filter_singlepass.cl @@ -84,6 +84,8 @@ #define DST(_x,_y) (((global DSTTYPE*)(Dst+DstOffset+(_y)*DstPitch))[_x]) +#define DIG(a) a, + //horizontal and vertical filter kernels //should be defined on host during compile time to avoid overhead __constant uint mat_kernelX[] = {KERNEL_MATRIX_X}; From 82e6edfba28c91f80fbc20557a3f16906db95bc5 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Mon, 17 Mar 2014 19:59:35 +0400 Subject: [PATCH 024/117] optimized sep filter --- modules/core/include/opencv2/core/ocl.hpp | 2 +- modules/core/src/ocl.cpp | 4 +- modules/imgproc/perf/opencl/perf_filters.cpp | 2 +- modules/imgproc/src/filter.cpp | 99 +++++++--- .../src/opencl/filterSep_singlePass.cl | 177 ++++++++++++++++++ 5 files changed, 251 insertions(+), 33 deletions(-) create mode 100644 modules/imgproc/src/opencl/filterSep_singlePass.cl diff --git a/modules/core/include/opencv2/core/ocl.hpp b/modules/core/include/opencv2/core/ocl.hpp index fb9ec24c56..fdb6f9a0aa 100644 --- a/modules/core/include/opencv2/core/ocl.hpp +++ b/modules/core/include/opencv2/core/ocl.hpp @@ -592,7 +592,7 @@ protected: CV_EXPORTS const char* convertTypeStr(int sdepth, int ddepth, int cn, char* buf); CV_EXPORTS const char* typeToStr(int t); CV_EXPORTS const char* memopTypeToStr(int t); -CV_EXPORTS String kernelToStr(InputArray _kernel, int ddepth = -1); +CV_EXPORTS String kernelToStr(InputArray _kernel, int ddepth = -1, const char * name = NULL); CV_EXPORTS void getPlatfomsInfo(std::vector& platform_info); CV_EXPORTS int predictOptimalVectorWidth(InputArray src1, InputArray src2 = noArray(), InputArray src3 = noArray(), InputArray src4 = noArray(), InputArray src5 = noArray(), InputArray src6 = noArray(), diff --git a/modules/core/src/ocl.cpp b/modules/core/src/ocl.cpp index 7c4f8de9e0..b56f84c16e 100644 --- a/modules/core/src/ocl.cpp +++ b/modules/core/src/ocl.cpp @@ -4306,7 +4306,7 @@ static std::string kerToStr(const Mat & k) return stream.str(); } -String kernelToStr(InputArray _kernel, int ddepth) +String kernelToStr(InputArray _kernel, int ddepth, const char * name) { Mat kernel = _kernel.getMat().reshape(1, 1); @@ -4323,7 +4323,7 @@ String kernelToStr(InputArray _kernel, int ddepth) const func_t func = funcs[depth]; CV_Assert(func != 0); - return cv::format(" -D COEFF=%s", func(kernel).c_str()); + return cv::format(" -D %s=%s", name ? name : "COEFF", func(kernel).c_str()); } #define PROCESS_SRC(src) \ diff --git a/modules/imgproc/perf/opencl/perf_filters.cpp b/modules/imgproc/perf/opencl/perf_filters.cpp index 57b928c289..f7329e3194 100644 --- a/modules/imgproc/perf/opencl/perf_filters.cpp +++ b/modules/imgproc/perf/opencl/perf_filters.cpp @@ -211,7 +211,7 @@ OCL_PERF_TEST_P(SobelFixture, Sobel, OCL_TEST_CYCLE() cv::Sobel(src, dst, -1, dx, dy); - SANITY_CHECK(dst); + SANITY_CHECK(dst, 1e-6); } ///////////// Scharr //////////////////////// diff --git a/modules/imgproc/src/filter.cpp b/modules/imgproc/src/filter.cpp index ea0baf6b09..bb54471c07 100644 --- a/modules/imgproc/src/filter.cpp +++ b/modules/imgproc/src/filter.cpp @@ -3350,27 +3350,8 @@ static bool ocl_sepRowFilter2D( UMat &src, UMat &buf, Mat &kernelX, int anchor, int radiusY = (int)((buf.rows - src.rows) >> 1); bool isIsolatedBorder = (borderType & BORDER_ISOLATED) != 0; - const char* btype = NULL; - switch (borderType & ~BORDER_ISOLATED) - { - case BORDER_CONSTANT: - btype = "BORDER_CONSTANT"; - break; - case BORDER_REPLICATE: - btype = "BORDER_REPLICATE"; - break; - case BORDER_REFLECT: - btype = "BORDER_REFLECT"; - break; - case BORDER_WRAP: - btype = "BORDER_WRAP"; - break; - case BORDER_REFLECT101: - btype = "BORDER_REFLECT_101"; - break; - default: - return false; - } + const char * const borderMap[] = { "BORDER_CONSTANT", "BORDER_REPLICATE", "BORDER_REFLECT", "BORDER_WRAP", "BORDER_REFLECT_101" }, + * const btype = borderMap[borderType & ~BORDER_ISOLATED]; bool extra_extrapolation = src.rows < (int)((-radiusY + globalsize[1]) >> 1) + 1; extra_extrapolation |= src.rows < radiusY; @@ -3463,36 +3444,96 @@ static bool ocl_sepColFilter2D(const UMat &buf, UMat &dst, Mat &kernelY, int anc return kernelCol.run(2, globalsize, localsize, sync); } +const int optimizedSepFilterLocalSize = 16; + +static bool ocl_sepFilter2D_SinglePass(InputArray _src, OutputArray _dst, + InputArray _row_kernel, InputArray _col_kernel, + int borderType, int ddepth) +{ + Size size = _src.size(), wholeSize; + Point origin; + int stype = _src.type(), sdepth = CV_MAT_DEPTH(stype), cn = CV_MAT_CN(stype), + esz = CV_ELEM_SIZE(stype), wdepth = std::max(std::max(sdepth, ddepth), CV_32F), + dtype = CV_MAKE_TYPE(ddepth, cn); + size_t src_step = _src.step(), src_offset = _src.offset(); + bool doubleSupport = ocl::Device::getDefault().doubleFPConfig() > 0; + + if ((src_offset % src_step) % esz != 0 || (!doubleSupport && sdepth == CV_64F) || + !(borderType == BORDER_CONSTANT || borderType == BORDER_REPLICATE || + borderType == BORDER_REFLECT || borderType == BORDER_WRAP || + borderType == BORDER_REFLECT_101)) + return false; + + size_t lt2[2] = { optimizedSepFilterLocalSize, optimizedSepFilterLocalSize }; + size_t gt2[2] = { lt2[0] * (1 + (size.width - 1) / lt2[0]), lt2[1] * (1 + (size.height - 1) / lt2[1]) }; + + char cvt[2][40]; + const char * const borderMap[] = { "BORDER_CONSTANT", "BORDER_REPLICATE", "BORDER_REFLECT", "BORDER_WRAP", + "BORDER_REFLECT_101" }; + + String opts = cv::format("-D BLK_X=%d -D BLK_Y=%d -D RADIUSX=%d -D RADIUSY=%d%s%s" + " -D srcT=%s -D convertToWT=%s -D WT=%s -D dstT=%s -D convertToDstT=%s" + " -D %s", (int)lt2[0], (int)lt2[1], _row_kernel.size().height / 2, _col_kernel.size().height / 2, + ocl::kernelToStr(_row_kernel, CV_32F, "KERNEL_MATRIX_X").c_str(), + ocl::kernelToStr(_col_kernel, CV_32F, "KERNEL_MATRIX_Y").c_str(), + ocl::typeToStr(stype), ocl::convertTypeStr(sdepth, wdepth, cn, cvt[0]), + ocl::typeToStr(CV_MAKE_TYPE(wdepth, cn)), ocl::typeToStr(dtype), + ocl::convertTypeStr(wdepth, ddepth, cn, cvt[1]), borderMap[borderType]); + + ocl::Kernel k("sep_filter", ocl::imgproc::filterSep_singlePass_oclsrc, opts); + if (k.empty()) + return false; + + UMat src = _src.getUMat(); + _dst.create(size, dtype); + UMat dst = _dst.getUMat(); + + int src_offset_x = static_cast((src_offset % src_step) / esz); + int src_offset_y = static_cast(src_offset / src_step); + + src.locateROI(wholeSize, origin); + + k.args(ocl::KernelArg::PtrReadOnly(src), (int)src_step, src_offset_x, src_offset_y, + wholeSize.height, wholeSize.width, ocl::KernelArg::WriteOnly(dst)); + + return k.run(2, gt2, lt2, false); +} + static bool ocl_sepFilter2D( InputArray _src, OutputArray _dst, int ddepth, InputArray _kernelX, InputArray _kernelY, Point anchor, double delta, int borderType ) { + Size imgSize = _src.size(); + if (abs(delta)> FLT_MIN) return false; - int type = _src.type(); + int type = _src.type(), cn = CV_MAT_CN(type); if ( !( (type == CV_8UC1 || type == CV_8UC4 || type == CV_32FC1 || type == CV_32FC4) && (ddepth == CV_32F || ddepth == CV_16S || ddepth == CV_8U || ddepth < 0) ) ) return false; - int cn = CV_MAT_CN(type); - Mat kernelX = _kernelX.getMat().reshape(1, 1); - if (1 != (kernelX.cols % 2)) + if (kernelX.cols % 2 != 1) return false; Mat kernelY = _kernelY.getMat().reshape(1, 1); - if (1 != (kernelY.cols % 2)) + if (kernelY.cols % 2 != 1) return false; int sdepth = CV_MAT_DEPTH(type); - if( anchor.x < 0 ) + if (anchor.x < 0) anchor.x = kernelX.cols >> 1; - if( anchor.y < 0 ) + if (anchor.y < 0) anchor.y = kernelY.cols >> 1; - if( ddepth < 0 ) + if (ddepth < 0) ddepth = sdepth; + CV_OCL_RUN_(kernelY.rows <= 21 && kernelX.rows <= 21 && + imgSize.width > optimizedSepFilterLocalSize + (kernelX.rows >> 1) && + imgSize.height > optimizedSepFilterLocalSize + (kernelY.rows >> 1), + ocl_sepFilter2D_SinglePass(_src, _dst, _kernelX, _kernelY, borderType, ddepth), true) + UMat src = _src.getUMat(); Size srcWholeSize; Point srcOffset; src.locateROI(srcWholeSize, srcOffset); diff --git a/modules/imgproc/src/opencl/filterSep_singlePass.cl b/modules/imgproc/src/opencl/filterSep_singlePass.cl new file mode 100644 index 0000000000..7284da0cbc --- /dev/null +++ b/modules/imgproc/src/opencl/filterSep_singlePass.cl @@ -0,0 +1,177 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2014, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +/////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////Macro for border type//////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////////////////// + +#ifdef BORDER_CONSTANT +// CCCCCC|abcdefgh|CCCCCCC +#define EXTRAPOLATE(x, maxV) +#elif defined BORDER_REPLICATE +// aaaaaa|abcdefgh|hhhhhhh +#define EXTRAPOLATE(x, maxV) \ + { \ + (x) = max(min((x), (maxV) - 1), 0); \ + } +#elif defined BORDER_WRAP +// cdefgh|abcdefgh|abcdefg +#define EXTRAPOLATE(x, maxV) \ + { \ + (x) = ( (x) + (maxV) ) % (maxV); \ + } +#elif defined BORDER_REFLECT +// fedcba|abcdefgh|hgfedcb +#define EXTRAPOLATE(x, maxV) \ + { \ + (x) = min(((maxV)-1)*2-(x)+1, max((x),-(x)-1) ); \ + } +#elif defined BORDER_REFLECT_101 || defined BORDER_REFLECT101 +// gfedcb|abcdefgh|gfedcba +#define EXTRAPOLATE(x, maxV) \ + { \ + (x) = min(((maxV)-1)*2-(x), max((x),-(x)) ); \ + } +#else +#error No extrapolation method +#endif + +#define SRC(_x,_y) convertToWT(((global srcT*)(Src+(_y)*src_step))[_x]) + +#ifdef BORDER_CONSTANT +// CCCCCC|abcdefgh|CCCCCCC +#define ELEM(_x,_y,r_edge,t_edge,const_v) (_x)<0 | (_x) >= (r_edge) | (_y)<0 | (_y) >= (t_edge) ? (const_v) : SRC((_x),(_y)) +#else +#define ELEM(_x,_y,r_edge,t_edge,const_v) SRC((_x),(_y)) +#endif + +#define DST(_x,_y) (((global dstT*)(Dst+dst_offset+(_y)*dst_step))[_x]) + +#define noconvert + +// horizontal and vertical filter kernels +// should be defined on host during compile time to avoid overhead +#define DIG(a) a, +__constant float mat_kernelX[] = { KERNEL_MATRIX_X }; +__constant float mat_kernelY[] = { KERNEL_MATRIX_Y }; + +__kernel void sep_filter(__global uchar* Src, int src_step, int srcOffsetX, int srcOffsetY, int height, int width, + __global uchar* Dst, int dst_step, int dst_offset, int dst_rows, int dst_cols) +{ + // RADIUSX, RADIUSY are filter dimensions + // BLK_X, BLK_Y are local wrogroup sizes + // all these should be defined on host during compile time + // first lsmem array for source pixels used in first pass, + // second lsmemDy for storing first pass results + __local WT lsmem[BLK_Y+2*RADIUSY][BLK_X+2*RADIUSX]; + __local WT lsmemDy[BLK_Y][BLK_X+2*RADIUSX]; + + // get local and global ids - used as image and local memory array indexes + int lix = get_local_id(0); + int liy = get_local_id(1); + + int x = (int)get_global_id(0); + int y = (int)get_global_id(1); + + // calculate pixel position in source image taking image offset into account + int srcX = x + srcOffsetX - RADIUSX; + int srcY = y + srcOffsetY - RADIUSY; + int xb = srcX; + int yb = srcY; + + // extrapolate coordinates, if needed + // and read my own source pixel into local memory + // with account for extra border pixels, which will be read by starting workitems + int clocY = liy; + int cSrcY = srcY; + do + { + int yb = cSrcY; + EXTRAPOLATE(yb, (height)); + + int clocX = lix; + int cSrcX = srcX; + do + { + int xb = cSrcX; + EXTRAPOLATE(xb,(width)); + lsmem[clocY][clocX] = ELEM(xb, yb, (width), (height), 0 ); + + clocX += BLK_X; + cSrcX += BLK_X; + } + while(clocX < BLK_X+(RADIUSX*2)); + + clocY += BLK_Y; + cSrcY += BLK_Y; + } + while (clocY < BLK_Y+(RADIUSY*2)); + barrier(CLK_LOCAL_MEM_FENCE); + + // do vertical filter pass + // and store intermediate results to second local memory array + int i, clocX = lix; + WT sum = 0.0f; + do + { + sum = 0.0f; + for (i=0; i<=2*RADIUSY; i++) + sum = mad(lsmem[liy+i][clocX], mat_kernelY[i], sum); + lsmemDy[liy][clocX] = sum; + clocX += BLK_X; + } + while(clocX < BLK_X+(RADIUSX*2)); + barrier(CLK_LOCAL_MEM_FENCE); + + // if this pixel happened to be out of image borders because of global size rounding, + // then just return + if( x >= dst_cols || y >=dst_rows ) + return; + + // do second horizontal filter pass + // and calculate final result + sum = 0.0f; + for (i=0; i<=2*RADIUSX; i++) + sum = mad(lsmemDy[liy][lix+i], mat_kernelX[i], sum); + + //store result into destination image + DST(x,y) = convertToDstT(sum); +} From b9cdde69911289b45c3686d2eee223f814380c97 Mon Sep 17 00:00:00 2001 From: yash Date: Tue, 18 Mar 2014 08:44:33 +0530 Subject: [PATCH 025/117] edited sample code for mean/cam sihft and fixed an error --- doc/py_tutorials/py_video/py_meanshift/py_meanshift.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/py_tutorials/py_video/py_meanshift/py_meanshift.rst b/doc/py_tutorials/py_video/py_meanshift/py_meanshift.rst index a111311af3..87ece69350 100644 --- a/doc/py_tutorials/py_video/py_meanshift/py_meanshift.rst +++ b/doc/py_tutorials/py_video/py_meanshift/py_meanshift.rst @@ -52,7 +52,7 @@ To use meanshift in OpenCV, first we need to setup the target, find its histogra # set up the ROI for tracking roi = frame[r:r+h, c:c+w] - hsv_roi = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) + hsv_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV) mask = cv2.inRange(hsv_roi, np.array((0., 60.,32.)), np.array((180.,255.,255.))) roi_hist = cv2.calcHist([hsv_roi],[0],mask,[180],[0,180]) cv2.normalize(roi_hist,roi_hist,0,255,cv2.NORM_MINMAX) @@ -127,7 +127,7 @@ It is almost same as meanshift, but it returns a rotated rectangle (that is our # set up the ROI for tracking roi = frame[r:r+h, c:c+w] - hsv_roi = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) + hsv_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV) mask = cv2.inRange(hsv_roi, np.array((0., 60.,32.)), np.array((180.,255.,255.))) roi_hist = cv2.calcHist([hsv_roi],[0],mask,[180],[0,180]) cv2.normalize(roi_hist,roi_hist,0,255,cv2.NORM_MINMAX) From 16869225ffb6029cea0f694b8ee9ffab2eb835bd Mon Sep 17 00:00:00 2001 From: RJ2 Date: Tue, 18 Mar 2014 08:01:18 +0100 Subject: [PATCH 026/117] It's will be better --- doc/tutorials/core/adding_images/adding_images.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/tutorials/core/adding_images/adding_images.rst b/doc/tutorials/core/adding_images/adding_images.rst index e3135693de..601dbc07ef 100644 --- a/doc/tutorials/core/adding_images/adding_images.rst +++ b/doc/tutorials/core/adding_images/adding_images.rst @@ -6,12 +6,12 @@ Adding (blending) two images using OpenCV Goal ===== -In this tutorial you will learn how to: +In this tutorial you will learn: .. container:: enumeratevisibleitemswithsquare - * What is *linear blending* and why it is useful. - * Add two images using :add_weighted:`addWeighted <>` + * what is *linear blending* and why it is useful; + * how to add two images using :add_weighted:`addWeighted <>` Theory ======= From 0470bb0e2958ae9725465fe6ab2767f19c5009fa Mon Sep 17 00:00:00 2001 From: RJ2 Date: Tue, 18 Mar 2014 08:59:53 +0100 Subject: [PATCH 027/117] I have changed one sentence in tutorial, making it more understandable --- doc/tutorials/core/how_to_scan_images/how_to_scan_images.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/tutorials/core/how_to_scan_images/how_to_scan_images.rst b/doc/tutorials/core/how_to_scan_images/how_to_scan_images.rst index ef0f8640ca..b6a18fee88 100644 --- a/doc/tutorials/core/how_to_scan_images/how_to_scan_images.rst +++ b/doc/tutorials/core/how_to_scan_images/how_to_scan_images.rst @@ -18,7 +18,7 @@ We'll seek answers for the following questions: Our test case ============= -Let us consider a simple color reduction method. Using the unsigned char C and C++ type for matrix item storing a channel of pixel may have up to 256 different values. For a three channel image this can allow the formation of way too many colors (16 million to be exact). Working with so many color shades may give a heavy blow to our algorithm performance. However, sometimes it is enough to work with a lot less of them to get the same final result. +Let us consider a simple color reduction method. By using the unsigned char C and C++ type for matrix item storing, a channel of pixel may have up to 256 different values. For a three channel image this can allow the formation of way too many colors (16 million to be exact). Working with so many color shades may give a heavy blow to our algorithm performance. However, sometimes it is enough to work with a lot less of them to get the same final result. In this cases it's common that we make a *color space reduction*. This means that we divide the color space current value with a new input value to end up with fewer colors. For instance every value between zero and nine takes the new value zero, every value between ten and nineteen the value ten and so on. From eebf92ba58f68a7fc0f05c6e37d6e4fb111de151 Mon Sep 17 00:00:00 2001 From: Konstantin Matskevich Date: Tue, 18 Mar 2014 13:19:41 +0400 Subject: [PATCH 028/117] fix for incorrect opencl device selection --- modules/core/src/ocl.cpp | 5 +++-- modules/core/src/umatrix.cpp | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/core/src/ocl.cpp b/modules/core/src/ocl.cpp index 7c4f8de9e0..b8f9db5fb4 100644 --- a/modules/core/src/ocl.cpp +++ b/modules/core/src/ocl.cpp @@ -1410,7 +1410,7 @@ bool useOpenCL() { CoreTLSData* data = coreTlsData.get(); if( data->useOpenCL < 0 ) - data->useOpenCL = (int)haveOpenCL(); + data->useOpenCL = (int)haveOpenCL() && Device::getDefault().ptr() != NULL; return data->useOpenCL > 0; } @@ -1419,7 +1419,7 @@ void setUseOpenCL(bool flag) if( haveOpenCL() ) { CoreTLSData* data = coreTlsData.get(); - data->useOpenCL = flag ? 1 : 0; + data->useOpenCL = (flag && Device::getDefault().ptr() != NULL) ? 1 : 0; } } @@ -2245,6 +2245,7 @@ not_found: std::cerr << deviceTypes[t] << " "; std::cerr << std::endl << " Device name: " << (deviceName.length() == 0 ? "any" : deviceName) << std::endl; + throw cv::Exception(); return NULL; } diff --git a/modules/core/src/umatrix.cpp b/modules/core/src/umatrix.cpp index 44cb3f44b5..d88dda2730 100644 --- a/modules/core/src/umatrix.cpp +++ b/modules/core/src/umatrix.cpp @@ -88,7 +88,7 @@ void UMatData::unlock() MatAllocator* UMat::getStdAllocator() { - if( ocl::haveOpenCL() ) + if( ocl::haveOpenCL() && ocl::useOpenCL() ) return ocl::getOpenCLAllocator(); return Mat::getStdAllocator(); } From b4e4f13f9efdfe2d1f0909d78556d8c865d5f371 Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Wed, 5 Mar 2014 12:31:04 +0400 Subject: [PATCH 029/117] Superres module enabled for Android. GPU samples build fixed for Android. --- cmake/OpenCVModule.cmake | 66 +++++++++----------- modules/superres/CMakeLists.txt | 9 ++- modules/superres/src/btv_l1_gpu.cpp | 2 +- modules/superres/src/frame_source.cpp | 2 +- modules/superres/src/input_array_utility.cpp | 2 +- modules/superres/src/optical_flow.cpp | 2 +- modules/superres/src/precomp.hpp | 2 +- modules/ts/CMakeLists.txt | 2 +- samples/gpu/CMakeLists.txt | 2 +- samples/gpu/brox_optical_flow.cpp | 1 + samples/gpu/opticalflow_nvidia_api.cpp | 1 + samples/gpu/super_resolution.cpp | 2 + 12 files changed, 49 insertions(+), 44 deletions(-) diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake index c9c351113c..e11f5e671f 100644 --- a/cmake/OpenCVModule.cmake +++ b/cmake/OpenCVModule.cmake @@ -27,7 +27,8 @@ # The verbose template for OpenCV module: # # ocv_add_module(modname ) -# ocv_glob_module_sources() or glob them manually and ocv_set_module_sources(...) +# ocv_glob_module_sources(([EXCLUDE_CUDA] ) +# or glob them manually and ocv_set_module_sources(...) # ocv_module_include_directories() # ocv_create_module() # @@ -478,14 +479,20 @@ endmacro() # finds and sets headers and sources for the standard OpenCV module # Usage: -# ocv_glob_module_sources() -macro(ocv_glob_module_sources EXCLUDE_CUDA EXCLUDE_OPENCL) +# ocv_glob_module_sources([EXCLUDE_CUDA] ) +macro(ocv_glob_module_sources) + set(_argn ${ARGN}) + list(FIND _argn "EXCLUDE_CUDA" exclude_cuda) + if(NOT exclude_cuda EQUAL -1) + list(REMOVE_AT _argn ${exclude_cuda}) + endif() + file(GLOB_RECURSE lib_srcs "src/*.cpp") file(GLOB_RECURSE lib_int_hdrs "src/*.hpp" "src/*.h") file(GLOB lib_hdrs "include/opencv2/${name}/*.hpp" "include/opencv2/${name}/*.h") file(GLOB lib_hdrs_detail "include/opencv2/${name}/detail/*.hpp" "include/opencv2/${name}/detail/*.h") - if (NOT ${EXCLUDE_CUDA}) + if (exclude_cuda EQUAL -1) file(GLOB lib_cuda_srcs "src/cuda/*.cu") set(cuda_objs "") set(lib_cuda_hdrs "") @@ -504,26 +511,22 @@ macro(ocv_glob_module_sources EXCLUDE_CUDA EXCLUDE_OPENCL) source_group("Src" FILES ${lib_srcs} ${lib_int_hdrs}) - if (NOT ${EXCLUDE_OPENCL}) - file(GLOB cl_kernels "src/opencl/*.cl") - if(HAVE_opencv_ocl AND cl_kernels) - ocv_include_directories(${OPENCL_INCLUDE_DIRS}) - add_custom_command( - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp" - COMMAND ${CMAKE_COMMAND} -DCL_DIR="${CMAKE_CURRENT_SOURCE_DIR}/src/opencl" -DOUTPUT="${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" -P "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake" - DEPENDS ${cl_kernels} "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake") - source_group("OpenCL" FILES ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp") - list(APPEND lib_srcs ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp") - endif() + file(GLOB cl_kernels "src/opencl/*.cl") + if(HAVE_opencv_ocl AND cl_kernels) + ocv_include_directories(${OPENCL_INCLUDE_DIRS}) + add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp" + COMMAND ${CMAKE_COMMAND} -DCL_DIR="${CMAKE_CURRENT_SOURCE_DIR}/src/opencl" -DOUTPUT="${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" -P "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake" + DEPENDS ${cl_kernels} "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake") + source_group("OpenCL" FILES ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp") + list(APPEND lib_srcs ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp") endif() source_group("Include" FILES ${lib_hdrs}) source_group("Include\\detail" FILES ${lib_hdrs_detail}) - message(":${EXCLUDE_CUDA}: ${lib_cuda_srcs}") - - ocv_set_module_sources(${ARGN} HEADERS ${lib_hdrs} ${lib_hdrs_detail} - SOURCES ${lib_srcs} ${lib_int_hdrs} ${cuda_objs} ${lib_cuda_srcs} ${lib_cuda_hdrs}) + ocv_set_module_sources(${_argn} HEADERS ${lib_hdrs} ${lib_hdrs_detail} + SOURCES ${lib_srcs} ${lib_int_hdrs} ${cuda_objs} ${lib_cuda_srcs} ${lib_cuda_hdrs}) endmacro() # creates OpenCV module in current folder @@ -622,27 +625,20 @@ endmacro() # short command for adding simple OpenCV module # see ocv_add_module for argument details # Usage: -# ocv_define_module(module_name [INTERNAL] [REQUIRED] [] [OPTIONAL ]) +# ocv_define_module(module_name [INTERNAL] [EXCLUDE_CUDA] [REQUIRED] [] [OPTIONAL ]) macro(ocv_define_module module_name) - set(_tmp_argn ${ARGN}) - set(exclude_cuda 0) - set(exclude_opencl 0) - set(argv0 ${ARGV1}) - set(argv1 ${ARGV2}) - set(argv2 ${ARGV3}) - foreach(i RANGE 0 2) - if("${argv${i}}" STREQUAL "EXCLUDE_CUDA") - set(exclude_cuda 1) - list(REMOVE_AT _tmp_argn ${i}) - elseif ("${argv${i}}" STREQUAL "EXCLUDE_OPENCL") - set(exclude_opencl 1) - list(REMOVE_AT _tmp_argn ${i}) + set(_argn ${ARGN}) + set(exclude_cuda "") + foreach(arg ${_argn}) + if("${arg}" STREQUAL "EXCLUDE_CUDA") + set(exclude_cuda "${arg}") + list(REMOVE_ITEM _argn ${arg}) endif() endforeach() - ocv_add_module(${module_name} ${_tmp_argn}) + ocv_add_module(${module_name} ${_argn}) ocv_module_include_directories() - ocv_glob_module_sources(${exclude_cuda} ${exclude_opencl}) + ocv_glob_module_sources(${exclude_cuda}) ocv_create_module() ocv_add_precompiled_headers(${the_module}) diff --git a/modules/superres/CMakeLists.txt b/modules/superres/CMakeLists.txt index 82c61cccb4..8e3d7b2f2d 100644 --- a/modules/superres/CMakeLists.txt +++ b/modules/superres/CMakeLists.txt @@ -1,7 +1,12 @@ -if(ANDROID OR IOS) +if(IOS) ocv_module_disable(superres) endif() set(the_description "Super Resolution") ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4127 -Wundef -Wshadow) -ocv_define_module(superres opencv_imgproc opencv_video OPTIONAL opencv_gpu opencv_highgui opencv_ocl ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY}) +if(ENABLE_DYNAMIC_CUDA) + add_definitions(-DDYNAMIC_CUDA_SUPPORT) + ocv_define_module(superres EXCLUDE_CUDA opencv_imgproc opencv_video OPTIONAL opencv_highgui opencv_ocl) +else() + ocv_define_module(superres opencv_imgproc opencv_video OPTIONAL opencv_gpu opencv_highgui opencv_ocl ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY}) +endif() diff --git a/modules/superres/src/btv_l1_gpu.cpp b/modules/superres/src/btv_l1_gpu.cpp index b93bcfd577..2f40fa3771 100644 --- a/modules/superres/src/btv_l1_gpu.cpp +++ b/modules/superres/src/btv_l1_gpu.cpp @@ -51,7 +51,7 @@ using namespace cv::gpu; using namespace cv::superres; using namespace cv::superres::detail; -#if !defined(HAVE_CUDA) || !defined(HAVE_OPENCV_GPU) +#if !defined(HAVE_CUDA) || !defined(HAVE_OPENCV_GPU) || defined(DYNAMIC_CUDA_SUPPORT) Ptr cv::superres::createSuperResolution_BTVL1_GPU() { diff --git a/modules/superres/src/frame_source.cpp b/modules/superres/src/frame_source.cpp index 20e45d9518..5f59a98b80 100644 --- a/modules/superres/src/frame_source.cpp +++ b/modules/superres/src/frame_source.cpp @@ -200,7 +200,7 @@ Ptr cv::superres::createFrameSource_Camera(int deviceId) ////////////////////////////////////////////////////// // VideoFrameSource_GPU -#ifndef HAVE_OPENCV_GPU +#if !defined(HAVE_OPENCV_GPU) || defined(DYNAMIC_CUDA_SUPPORT) Ptr cv::superres::createFrameSource_Video_GPU(const string& fileName) { diff --git a/modules/superres/src/input_array_utility.cpp b/modules/superres/src/input_array_utility.cpp index 075cf95144..10fc1c96ed 100644 --- a/modules/superres/src/input_array_utility.cpp +++ b/modules/superres/src/input_array_utility.cpp @@ -207,7 +207,7 @@ namespace switch (src.kind()) { case _InputArray::GPU_MAT: - #ifdef HAVE_OPENCV_GPU + #if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT) gpu::cvtColor(src.getGpuMat(), dst.getGpuMatRef(), code, cn); #else CV_Error(CV_StsNotImplemented, "The called functionality is disabled for current build or platform"); diff --git a/modules/superres/src/optical_flow.cpp b/modules/superres/src/optical_flow.cpp index e1e8a10275..617f83a5e1 100644 --- a/modules/superres/src/optical_flow.cpp +++ b/modules/superres/src/optical_flow.cpp @@ -344,7 +344,7 @@ Ptr cv::superres::createOptFlow_DualTVL1() /////////////////////////////////////////////////////////////////// // GpuOpticalFlow -#ifndef HAVE_OPENCV_GPU +#if !defined(HAVE_OPENCV_GPU) || defined(DYNAMIC_CUDA_SUPPORT) Ptr cv::superres::createOptFlow_Farneback_GPU() { diff --git a/modules/superres/src/precomp.hpp b/modules/superres/src/precomp.hpp index 4cf49411b6..65fc7c8502 100644 --- a/modules/superres/src/precomp.hpp +++ b/modules/superres/src/precomp.hpp @@ -56,7 +56,7 @@ #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/video/tracking.hpp" -#ifdef HAVE_OPENCV_GPU +#if defined(HAVE_OPENCV_GPU) && !defined(DYNAMIC_CUDA_SUPPORT) #include "opencv2/gpu/gpu.hpp" #ifdef HAVE_CUDA #include "opencv2/gpu/stream_accessor.hpp" diff --git a/modules/ts/CMakeLists.txt b/modules/ts/CMakeLists.txt index dcd3e1563b..bb56da2d98 100644 --- a/modules/ts/CMakeLists.txt +++ b/modules/ts/CMakeLists.txt @@ -11,7 +11,7 @@ ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef) ocv_add_module(ts opencv_core opencv_features2d) -ocv_glob_module_sources(0 0) +ocv_glob_module_sources() ocv_module_include_directories() ocv_create_module() diff --git a/samples/gpu/CMakeLists.txt b/samples/gpu/CMakeLists.txt index 8fa539473b..d25c3a6b5d 100644 --- a/samples/gpu/CMakeLists.txt +++ b/samples/gpu/CMakeLists.txt @@ -41,7 +41,7 @@ if(BUILD_EXAMPLES AND OCV_DEPENDENCIES_FOUND) target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${OPENCV_GPU_SAMPLES_REQUIRED_DEPS}) - if(HAVE_CUDA) + if(HAVE_CUDA AND NOT ANDROID) target_link_libraries(${the_target} ${CUDA_CUDA_LIBRARY}) endif() diff --git a/samples/gpu/brox_optical_flow.cpp b/samples/gpu/brox_optical_flow.cpp index 722e19f02f..7cd5089b41 100644 --- a/samples/gpu/brox_optical_flow.cpp +++ b/samples/gpu/brox_optical_flow.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include "cvconfig.h" #include "opencv2/core/core.hpp" diff --git a/samples/gpu/opticalflow_nvidia_api.cpp b/samples/gpu/opticalflow_nvidia_api.cpp index 05a37ef69d..31ee569788 100644 --- a/samples/gpu/opticalflow_nvidia_api.cpp +++ b/samples/gpu/opticalflow_nvidia_api.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include "cvconfig.h" #include diff --git a/samples/gpu/super_resolution.cpp b/samples/gpu/super_resolution.cpp index 6efd24144c..85cb6cff1c 100644 --- a/samples/gpu/super_resolution.cpp +++ b/samples/gpu/super_resolution.cpp @@ -1,6 +1,8 @@ #include #include #include +#include + #include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" From a43ef9a6cd63275cca73963065c8f20b4806c83d Mon Sep 17 00:00:00 2001 From: Koji Miyazato Date: Tue, 18 Mar 2014 23:29:30 +0900 Subject: [PATCH 030/117] WriteStructContext treats state of fs --- .../core/include/opencv2/core/persistence.hpp | 3 +-- modules/core/src/persistence.cpp | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/modules/core/include/opencv2/core/persistence.hpp b/modules/core/include/opencv2/core/persistence.hpp index e00c849400..93f7381bfa 100644 --- a/modules/core/include/opencv2/core/persistence.hpp +++ b/modules/core/include/opencv2/core/persistence.hpp @@ -697,9 +697,8 @@ void write(FileStorage& fs, const String& name, const Range& r ) template static inline void write( FileStorage& fs, const String& name, const std::vector<_Tp>& vec ) { - fs << (DataType<_Tp>::fmt != 0 ? "[:" : "["); + internal::WriteStructContext ws(fs, name, FileNode::SEQ+(DataType<_Tp>::fmt != 0 ? FileNode::FLOW : 0)); write(fs, vec); - fs << "]"; } static inline diff --git a/modules/core/src/persistence.cpp b/modules/core/src/persistence.cpp index 3755eccf75..af6a23cd17 100644 --- a/modules/core/src/persistence.cpp +++ b/modules/core/src/persistence.cpp @@ -5486,11 +5486,28 @@ internal::WriteStructContext::WriteStructContext(FileStorage& _fs, { cvStartWriteStruct(**fs, !name.empty() ? name.c_str() : 0, flags, !typeName.empty() ? typeName.c_str() : 0); + if ((flags & FileNode::TYPE_MASK) == FileNode::SEQ) + { + fs->elname = String(); + fs->state = FileStorage::VALUE_EXPECTED; + fs->structs.push_back('['); + } + else + { + fs->elname = String(); + fs->state = FileStorage::NAME_EXPECTED + FileStorage::INSIDE_MAP; + fs->structs.push_back('{'); + } } internal::WriteStructContext::~WriteStructContext() { cvEndWriteStruct(**fs); + fs->structs.pop_back(); + fs->state = fs->structs.empty() || fs->structs.back() == '{' ? + FileStorage::NAME_EXPECTED + FileStorage::INSIDE_MAP : + FileStorage::VALUE_EXPECTED; + fs->elname = String(); } From 0a16d93e1d2b8c23df77c769589cfc7982c68af1 Mon Sep 17 00:00:00 2001 From: Firat Kalaycilar Date: Tue, 18 Mar 2014 17:26:24 +0200 Subject: [PATCH 031/117] Fixed an issue with weight assignment causing the resulting GMM weights to be unsorted in the CUDA and OCL versions of BackgroundSubtractorMOG2 --- modules/gpu/src/cuda/bgfg_mog.cu | 5 +++-- modules/ocl/src/opencl/bgfg_mog.cl | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/modules/gpu/src/cuda/bgfg_mog.cu b/modules/gpu/src/cuda/bgfg_mog.cu index 89ad5ff0b5..055c9e041e 100644 --- a/modules/gpu/src/cuda/bgfg_mog.cu +++ b/modules/gpu/src/cuda/bgfg_mog.cu @@ -489,7 +489,7 @@ namespace cv { namespace gpu { namespace device { //need only weight if fit is found float weight = alpha1 * gmm_weight(mode * frame.rows + y, x) + prune; - + int swap_count = 0; //fit not found yet if (!fitsPDF) { @@ -540,6 +540,7 @@ namespace cv { namespace gpu { namespace device if (weight < gmm_weight((i - 1) * frame.rows + y, x)) break; + swap_count++; //swap one up swap(gmm_weight, x, y, i - 1, frame.rows); swap(gmm_variance, x, y, i - 1, frame.rows); @@ -557,7 +558,7 @@ namespace cv { namespace gpu { namespace device nmodes--; } - gmm_weight(mode * frame.rows + y, x) = weight; //update weight by the calculated value + gmm_weight((mode - swap_count) * frame.rows + y, x) = weight; //update weight by the calculated value totalWeight += weight; } diff --git a/modules/ocl/src/opencl/bgfg_mog.cl b/modules/ocl/src/opencl/bgfg_mog.cl index 6a95316f0f..a7479b929c 100644 --- a/modules/ocl/src/opencl/bgfg_mog.cl +++ b/modules/ocl/src/opencl/bgfg_mog.cl @@ -376,7 +376,7 @@ __kernel void mog2_kernel(__global T_FRAME * frame, __global int* fgmask, __glob for (int mode = 0; mode < nmodes; ++mode) { float _weight = alpha1 * weight[(mode * frame_row + y) * weight_step + x] + prune; - + int swap_count = 0; if (!fitsPDF) { float var = variance[(mode * frame_row + y) * var_step + x]; @@ -404,6 +404,7 @@ __kernel void mog2_kernel(__global T_FRAME * frame, __global int* fgmask, __glob { if (_weight < weight[((i - 1) * frame_row + y) * weight_step + x]) break; + swap_count++; swap(weight, x, y, i - 1, frame_row, weight_step); swap(variance, x, y, i - 1, frame_row, var_step); #if defined (CN1) @@ -421,7 +422,7 @@ __kernel void mog2_kernel(__global T_FRAME * frame, __global int* fgmask, __glob nmodes--; } - weight[(mode * frame_row + y) * weight_step + x] = _weight; //update weight by the calculated value + weight[((mode - swap_count) * frame_row + y) * weight_step + x] = _weight; //update weight by the calculated value totalWeight += _weight; } From 8d97d0d6313d6e1e60ff91ad088e4a69a52bd1a5 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Tue, 18 Mar 2014 19:31:37 +0400 Subject: [PATCH 032/117] added 3-channels support to cv::flip --- modules/core/src/copy.cpp | 7 +++-- modules/core/src/opencl/flip.cl | 55 ++++++++++++++++----------------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/modules/core/src/copy.cpp b/modules/core/src/copy.cpp index e3e959c950..5ac5f22c58 100644 --- a/modules/core/src/copy.cpp +++ b/modules/core/src/copy.cpp @@ -482,9 +482,9 @@ enum { FLIP_COLS = 1 << 0, FLIP_ROWS = 1 << 1, FLIP_BOTH = FLIP_ROWS | FLIP_COLS static bool ocl_flip(InputArray _src, OutputArray _dst, int flipCode ) { CV_Assert(flipCode >= - 1 && flipCode <= 1); - int type = _src.type(), cn = CV_MAT_CN(type), flipType; + int type = _src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type), flipType; - if (cn > 4 || cn == 3) + if (cn > 4) return false; const char * kernelName; @@ -506,7 +506,8 @@ static bool ocl_flip(InputArray _src, OutputArray _dst, int flipCode ) } ocl::Kernel k(kernelName, ocl::core::flip_oclsrc, - format( "-D type=%s", ocl::memopTypeToStr(type))); + format( "-D T=%s -D T1=%s -D cn=%d", ocl::memopTypeToStr(type), + ocl::memopTypeToStr(depth), cn)); if (k.empty()) return false; diff --git a/modules/core/src/opencl/flip.cl b/modules/core/src/opencl/flip.cl index 0c874dbe6f..bacfe7adfb 100644 --- a/modules/core/src/opencl/flip.cl +++ b/modules/core/src/opencl/flip.cl @@ -39,10 +39,18 @@ // //M*/ -#define sizeoftype ((int)sizeof(type)) +#if cn != 3 +#define loadpix(addr) *(__global const T *)(addr) +#define storepix(val, addr) *(__global T *)(addr) = val +#define TSIZE (int)sizeof(T) +#else +#define loadpix(addr) vload3(0, (__global const T1 *)(addr)) +#define storepix(val, addr) vstore3(val, 0, (__global T1 *)(addr)) +#define TSIZE ((int)sizeof(T1)*3) +#endif -__kernel void arithm_flip_rows(__global const uchar* srcptr, int srcstep, int srcoffset, - __global uchar* dstptr, int dststep, int dstoffset, +__kernel void arithm_flip_rows(__global const uchar * srcptr, int src_step, int src_offset, + __global uchar * dstptr, int dst_step, int dst_offset, int rows, int cols, int thread_rows, int thread_cols) { int x = get_global_id(0); @@ -50,19 +58,16 @@ __kernel void arithm_flip_rows(__global const uchar* srcptr, int srcstep, int sr if (x < cols && y < thread_rows) { - __global const type* src0 = (__global const type*)(srcptr + mad24(y, srcstep, mad24(x, sizeoftype, srcoffset))); - __global const type* src1 = (__global const type*)(srcptr + mad24(rows - y - 1, srcstep, mad24(x, sizeoftype, srcoffset))); + T src0 = loadpix(srcptr + mad24(y, src_step, mad24(x, TSIZE, src_offset))); + T src1 = loadpix(srcptr + mad24(rows - y - 1, src_step, mad24(x, TSIZE, src_offset))); - __global type* dst0 = (__global type*)(dstptr + mad24(y, dststep, mad24(x, sizeoftype, dstoffset))); - __global type* dst1 = (__global type*)(dstptr + mad24(rows - y - 1, dststep, mad24(x, sizeoftype, dstoffset))); - - dst0[0] = src1[0]; - dst1[0] = src0[0]; + storepix(src1, dstptr + mad24(y, dst_step, mad24(x, TSIZE, dst_offset))); + storepix(src0, dstptr + mad24(rows - y - 1, dst_step, mad24(x, TSIZE, dst_offset))); } } -__kernel void arithm_flip_rows_cols(__global const uchar* srcptr, int srcstep, int srcoffset, - __global uchar* dstptr, int dststep, int dstoffset, +__kernel void arithm_flip_rows_cols(__global const uchar * srcptr, int src_step, int src_offset, + __global uchar * dstptr, int dst_step, int dst_offset, int rows, int cols, int thread_rows, int thread_cols) { int x = get_global_id(0); @@ -71,19 +76,16 @@ __kernel void arithm_flip_rows_cols(__global const uchar* srcptr, int srcstep, i if (x < cols && y < thread_rows) { int x1 = cols - x - 1; - __global const type* src0 = (__global const type*)(srcptr + mad24(y, srcstep, mad24(x, sizeoftype, srcoffset))); - __global const type* src1 = (__global const type*)(srcptr + mad24(rows - y - 1, srcstep, mad24(x1, sizeoftype, srcoffset))); - - __global type* dst0 = (__global type*)(dstptr + mad24(rows - y - 1, dststep, mad24(x1, sizeoftype, dstoffset))); - __global type* dst1 = (__global type*)(dstptr + mad24(y, dststep, mad24(x, sizeoftype, dstoffset))); + T src0 = loadpix(srcptr + mad24(y, src_step, mad24(x, TSIZE, src_offset))); + T src1 = loadpix(srcptr + mad24(rows - y - 1, src_step, mad24(x1, TSIZE, src_offset))); - dst0[0] = src0[0]; - dst1[0] = src1[0]; + storepix(src0, dstptr + mad24(rows - y - 1, dst_step, mad24(x1, TSIZE, dst_offset))); + storepix(src1, dstptr + mad24(y, dst_step, mad24(x, TSIZE, dst_offset))); } } -__kernel void arithm_flip_cols(__global const uchar* srcptr, int srcstep, int srcoffset, - __global uchar* dstptr, int dststep, int dstoffset, +__kernel void arithm_flip_cols(__global const uchar * srcptr, int src_step, int src_offset, + __global uchar * dstptr, int dst_step, int dst_offset, int rows, int cols, int thread_rows, int thread_cols) { int x = get_global_id(0); @@ -92,13 +94,10 @@ __kernel void arithm_flip_cols(__global const uchar* srcptr, int srcstep, int sr if (x < thread_cols && y < rows) { int x1 = cols - x - 1; - __global const type* src0 = (__global const type*)(srcptr + mad24(y, srcstep, mad24(x, sizeoftype, srcoffset))); - __global const type* src1 = (__global const type*)(srcptr + mad24(y, srcstep, mad24(x1, sizeoftype, srcoffset))); - - __global type* dst0 = (__global type*)(dstptr + mad24(y, dststep, mad24(x1, sizeoftype, dstoffset))); - __global type* dst1 = (__global type*)(dstptr + mad24(y, dststep, mad24(x, sizeoftype, dstoffset))); + T src0 = loadpix(srcptr + mad24(y, src_step, mad24(x, TSIZE, src_offset))); + T src1 = loadpix(srcptr + mad24(y, src_step, mad24(x1, TSIZE, src_offset))); - dst1[0] = src1[0]; - dst0[0] = src0[0]; + storepix(src0, dstptr + mad24(y, dst_step, mad24(x1, TSIZE, dst_offset))); + storepix(src1, dstptr + mad24(y, dst_step, mad24(x, TSIZE, dst_offset))); } } From d1cfcfcafd41d81522f8c4d3b64e62d3e7ecb9dc Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Tue, 18 Mar 2014 20:02:04 +0400 Subject: [PATCH 033/117] added 3-channels support to morphology operations --- modules/imgproc/src/morph.cpp | 54 ++++------ modules/imgproc/src/opencl/morph.cl | 117 +++++++++++----------- modules/imgproc/test/ocl/test_filters.cpp | 16 +-- 3 files changed, 86 insertions(+), 101 deletions(-) diff --git a/modules/imgproc/src/morph.cpp b/modules/imgproc/src/morph.cpp index ac958fc691..b4011eecee 100644 --- a/modules/imgproc/src/morph.cpp +++ b/modules/imgproc/src/morph.cpp @@ -42,7 +42,6 @@ #include "precomp.hpp" #include -#include #include "opencl_kernels.hpp" /****************************************************************************************\ @@ -1291,9 +1290,10 @@ static bool ocl_morphology_op(InputArray _src, OutputArray _dst, Mat kernel, { CV_Assert(op == MORPH_ERODE || op == MORPH_DILATE); + int type = _src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type); bool doubleSupport = ocl::Device::getDefault().doubleFPConfig() > 0; - if (_src.depth() == CV_64F && !doubleSupport) + if (depth == CV_64F && !doubleSupport) return false; UMat kernel8U; @@ -1324,13 +1324,14 @@ static bool ocl_morphology_op(InputArray _src, OutputArray _dst, Mat kernel, return false; static const char * const op2str[] = { "ERODE", "DILATE" }; - String buildOptions = format("-D RADIUSX=%d -D RADIUSY=%d -D LSIZE0=%d -D LSIZE1=%d -D %s%s%s -D GENTYPE=%s -D DEPTH_%d", - anchor.x, anchor.y, (int)localThreads[0], (int)localThreads[1], op2str[op], + String buildOptions = format("-D RADIUSX=%d -D RADIUSY=%d -D LSIZE0=%d -D LSIZE1=%d -D %s%s%s" + " -D T=%s -D DEPTH_%d -D cn=%d -D T1=%s", anchor.x, anchor.y, + (int)localThreads[0], (int)localThreads[1], op2str[op], doubleSupport ? " -D DOUBLE_SUPPORT" : "", rectKernel ? " -D RECTKERNEL" : "", - ocl::typeToStr(_src.type()), _src.depth() ); + ocl::typeToStr(_src.type()), _src.depth(), cn, ocl::typeToStr(depth)); std::vector kernels; - for (int i = 0; i= (r_edge) ? (elem1) : (elem2) -__kernel void morph(__global const uchar * restrict srcptr, int src_step, int src_offset, +// BORDER_CONSTANT: iiiiii|abcdefgh|iiiiiii +#define ELEM(i, l_edge, r_edge, elem1, elem2) (i) < (l_edge) | (i) >= (r_edge) ? (elem1) : (elem2) + +__kernel void morph(__global const uchar * srcptr, int src_step, int src_offset, __global uchar * dstptr, int dst_step, int dst_offset, - int src_offset_x, int src_offset_y, - int cols, int rows, - __constant uchar * mat_kernel, - int src_whole_cols, int src_whole_rows) + int src_offset_x, int src_offset_y, int cols, int rows, + __constant uchar * mat_kernel, int src_whole_cols, int src_whole_rows) { - int l_x = get_local_id(0); - int l_y = get_local_id(1); - int x = get_group_id(0)*LSIZE0; - int y = get_group_id(1)*LSIZE1; - int start_x = x+src_offset_x-RADIUSX; - int end_x = x + src_offset_x+LSIZE0+RADIUSX; - int width = end_x -(x+src_offset_x-RADIUSX)+1; - int start_y = y+src_offset_y-RADIUSY; - int point1 = mad24(l_y,LSIZE0,l_x); - int point2 = point1 + LSIZE0*LSIZE1; - int tl_x = point1 % width; - int tl_y = point1 / width; - int tl_x2 = point2 % width; - int tl_y2 = point2 / width; - int cur_x = start_x + tl_x; - int cur_y = start_y + tl_y; - int cur_x2 = start_x + tl_x2; - int cur_y2 = start_y + tl_y2; - int start_addr = mad24(cur_y,src_step, cur_x*(int)sizeof(GENTYPE)); - int start_addr2 = mad24(cur_y2,src_step, cur_x2*(int)sizeof(GENTYPE)); - GENTYPE temp0,temp1; - __local GENTYPE LDS_DAT[2*LSIZE1*LSIZE0]; + int gidx = get_global_id(0), gidy = get_global_id(1); + int l_x = get_local_id(0), l_y = get_local_id(1); + int x = get_group_id(0) * LSIZE0, y = get_group_id(1) * LSIZE1; + int start_x = x + src_offset_x - RADIUSX; + int end_x = x + src_offset_x + LSIZE0 + RADIUSX; + int width = end_x - (x + src_offset_x - RADIUSX) + 1; + int start_y = y + src_offset_y - RADIUSY; + int point1 = mad24(l_y, LSIZE0, l_x); + int point2 = point1 + LSIZE0 * LSIZE1; + int tl_x = point1 % width, tl_y = point1 / width; + int tl_x2 = point2 % width, tl_y2 = point2 / width; + int cur_x = start_x + tl_x, cur_y = start_y + tl_y; + int cur_x2 = start_x + tl_x2, cur_y2 = start_y + tl_y2; + int start_addr = mad24(cur_y, src_step, cur_x * TSIZE); + int start_addr2 = mad24(cur_y2, src_step, cur_x2 * TSIZE); + + __local T LDS_DAT[2*LSIZE1*LSIZE0]; - int end_addr = mad24(src_whole_rows - 1,src_step,src_whole_cols*(int)sizeof(GENTYPE)); - //read pixels from src - start_addr = ((start_addr < end_addr) && (start_addr > 0)) ? start_addr : 0; - start_addr2 = ((start_addr2 < end_addr) && (start_addr2 > 0)) ? start_addr2 : 0; - __global const GENTYPE * src; - src = (__global const GENTYPE *)(srcptr+start_addr); - temp0 = src[0]; - src = (__global const GENTYPE *)(srcptr+start_addr2); - temp1 = src[0]; - //judge if read out of boundary - temp0= ELEM(cur_x,0,src_whole_cols,(GENTYPE)VAL,temp0); - temp0= ELEM(cur_y,0,src_whole_rows,(GENTYPE)VAL,temp0); + // read pixels from src + int end_addr = mad24(src_whole_rows - 1, src_step, src_whole_cols * TSIZE); + start_addr = start_addr < end_addr && start_addr > 0 ? start_addr : 0; + start_addr2 = start_addr2 < end_addr && start_addr2 > 0 ? start_addr2 : 0; - temp1= ELEM(cur_x2,0,src_whole_cols,(GENTYPE)VAL,temp1); - temp1= ELEM(cur_y2,0,src_whole_rows,(GENTYPE)VAL,temp1); + T temp0 = loadpix(srcptr + start_addr); + T temp1 = loadpix(srcptr + start_addr2); + + // judge if read out of boundary + temp0 = ELEM(cur_x, 0, src_whole_cols, (T)(VAL),temp0); + temp0 = ELEM(cur_y, 0, src_whole_rows, (T)(VAL),temp0); + + temp1 = ELEM(cur_x2, 0, src_whole_cols, (T)(VAL), temp1); + temp1 = ELEM(cur_y2, 0, src_whole_rows, (T)(VAL), temp1); LDS_DAT[point1] = temp0; LDS_DAT[point2] = temp1; barrier(CLK_LOCAL_MEM_FENCE); - GENTYPE res = (GENTYPE)VAL; - for(int i=0; i<2*RADIUSY+1; i++) - for(int j=0; j<2*RADIUSX+1; j++) + + T res = (T)(VAL); + for (int i = 0, sizey = 2 * RADIUSY + 1; i < sizey; i++) + for (int j = 0, sizex = 2 * RADIUSX + 1; j < sizex; j++) { res = #ifndef RECTKERNEL mat_kernel[i*(2*RADIUSX+1)+j] ? #endif - MORPH_OP(res,LDS_DAT[mad24(l_y+i,width,l_x+j)]) + MORPH_OP(res, LDS_DAT[mad24(l_y + i, width, l_x + j)]) #ifndef RECTKERNEL - :res + : res #endif ; } - int gidx = get_global_id(0); - int gidy = get_global_id(1); - if(gidx Date: Tue, 18 Mar 2014 19:42:04 +0400 Subject: [PATCH 034/117] added 3-channels support to cv::setIdentity --- modules/core/src/matrix.cpp | 10 +++++----- modules/core/src/opencl/set_identity.cl | 19 +++++++++++++++---- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp index db1ce760f3..82d177eda4 100644 --- a/modules/core/src/matrix.cpp +++ b/modules/core/src/matrix.cpp @@ -2679,17 +2679,17 @@ namespace cv { static bool ocl_setIdentity( InputOutputArray _m, const Scalar& s ) { - int type = _m.type(), cn = CV_MAT_CN(type); - if (cn == 3) - return false; + int type = _m.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type), + sctype = CV_MAKE_TYPE(depth, cn == 3 ? 4 : cn); ocl::Kernel k("setIdentity", ocl::core::set_identity_oclsrc, - format("-D T=%s", ocl::memopTypeToStr(type))); + format("-D T=%s -D T1=%s -D cn=%d -D ST=%s", ocl::memopTypeToStr(type), + ocl::memopTypeToStr(depth), cn, ocl::memopTypeToStr(sctype))); if (k.empty()) return false; UMat m = _m.getUMat(); - k.args(ocl::KernelArg::WriteOnly(m), ocl::KernelArg::Constant(Mat(1, 1, type, s))); + k.args(ocl::KernelArg::WriteOnly(m), ocl::KernelArg::Constant(Mat(1, 1, sctype, s))); size_t globalsize[2] = { m.cols, m.rows }; return k.run(2, globalsize, NULL, false); diff --git a/modules/core/src/opencl/set_identity.cl b/modules/core/src/opencl/set_identity.cl index d63ce793db..0e8f1424fb 100644 --- a/modules/core/src/opencl/set_identity.cl +++ b/modules/core/src/opencl/set_identity.cl @@ -43,17 +43,28 @@ // //M*/ +#if cn != 3 +#define loadpix(addr) *(__global const T *)(addr) +#define storepix(val, addr) *(__global T *)(addr) = val +#define TSIZE (int)sizeof(T) +#define scalar scalar_ +#else +#define loadpix(addr) vload3(0, (__global const T1 *)(addr)) +#define storepix(val, addr) vstore3(val, 0, (__global T1 *)(addr)) +#define TSIZE ((int)sizeof(T1)*3) +#define scalar (T)(scalar_.x, scalar_.y, scalar_.z) +#endif + __kernel void setIdentity(__global uchar * srcptr, int src_step, int src_offset, int rows, int cols, - T scalar) + ST scalar_) { int x = get_global_id(0); int y = get_global_id(1); if (x < cols && y < rows) { - int src_index = mad24(y, src_step, mad24(x, (int)sizeof(T), src_offset)); - __global T * src = (__global T *)(srcptr + src_index); + int src_index = mad24(y, src_step, mad24(x, TSIZE, src_offset)); - src[0] = x == y ? scalar : (T)(0); + storepix(x == y ? scalar : (T)(0), srcptr + src_index); } } From f9f730c426f312259cc49a3d5b6395e3bdb355db Mon Sep 17 00:00:00 2001 From: Konstantin Matskevich Date: Wed, 19 Mar 2014 12:14:48 +0400 Subject: [PATCH 035/117] update error message --- modules/core/src/ocl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/core/src/ocl.cpp b/modules/core/src/ocl.cpp index b8f9db5fb4..f048942bfa 100644 --- a/modules/core/src/ocl.cpp +++ b/modules/core/src/ocl.cpp @@ -2245,7 +2245,7 @@ not_found: std::cerr << deviceTypes[t] << " "; std::cerr << std::endl << " Device name: " << (deviceName.length() == 0 ? "any" : deviceName) << std::endl; - throw cv::Exception(); + CV_Error(CL_INVALID_DEVICE, "Requested OpenCL device is not found"); return NULL; } From b73490f86c32dc521df466af420446e0ccdf5919 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Tue, 18 Mar 2014 16:02:25 +0400 Subject: [PATCH 036/117] eliminated restriction src[i].channels() == 1 in cv::merge --- modules/core/src/convert.cpp | 36 +++-- modules/core/src/opencl/split_merge.cl | 2 +- modules/core/test/ocl/test_arithm.cpp | 96 +++++++------ modules/core/test/ocl/test_channels.cpp | 128 ++++++++++-------- modules/core/test/ocl/test_dft.cpp | 16 +-- modules/core/test/ocl/test_gemm.cpp | 16 +-- .../core/test/ocl/test_matrix_operation.cpp | 22 +-- modules/imgproc/test/ocl/test_accumulate.cpp | 16 +-- modules/imgproc/test/ocl/test_blend.cpp | 24 ++-- modules/imgproc/test/ocl/test_boxfilter.cpp | 13 +- modules/imgproc/test/ocl/test_canny.cpp | 8 +- modules/imgproc/test/ocl/test_color.cpp | 14 +- modules/imgproc/test/ocl/test_filter2d.cpp | 8 +- modules/imgproc/test/ocl/test_filters.cpp | 18 +-- modules/imgproc/test/ocl/test_gftt.cpp | 4 +- modules/imgproc/test/ocl/test_histogram.cpp | 20 +-- modules/imgproc/test/ocl/test_imgproc.cpp | 48 +++---- .../imgproc/test/ocl/test_match_template.cpp | 12 +- .../imgproc/test/ocl/test_medianfilter.cpp | 8 +- modules/imgproc/test/ocl/test_pyramids.cpp | 8 +- modules/imgproc/test/ocl/test_sepfilter2D.cpp | 8 +- modules/imgproc/test/ocl/test_warp.cpp | 34 ++--- modules/photo/test/ocl/test_denoising.cpp | 12 +- modules/ts/include/opencv2/ts/ocl_test.hpp | 74 ++++++---- modules/ts/src/ocl_test.cpp | 8 +- modules/video/test/ocl/test_bgfg_mog2.cpp | 4 +- modules/video/test/ocl/test_motempl.cpp | 10 +- .../video/test/ocl/test_optflow_farneback.cpp | 4 +- 28 files changed, 358 insertions(+), 313 deletions(-) diff --git a/modules/core/src/convert.cpp b/modules/core/src/convert.cpp index 0139f6a5bb..cd5cf9b733 100644 --- a/modules/core/src/convert.cpp +++ b/modules/core/src/convert.cpp @@ -415,42 +415,54 @@ namespace cv { static bool ocl_merge( InputArrayOfArrays _mv, OutputArray _dst ) { - std::vector src; + std::vector src, ksrc; _mv.getUMatVector(src); CV_Assert(!src.empty()); int type = src[0].type(), depth = CV_MAT_DEPTH(type); Size size = src[0].size(); - size_t srcsize = src.size(); - for (size_t i = 0; i < srcsize; ++i) + for (size_t i = 0, srcsize = src.size(); i < srcsize; ++i) { - int itype = src[i].type(), icn = CV_MAT_CN(itype), idepth = CV_MAT_DEPTH(itype); - if (src[i].dims > 2 || icn != 1) + int itype = src[i].type(), icn = CV_MAT_CN(itype), idepth = CV_MAT_DEPTH(itype), + esz1 = CV_ELEM_SIZE1(idepth); + if (src[i].dims > 2) return false; + CV_Assert(size == src[i].size() && depth == idepth); + + for (int cn = 0; cn < icn; ++cn) + { + UMat tsrc = src[i]; + tsrc.offset += cn * esz1; + ksrc.push_back(tsrc); + } } + int dcn = (int)ksrc.size(); - String srcargs, srcdecl, processelem; - for (size_t i = 0; i < srcsize; ++i) + String srcargs, srcdecl, processelem, cndecl; + for (int i = 0; i < dcn; ++i) { srcargs += format("DECLARE_SRC_PARAM(%d)", i); srcdecl += format("DECLARE_DATA(%d)", i); processelem += format("PROCESS_ELEM(%d)", i); + cndecl += format(" -D scn%d=%d", i, ksrc[i].channels()); } ocl::Kernel k("merge", ocl::core::split_merge_oclsrc, - format("-D OP_MERGE -D cn=%d -D T=%s -D DECLARE_SRC_PARAMS_N=%s -D DECLARE_DATA_N=%s -D PROCESS_ELEMS_N=%s", - (int)srcsize, ocl::memopTypeToStr(depth), srcargs.c_str(), srcdecl.c_str(), processelem.c_str())); + format("-D OP_MERGE -D cn=%d -D T=%s -D DECLARE_SRC_PARAMS_N=%s" + " -D DECLARE_DATA_N=%s -D PROCESS_ELEMS_N=%s%s", + dcn, ocl::memopTypeToStr(depth), srcargs.c_str(), + srcdecl.c_str(), processelem.c_str(), cndecl.c_str())); if (k.empty()) return false; - _dst.create(size, CV_MAKE_TYPE(depth, (int)srcsize)); + _dst.create(size, CV_MAKE_TYPE(depth, dcn)); UMat dst = _dst.getUMat(); int argidx = 0; - for (size_t i = 0; i < srcsize; ++i) - argidx = k.set(argidx, ocl::KernelArg::ReadOnlyNoSize(src[i])); + for (int i = 0; i < dcn; ++i) + argidx = k.set(argidx, ocl::KernelArg::ReadOnlyNoSize(ksrc[i])); k.set(argidx, ocl::KernelArg::WriteOnly(dst)); size_t globalsize[2] = { dst.cols, dst.rows }; diff --git a/modules/core/src/opencl/split_merge.cl b/modules/core/src/opencl/split_merge.cl index 8a1bc49039..7d277056a1 100644 --- a/modules/core/src/opencl/split_merge.cl +++ b/modules/core/src/opencl/split_merge.cl @@ -45,7 +45,7 @@ #define DECLARE_SRC_PARAM(index) __global const uchar * src##index##ptr, int src##index##_step, int src##index##_offset, #define DECLARE_DATA(index) __global const T * src##index = \ - (__global T *)(src##index##ptr + mad24(src##index##_step, y, mad24(x, (int)sizeof(T), src##index##_offset))); + (__global T *)(src##index##ptr + mad24(src##index##_step, y, mad24(x, (int)sizeof(T) * scn##index, src##index##_offset))); #define PROCESS_ELEM(index) dst[index] = src##index[0]; __kernel void merge(DECLARE_SRC_PARAMS_N diff --git a/modules/core/test/ocl/test_arithm.cpp b/modules/core/test/ocl/test_arithm.cpp index 4dd8d150c3..8618746c9f 100644 --- a/modules/core/test/ocl/test_arithm.cpp +++ b/modules/core/test/ocl/test_arithm.cpp @@ -57,9 +57,9 @@ PARAM_TEST_CASE(Lut, MatDepth, MatDepth, Channels, bool, bool) int cn; bool use_roi, same_cn; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_INPUT_PARAMETER(lut) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_INPUT_PARAMETER(lut); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -87,14 +87,14 @@ PARAM_TEST_CASE(Lut, MatDepth, MatDepth, Channels, bool, bool) Border dstBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, roiSize, dstBorder, dst_type, 5, 16); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_INPUT_PARAMETER(lut) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_INPUT_PARAMETER(lut); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } void Near(double threshold = 0.) { - OCL_EXPECT_MATS_NEAR(dst, threshold) + OCL_EXPECT_MATS_NEAR(dst, threshold); } }; @@ -121,11 +121,11 @@ PARAM_TEST_CASE(ArithmTestBase, MatDepth, Channels, bool) cv::Scalar val; cv::Scalar val_in_range; - TEST_DECLARE_INPUT_PARAMETER(src1) - TEST_DECLARE_INPUT_PARAMETER(src2) - TEST_DECLARE_INPUT_PARAMETER(mask) - TEST_DECLARE_OUTPUT_PARAMETER(dst1) - TEST_DECLARE_OUTPUT_PARAMETER(dst2) + TEST_DECLARE_INPUT_PARAMETER(src1); + TEST_DECLARE_INPUT_PARAMETER(src2); + TEST_DECLARE_INPUT_PARAMETER(mask); + TEST_DECLARE_OUTPUT_PARAMETER(dst1); + TEST_DECLARE_OUTPUT_PARAMETER(dst2); virtual void SetUp() { @@ -167,21 +167,21 @@ PARAM_TEST_CASE(ArithmTestBase, MatDepth, Channels, bool) rng.uniform(minV, maxV), rng.uniform(minV, maxV)); } - UMAT_UPLOAD_INPUT_PARAMETER(src1) - UMAT_UPLOAD_INPUT_PARAMETER(src2) - UMAT_UPLOAD_INPUT_PARAMETER(mask) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst1) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst2) + UMAT_UPLOAD_INPUT_PARAMETER(src1); + UMAT_UPLOAD_INPUT_PARAMETER(src2); + UMAT_UPLOAD_INPUT_PARAMETER(mask); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst1); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst2); } void Near(double threshold = 0.) { - OCL_EXPECT_MATS_NEAR(dst1, threshold) + OCL_EXPECT_MATS_NEAR(dst1, threshold); } void Near1(double threshold = 0.) { - OCL_EXPECT_MATS_NEAR(dst2, threshold) + OCL_EXPECT_MATS_NEAR(dst2, threshold); } }; @@ -556,6 +556,12 @@ OCL_TEST_P(Transpose, Mat) { generateTestData(); + Size roiSize = src1_roi.size(); + Border dst1Border = randomBorder(0, use_roi ? MAX_VALUE : 0); + randomSubMat(dst1, dst1_roi, Size(roiSize.height, roiSize.width), dst1Border, src1.type(), 5, 16); + + UMAT_UPLOAD_INPUT_PARAMETER(dst1); + OCL_OFF(cv::transpose(src1_roi, dst1_roi)); OCL_ON(cv::transpose(usrc1_roi, udst1_roi)); @@ -580,7 +586,7 @@ OCL_TEST_P(Transpose, SquareInplace) OCL_OFF(cv::transpose(src1_roi, src1_roi)); OCL_ON(cv::transpose(usrc1_roi, usrc1_roi)); - OCL_EXPECT_MATS_NEAR(src1, 0) + OCL_EXPECT_MATS_NEAR(src1, 0); } } @@ -761,7 +767,7 @@ OCL_TEST_P(Bitwise_not, Mat) typedef ArithmTestBase Compare; static const int cmp_codes[] = { CMP_EQ, CMP_GT, CMP_GE, CMP_LT, CMP_LE, CMP_NE }; -static const char* cmp_strs[] = { "CMP_EQ", "CMP_GT", "CMP_GE", "CMP_LT", "CMP_LE", "CMP_NE" }; +static const char * cmp_strs[] = { "CMP_EQ", "CMP_GT", "CMP_GE", "CMP_LT", "CMP_LE", "CMP_NE" }; static const int cmp_num = sizeof(cmp_codes) / sizeof(int); OCL_TEST_P(Compare, Mat) @@ -826,12 +832,14 @@ OCL_TEST_P(Pow, Mat) for (int j = 0; j < test_loop_times; j++) for (int k = 0, size = sizeof(pows) / sizeof(double); k < size; ++k) { + SCOPED_TRACE(pows[k]); + generateTestData(); OCL_OFF(cv::pow(src1_roi, pows[k], dst1_roi)); OCL_ON(cv::pow(usrc1_roi, pows[k], udst1_roi)); - Near(1); // FIXIT: Relative error check! + OCL_EXPECT_MATS_NEAR_RELATIVE(dst1, 1e-6); } } @@ -893,8 +901,8 @@ struct RepeatTestCase : Border dst1Border = randomBorder(0, use_roi ? MAX_VALUE : 0); randomSubMat(dst1, dst1_roi, dstRoiSize, dst1Border, type, 5, 16); - UMAT_UPLOAD_INPUT_PARAMETER(src1) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst1) + UMAT_UPLOAD_INPUT_PARAMETER(src1); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst1); } }; @@ -1450,10 +1458,10 @@ PARAM_TEST_CASE(InRange, MatDepth, Channels, bool /*Scalar or not*/, bool /*Roi* bool scalars, use_roi; cv::Scalar val1, val2; - TEST_DECLARE_INPUT_PARAMETER(src1) - TEST_DECLARE_INPUT_PARAMETER(src2) - TEST_DECLARE_INPUT_PARAMETER(src3) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src1); + TEST_DECLARE_INPUT_PARAMETER(src2); + TEST_DECLARE_INPUT_PARAMETER(src3); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -1485,15 +1493,15 @@ PARAM_TEST_CASE(InRange, MatDepth, Channels, bool /*Scalar or not*/, bool /*Roi* val2 = cv::Scalar(rng.uniform(-100.0, 100.0), rng.uniform(-100.0, 100.0), rng.uniform(-100.0, 100.0), rng.uniform(-100.0, 100.0)); - UMAT_UPLOAD_INPUT_PARAMETER(src1) - UMAT_UPLOAD_INPUT_PARAMETER(src2) - UMAT_UPLOAD_INPUT_PARAMETER(src3) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src1); + UMAT_UPLOAD_INPUT_PARAMETER(src2); + UMAT_UPLOAD_INPUT_PARAMETER(src3); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } void Near() { - OCL_EXPECT_MATS_NEAR(dst, 0) + OCL_EXPECT_MATS_NEAR(dst, 0); } }; @@ -1565,7 +1573,7 @@ PARAM_TEST_CASE(PatchNaNs, Channels, bool) bool use_roi; double value; - TEST_DECLARE_INPUT_PARAMETER(src) + TEST_DECLARE_INPUT_PARAMETER(src); virtual void SetUp() { @@ -1592,12 +1600,12 @@ PARAM_TEST_CASE(PatchNaNs, Channels, bool) value = randomDouble(-100, 100); - UMAT_UPLOAD_INPUT_PARAMETER(src) + UMAT_UPLOAD_INPUT_PARAMETER(src); } void Near() { - OCL_EXPECT_MATS_NEAR(src, 0) + OCL_EXPECT_MATS_NEAR(src, 0); } }; @@ -1640,8 +1648,8 @@ PARAM_TEST_CASE(Reduce, std::pair, Channels, int, bool) int sdepth, ddepth, cn, dim, dtype; bool use_roi; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -1666,8 +1674,8 @@ PARAM_TEST_CASE(Reduce, std::pair, Channels, int, bool) Border dstBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, dstRoiSize, dstBorder, dtype, 5, 16); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } }; @@ -1683,7 +1691,7 @@ OCL_TEST_P(ReduceSum, Mat) OCL_ON(cv::reduce(usrc_roi, udst_roi, dim, CV_REDUCE_SUM, dtype)); double eps = ddepth <= CV_32S ? 1 : 1e-4; - OCL_EXPECT_MATS_NEAR(dst, eps) + OCL_EXPECT_MATS_NEAR(dst, eps); } } @@ -1698,7 +1706,7 @@ OCL_TEST_P(ReduceMax, Mat) OCL_OFF(cv::reduce(src_roi, dst_roi, dim, CV_REDUCE_MAX, dtype)); OCL_ON(cv::reduce(usrc_roi, udst_roi, dim, CV_REDUCE_MAX, dtype)); - OCL_EXPECT_MATS_NEAR(dst, 0) + OCL_EXPECT_MATS_NEAR(dst, 0); } } @@ -1713,7 +1721,7 @@ OCL_TEST_P(ReduceMin, Mat) OCL_OFF(cv::reduce(src_roi, dst_roi, dim, CV_REDUCE_MIN, dtype)); OCL_ON(cv::reduce(usrc_roi, udst_roi, dim, CV_REDUCE_MIN, dtype)); - OCL_EXPECT_MATS_NEAR(dst, 0) + OCL_EXPECT_MATS_NEAR(dst, 0); } } @@ -1729,7 +1737,7 @@ OCL_TEST_P(ReduceAvg, Mat) OCL_ON(cv::reduce(usrc_roi, udst_roi, dim, CV_REDUCE_AVG, dtype)); double eps = ddepth <= CV_32S ? 1 : 5e-6; - OCL_EXPECT_MATS_NEAR(dst, eps) + OCL_EXPECT_MATS_NEAR(dst, eps); } } diff --git a/modules/core/test/ocl/test_channels.cpp b/modules/core/test/ocl/test_channels.cpp index f0dc102504..7565273e7a 100644 --- a/modules/core/test/ocl/test_channels.cpp +++ b/modules/core/test/ocl/test_channels.cpp @@ -54,16 +54,16 @@ namespace ocl { //////////////////////////////////////// Merge /////////////////////////////////////////////// -PARAM_TEST_CASE(Merge, MatDepth, Channels, bool) +PARAM_TEST_CASE(Merge, MatDepth, int, bool) { - int depth, cn; + int depth, nsrc; bool use_roi; - TEST_DECLARE_INPUT_PARAMETER(src1) - TEST_DECLARE_INPUT_PARAMETER(src2) - TEST_DECLARE_INPUT_PARAMETER(src3) - TEST_DECLARE_INPUT_PARAMETER(src4) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src1); + TEST_DECLARE_INPUT_PARAMETER(src2); + TEST_DECLARE_INPUT_PARAMETER(src3); + TEST_DECLARE_INPUT_PARAMETER(src4); + TEST_DECLARE_OUTPUT_PARAMETER(dst); std::vector src_roi; std::vector usrc_roi; @@ -71,10 +71,15 @@ PARAM_TEST_CASE(Merge, MatDepth, Channels, bool) virtual void SetUp() { depth = GET_PARAM(0); - cn = GET_PARAM(1); + nsrc = GET_PARAM(1); use_roi = GET_PARAM(2); - CV_Assert(cn >= 1 && cn <= 4); + CV_Assert(nsrc >= 1 && nsrc <= 4); + } + + int type() + { + return CV_MAKE_TYPE(depth, randomInt(1, 3)); } void generateTestData() @@ -83,34 +88,39 @@ PARAM_TEST_CASE(Merge, MatDepth, Channels, bool) { Border src1Border = randomBorder(0, use_roi ? MAX_VALUE : 0); - randomSubMat(src1, src1_roi, roiSize, src1Border, depth, 2, 11); + randomSubMat(src1, src1_roi, roiSize, src1Border, type(), 2, 11); Border src2Border = randomBorder(0, use_roi ? MAX_VALUE : 0); - randomSubMat(src2, src2_roi, roiSize, src2Border, depth, -1540, 1740); + randomSubMat(src2, src2_roi, roiSize, src2Border, type(), -1540, 1740); Border src3Border = randomBorder(0, use_roi ? MAX_VALUE : 0); - randomSubMat(src3, src3_roi, roiSize, src3Border, depth, -1540, 1740); + randomSubMat(src3, src3_roi, roiSize, src3Border, type(), -1540, 1740); Border src4Border = randomBorder(0, use_roi ? MAX_VALUE : 0); - randomSubMat(src4, src4_roi, roiSize, src4Border, depth, -1540, 1740); + randomSubMat(src4, src4_roi, roiSize, src4Border, type(), -1540, 1740); } - Border dstBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); - randomSubMat(dst, dst_roi, roiSize, dstBorder, CV_MAKE_TYPE(depth, cn), 5, 16); - - UMAT_UPLOAD_INPUT_PARAMETER(src1) - UMAT_UPLOAD_INPUT_PARAMETER(src2) - UMAT_UPLOAD_INPUT_PARAMETER(src3) - UMAT_UPLOAD_INPUT_PARAMETER(src4) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src1); + UMAT_UPLOAD_INPUT_PARAMETER(src2); + UMAT_UPLOAD_INPUT_PARAMETER(src3); + UMAT_UPLOAD_INPUT_PARAMETER(src4); src_roi.push_back(src1_roi), usrc_roi.push_back(usrc1_roi); - if (cn >= 2) + if (nsrc >= 2) src_roi.push_back(src2_roi), usrc_roi.push_back(usrc2_roi); - if (cn >= 3) + if (nsrc >= 3) src_roi.push_back(src3_roi), usrc_roi.push_back(usrc3_roi); - if (cn >= 4) + if (nsrc >= 4) src_roi.push_back(src4_roi), usrc_roi.push_back(usrc4_roi); + + int dcn = 0; + for (int i = 0; i < nsrc; ++i) + dcn += src_roi[i].channels(); + + Border dstBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); + randomSubMat(dst, dst_roi, roiSize, dstBorder, CV_MAKE_TYPE(depth, dcn), 5, 16); + + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } void Near(double threshold = 0.) @@ -139,11 +149,11 @@ PARAM_TEST_CASE(Split, MatType, Channels, bool) int depth, cn; bool use_roi; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst1) - TEST_DECLARE_OUTPUT_PARAMETER(dst2) - TEST_DECLARE_OUTPUT_PARAMETER(dst3) - TEST_DECLARE_OUTPUT_PARAMETER(dst4) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst1); + TEST_DECLARE_OUTPUT_PARAMETER(dst2); + TEST_DECLARE_OUTPUT_PARAMETER(dst3); + TEST_DECLARE_OUTPUT_PARAMETER(dst4); std::vector dst_roi, dst; std::vector udst_roi, udst; @@ -177,11 +187,11 @@ PARAM_TEST_CASE(Split, MatType, Channels, bool) randomSubMat(dst4, dst4_roi, roiSize, dst4Border, depth, -1540, 1740); } - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst1) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst2) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst3) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst4) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst1); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst2); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst3); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst4); dst_roi.push_back(dst1_roi), udst_roi.push_back(udst1_roi), dst.push_back(dst1), udst.push_back(udst1); @@ -221,14 +231,14 @@ PARAM_TEST_CASE(MixChannels, MatType, bool) int depth; bool use_roi; - TEST_DECLARE_INPUT_PARAMETER(src1) - TEST_DECLARE_INPUT_PARAMETER(src2) - TEST_DECLARE_INPUT_PARAMETER(src3) - TEST_DECLARE_INPUT_PARAMETER(src4) - TEST_DECLARE_OUTPUT_PARAMETER(dst1) - TEST_DECLARE_OUTPUT_PARAMETER(dst2) - TEST_DECLARE_OUTPUT_PARAMETER(dst3) - TEST_DECLARE_OUTPUT_PARAMETER(dst4) + TEST_DECLARE_INPUT_PARAMETER(src1); + TEST_DECLARE_INPUT_PARAMETER(src2); + TEST_DECLARE_INPUT_PARAMETER(src3); + TEST_DECLARE_INPUT_PARAMETER(src4); + TEST_DECLARE_OUTPUT_PARAMETER(dst1); + TEST_DECLARE_OUTPUT_PARAMETER(dst2); + TEST_DECLARE_OUTPUT_PARAMETER(dst3); + TEST_DECLARE_OUTPUT_PARAMETER(dst4); std::vector src_roi, dst_roi, dst; std::vector usrc_roi, udst_roi, udst; @@ -287,15 +297,15 @@ PARAM_TEST_CASE(MixChannels, MatType, bool) randomSubMat(dst4, dst4_roi, roiSize, dst4Border, type(), -1540, 1740); } - UMAT_UPLOAD_INPUT_PARAMETER(src1) - UMAT_UPLOAD_INPUT_PARAMETER(src2) - UMAT_UPLOAD_INPUT_PARAMETER(src3) - UMAT_UPLOAD_INPUT_PARAMETER(src4) + UMAT_UPLOAD_INPUT_PARAMETER(src1); + UMAT_UPLOAD_INPUT_PARAMETER(src2); + UMAT_UPLOAD_INPUT_PARAMETER(src3); + UMAT_UPLOAD_INPUT_PARAMETER(src4); - UMAT_UPLOAD_OUTPUT_PARAMETER(dst1) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst2) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst3) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst4) + UMAT_UPLOAD_OUTPUT_PARAMETER(dst1); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst2); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst3); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst4); int nsrc = randomInt(1, 5), ndst = randomInt(1, 5); @@ -360,8 +370,8 @@ PARAM_TEST_CASE(InsertChannel, MatDepth, Channels, bool) int depth, cn, coi; bool use_roi; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -381,8 +391,8 @@ PARAM_TEST_CASE(InsertChannel, MatDepth, Channels, bool) Border dstBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, roiSize, dstBorder, CV_MAKE_TYPE(depth, cn), 5, 16); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } }; @@ -406,8 +416,8 @@ PARAM_TEST_CASE(ExtractChannel, MatDepth, Channels, bool) int depth, cn, coi; bool use_roi; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -427,8 +437,8 @@ PARAM_TEST_CASE(ExtractChannel, MatDepth, Channels, bool) Border dstBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, roiSize, dstBorder, depth, 5, 16); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } }; @@ -447,7 +457,7 @@ OCL_TEST_P(ExtractChannel, Accuracy) //////////////////////////////////////// Instantiation /////////////////////////////////////////////// -OCL_INSTANTIATE_TEST_CASE_P(Channels, Merge, Combine(OCL_ALL_DEPTHS, OCL_ALL_CHANNELS, Bool())); +OCL_INSTANTIATE_TEST_CASE_P(Channels, Merge, Combine(OCL_ALL_DEPTHS, Values(1, 2, 3, 4), Bool())); OCL_INSTANTIATE_TEST_CASE_P(Channels, Split, Combine(OCL_ALL_DEPTHS, OCL_ALL_CHANNELS, Bool())); OCL_INSTANTIATE_TEST_CASE_P(Channels, MixChannels, Combine(OCL_ALL_DEPTHS, Bool())); OCL_INSTANTIATE_TEST_CASE_P(Channels, InsertChannel, Combine(OCL_ALL_DEPTHS, OCL_ALL_CHANNELS, Bool())); diff --git a/modules/core/test/ocl/test_dft.cpp b/modules/core/test/ocl/test_dft.cpp index cc9b06d38c..1f0e43b20e 100644 --- a/modules/core/test/ocl/test_dft.cpp +++ b/modules/core/test/ocl/test_dft.cpp @@ -60,8 +60,8 @@ PARAM_TEST_CASE(Dft, cv::Size, MatDepth, bool, bool, bool, bool) int dft_flags, depth; bool inplace; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -106,9 +106,9 @@ PARAM_TEST_CASE(MulSpectrums, bool, bool) { bool ccorr, useRoi; - TEST_DECLARE_INPUT_PARAMETER(src1) - TEST_DECLARE_INPUT_PARAMETER(src2) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src1); + TEST_DECLARE_INPUT_PARAMETER(src2); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -129,9 +129,9 @@ PARAM_TEST_CASE(MulSpectrums, bool, bool) Border dstBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, srcRoiSize, dstBorder, CV_32FC2, 5, 16); - UMAT_UPLOAD_INPUT_PARAMETER(src1) - UMAT_UPLOAD_INPUT_PARAMETER(src2) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src1); + UMAT_UPLOAD_INPUT_PARAMETER(src2); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } }; diff --git a/modules/core/test/ocl/test_gemm.cpp b/modules/core/test/ocl/test_gemm.cpp index 4d453f334a..e92fc2a1c9 100644 --- a/modules/core/test/ocl/test_gemm.cpp +++ b/modules/core/test/ocl/test_gemm.cpp @@ -67,10 +67,10 @@ PARAM_TEST_CASE(Gemm, double alpha, beta; - TEST_DECLARE_INPUT_PARAMETER(A) - TEST_DECLARE_INPUT_PARAMETER(B) - TEST_DECLARE_INPUT_PARAMETER(C) - TEST_DECLARE_OUTPUT_PARAMETER(D) + TEST_DECLARE_INPUT_PARAMETER(A); + TEST_DECLARE_INPUT_PARAMETER(B); + TEST_DECLARE_INPUT_PARAMETER(C); + TEST_DECLARE_OUTPUT_PARAMETER(D); virtual void SetUp() { @@ -119,10 +119,10 @@ PARAM_TEST_CASE(Gemm, alpha = randomDouble(-4, 4); beta = randomDouble(-4, 4); - UMAT_UPLOAD_INPUT_PARAMETER(A) - UMAT_UPLOAD_INPUT_PARAMETER(B) - UMAT_UPLOAD_INPUT_PARAMETER(C) - UMAT_UPLOAD_OUTPUT_PARAMETER(D) + UMAT_UPLOAD_INPUT_PARAMETER(A); + UMAT_UPLOAD_INPUT_PARAMETER(B); + UMAT_UPLOAD_INPUT_PARAMETER(C); + UMAT_UPLOAD_OUTPUT_PARAMETER(D); } }; diff --git a/modules/core/test/ocl/test_matrix_operation.cpp b/modules/core/test/ocl/test_matrix_operation.cpp index 77c5dad956..901609538e 100644 --- a/modules/core/test/ocl/test_matrix_operation.cpp +++ b/modules/core/test/ocl/test_matrix_operation.cpp @@ -59,8 +59,8 @@ PARAM_TEST_CASE(ConvertTo, MatDepth, MatDepth, Channels, bool) int src_depth, cn, dstType; bool use_roi; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -80,8 +80,8 @@ PARAM_TEST_CASE(ConvertTo, MatDepth, MatDepth, Channels, bool) Border dstBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, roiSize, dstBorder, dstType, 5, 16); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } }; @@ -108,9 +108,9 @@ PARAM_TEST_CASE(CopyTo, MatDepth, Channels, bool, bool) int depth, cn; bool use_roi, use_mask; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_INPUT_PARAMETER(mask) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_INPUT_PARAMETER(mask); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -139,10 +139,10 @@ PARAM_TEST_CASE(CopyTo, MatDepth, Channels, bool, bool) Border dstBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, roiSize, dstBorder, type, 5, 16); - UMAT_UPLOAD_INPUT_PARAMETER(src) + UMAT_UPLOAD_INPUT_PARAMETER(src); if (use_mask) - UMAT_UPLOAD_INPUT_PARAMETER(mask) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(mask); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } }; @@ -169,7 +169,7 @@ OCL_TEST_P(CopyTo, Accuracy) } OCL_INSTANTIATE_TEST_CASE_P(MatrixOperation, ConvertTo, Combine( - OCL_ALL_DEPTHS, OCL_ALL_DEPTHS, OCL_ALL_CHANNELS, Bool())); + OCL_ALL_DEPTHS, OCL_ALL_DEPTHS, OCL_ALL_CHANNELS, Bool())); OCL_INSTANTIATE_TEST_CASE_P(MatrixOperation, CopyTo, Combine( OCL_ALL_DEPTHS, OCL_ALL_CHANNELS, Bool(), Bool())); diff --git a/modules/imgproc/test/ocl/test_accumulate.cpp b/modules/imgproc/test/ocl/test_accumulate.cpp index 586c34b26a..50c9085cb4 100644 --- a/modules/imgproc/test/ocl/test_accumulate.cpp +++ b/modules/imgproc/test/ocl/test_accumulate.cpp @@ -58,10 +58,10 @@ PARAM_TEST_CASE(AccumulateBase, std::pair, Channels, bool) bool useRoi; double alpha; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_INPUT_PARAMETER(mask) - TEST_DECLARE_INPUT_PARAMETER(src2) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_INPUT_PARAMETER(mask); + TEST_DECLARE_INPUT_PARAMETER(src2); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -90,10 +90,10 @@ PARAM_TEST_CASE(AccumulateBase, std::pair, Channels, bool) Border dstBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, roiSize, dstBorder, dtype, -MAX_VALUE, MAX_VALUE); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_INPUT_PARAMETER(mask) - UMAT_UPLOAD_INPUT_PARAMETER(src2) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_INPUT_PARAMETER(mask); + UMAT_UPLOAD_INPUT_PARAMETER(src2); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); alpha = randomDouble(-5, 5); } diff --git a/modules/imgproc/test/ocl/test_blend.cpp b/modules/imgproc/test/ocl/test_blend.cpp index 17c0b13123..7b62b97172 100644 --- a/modules/imgproc/test/ocl/test_blend.cpp +++ b/modules/imgproc/test/ocl/test_blend.cpp @@ -57,11 +57,11 @@ PARAM_TEST_CASE(BlendLinear, MatDepth, Channels, bool) int depth, channels; bool useRoi; - TEST_DECLARE_INPUT_PARAMETER(src1) - TEST_DECLARE_INPUT_PARAMETER(src2) - TEST_DECLARE_INPUT_PARAMETER(weights2) - TEST_DECLARE_INPUT_PARAMETER(weights1) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src1); + TEST_DECLARE_INPUT_PARAMETER(src2); + TEST_DECLARE_INPUT_PARAMETER(weights2); + TEST_DECLARE_INPUT_PARAMETER(weights1); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -89,22 +89,22 @@ PARAM_TEST_CASE(BlendLinear, MatDepth, Channels, bool) randomSubMat(weights2, weights2_roi, roiSize, weights2Border, CV_32FC1, 1e-2, upValue); weights2_roi -= weights1_roi; - CV_Assert(checkNorm(weights2_roi, weights2(Rect(weights2Border.lef, weights2Border.top, + CV_Assert(checkNorm2(weights2_roi, weights2(Rect(weights2Border.lef, weights2Border.top, roiSize.width, roiSize.height))) < 1e-6); Border dstBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, roiSize, dstBorder, type, 5, 16); - UMAT_UPLOAD_INPUT_PARAMETER(src1) - UMAT_UPLOAD_INPUT_PARAMETER(src2) - UMAT_UPLOAD_INPUT_PARAMETER(weights1) - UMAT_UPLOAD_INPUT_PARAMETER(weights2) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src1); + UMAT_UPLOAD_INPUT_PARAMETER(src2); + UMAT_UPLOAD_INPUT_PARAMETER(weights1); + UMAT_UPLOAD_INPUT_PARAMETER(weights2); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } void Near(double eps = 0.0) { - OCL_EXPECT_MATS_NEAR(dst, eps) + OCL_EXPECT_MATS_NEAR(dst, eps); } }; diff --git a/modules/imgproc/test/ocl/test_boxfilter.cpp b/modules/imgproc/test/ocl/test_boxfilter.cpp index c95657c9e9..e1e936afe3 100644 --- a/modules/imgproc/test/ocl/test_boxfilter.cpp +++ b/modules/imgproc/test/ocl/test_boxfilter.cpp @@ -61,8 +61,8 @@ PARAM_TEST_CASE(BoxFilterBase, MatDepth, Channels, BorderType, bool, bool) Point anchor; bool normalize, useRoi; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -76,7 +76,6 @@ PARAM_TEST_CASE(BoxFilterBase, MatDepth, Channels, BorderType, bool, bool) void random_roi() { int type = CV_MAKE_TYPE(depth, cn); - dsize = randomSize(1, MAX_VALUE); ksize = randomSize(kernelMinSize, kernelMaxSize); Size roiSize = randomSize(ksize.width, MAX_VALUE, ksize.height, MAX_VALUE); @@ -84,18 +83,18 @@ PARAM_TEST_CASE(BoxFilterBase, MatDepth, Channels, BorderType, bool, bool) randomSubMat(src, src_roi, roiSize, srcBorder, type, -MAX_VALUE, MAX_VALUE); Border dstBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); - randomSubMat(dst, dst_roi, dsize, dstBorder, type, -MAX_VALUE, MAX_VALUE); + randomSubMat(dst, dst_roi, roiSize, dstBorder, type, -MAX_VALUE, MAX_VALUE); anchor.x = randomInt(-1, ksize.width); anchor.y = randomInt(-1, ksize.height); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } void Near(double threshold = 0.0) { - OCL_EXPECT_MATS_NEAR(dst, threshold) + OCL_EXPECT_MATS_NEAR(dst, threshold); } }; diff --git a/modules/imgproc/test/ocl/test_canny.cpp b/modules/imgproc/test/ocl/test_canny.cpp index e328d2a2fd..f791cac64c 100644 --- a/modules/imgproc/test/ocl/test_canny.cpp +++ b/modules/imgproc/test/ocl/test_canny.cpp @@ -63,8 +63,8 @@ PARAM_TEST_CASE(Canny, AppertureSize, L2gradient, UseRoi) int apperture_size; bool useL2gradient, use_roi; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -89,8 +89,8 @@ PARAM_TEST_CASE(Canny, AppertureSize, L2gradient, UseRoi) Border dstBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, roiSize, dstBorder, type, 5, 16); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } }; diff --git a/modules/imgproc/test/ocl/test_color.cpp b/modules/imgproc/test/ocl/test_color.cpp index ffd392a030..fcf270f8e7 100644 --- a/modules/imgproc/test/ocl/test_color.cpp +++ b/modules/imgproc/test/ocl/test_color.cpp @@ -59,8 +59,8 @@ PARAM_TEST_CASE(CvtColor, MatDepth, bool) int depth; bool use_roi; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -80,13 +80,13 @@ PARAM_TEST_CASE(CvtColor, MatDepth, bool) Border dstBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, roiSize, dstBorder, dstType, 5, 16); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } void Near(double threshold) { - OCL_EXPECT_MATS_NEAR(dst, threshold) + OCL_EXPECT_MATS_NEAR(dst, threshold); } void performTest(int channelsIn, int channelsOut, int code, double threshold = 1e-3) @@ -287,8 +287,8 @@ struct CvtColor_YUV420 : Border dstBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, roiSize, dstBorder, dstType, 5, 16); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } }; diff --git a/modules/imgproc/test/ocl/test_filter2d.cpp b/modules/imgproc/test/ocl/test_filter2d.cpp index 54d65459c5..21b3fff2d7 100644 --- a/modules/imgproc/test/ocl/test_filter2d.cpp +++ b/modules/imgproc/test/ocl/test_filter2d.cpp @@ -63,8 +63,8 @@ PARAM_TEST_CASE(Filter2D, MatDepth, Channels, BorderType, bool, bool) bool useRoi; Mat kernel; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -91,8 +91,8 @@ PARAM_TEST_CASE(Filter2D, MatDepth, Channels, BorderType, bool, bool) anchor.x = randomInt(-1, ksize.width); anchor.y = randomInt(-1, ksize.height); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } void Near(double threshold = 0.0) diff --git a/modules/imgproc/test/ocl/test_filters.cpp b/modules/imgproc/test/ocl/test_filters.cpp index fe16fe81d5..d929daeedb 100644 --- a/modules/imgproc/test/ocl/test_filters.cpp +++ b/modules/imgproc/test/ocl/test_filters.cpp @@ -69,8 +69,8 @@ PARAM_TEST_CASE(FilterTestBase, MatType, double param; bool useRoi; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -94,8 +94,8 @@ PARAM_TEST_CASE(FilterTestBase, MatType, Border dstBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, roiSize, dstBorder, type, -60, 70); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } void Near() @@ -112,15 +112,9 @@ PARAM_TEST_CASE(FilterTestBase, MatType, void Near(double threshold, bool relative) { if (relative) - { - EXPECT_MAT_NEAR_RELATIVE(dst, udst, threshold); - EXPECT_MAT_NEAR_RELATIVE(dst_roi, udst_roi, threshold); - } + OCL_EXPECT_MATS_NEAR_RELATIVE(dst, threshold); else - { - EXPECT_MAT_NEAR(dst, udst, threshold); - EXPECT_MAT_NEAR(dst_roi, udst_roi, threshold); - } + OCL_EXPECT_MATS_NEAR(dst, threshold); } }; diff --git a/modules/imgproc/test/ocl/test_gftt.cpp b/modules/imgproc/test/ocl/test_gftt.cpp index e47997623f..6e65f90dd0 100644 --- a/modules/imgproc/test/ocl/test_gftt.cpp +++ b/modules/imgproc/test/ocl/test_gftt.cpp @@ -60,7 +60,7 @@ PARAM_TEST_CASE(GoodFeaturesToTrack, double, bool) static const int maxCorners; static const double qualityLevel; - TEST_DECLARE_INPUT_PARAMETER(src) + TEST_DECLARE_INPUT_PARAMETER(src); UMat points, upoints; virtual void SetUp() @@ -79,7 +79,7 @@ PARAM_TEST_CASE(GoodFeaturesToTrack, double, bool) randomSubMat(src, src_roi, roiSize, srcBorder, frame.type(), 5, 256); src_roi.copyTo(frame); - UMAT_UPLOAD_INPUT_PARAMETER(src) + UMAT_UPLOAD_INPUT_PARAMETER(src); } void UMatToVector(const UMat & um, std::vector & v) const diff --git a/modules/imgproc/test/ocl/test_histogram.cpp b/modules/imgproc/test/ocl/test_histogram.cpp index b0837eeaa2..0a27907b63 100644 --- a/modules/imgproc/test/ocl/test_histogram.cpp +++ b/modules/imgproc/test/ocl/test_histogram.cpp @@ -76,8 +76,8 @@ PARAM_TEST_CASE(CalcBackProject, MatDepth, int, bool) std::vector uimages; std::vector uimages_roi; - TEST_DECLARE_INPUT_PARAMETER(hist) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(hist); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -139,8 +139,8 @@ PARAM_TEST_CASE(CalcBackProject, MatDepth, int, bool) uimages_roi[i] = uimages[i](Rect(ofs.x, ofs.y, images_roi[i].cols, images_roi[i].rows)); } - UMAT_UPLOAD_INPUT_PARAMETER(hist) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(hist); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); scale = randomDouble(0.1, 1); } @@ -157,7 +157,7 @@ OCL_TEST_P(CalcBackProject, Mat) OCL_OFF(cv::calcBackProject(images_roi, channels, hist_roi, dst_roi, ranges, scale)); OCL_ON(cv::calcBackProject(uimages_roi, channels, uhist_roi, udst_roi, ranges, scale)); - OCL_EXPECT_MATS_NEAR(dst, 0.0) + OCL_EXPECT_MATS_NEAR(dst, 0.0); } } @@ -167,8 +167,8 @@ PARAM_TEST_CASE(CalcHist, bool) { bool useRoi; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(hist) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(hist); virtual void SetUp() { @@ -185,8 +185,8 @@ PARAM_TEST_CASE(CalcHist, bool) Border histBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); randomSubMat(hist, hist_roi, Size(1, 256), histBorder, CV_32SC1, 0, MAX_VALUE); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(hist) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(hist); } }; @@ -205,7 +205,7 @@ OCL_TEST_P(CalcHist, Mat) OCL_OFF(cv::calcHist(std::vector(1, src_roi), channels, noArray(), hist_roi, histSize, ranges, false)); OCL_ON(cv::calcHist(std::vector(1, usrc_roi), channels, noArray(), uhist_roi, histSize, ranges, false)); - OCL_EXPECT_MATS_NEAR(hist, 0.0) + OCL_EXPECT_MATS_NEAR(hist, 0.0); } } diff --git a/modules/imgproc/test/ocl/test_imgproc.cpp b/modules/imgproc/test/ocl/test_imgproc.cpp index 78b2e573d4..ad8e26cbca 100644 --- a/modules/imgproc/test/ocl/test_imgproc.cpp +++ b/modules/imgproc/test/ocl/test_imgproc.cpp @@ -70,8 +70,8 @@ PARAM_TEST_CASE(ImgprocTestBase, MatType, int type, borderType, blockSize; bool useRoi; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -90,16 +90,16 @@ PARAM_TEST_CASE(ImgprocTestBase, MatType, Border dstBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, roiSize, dstBorder, type, 5, 16); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } void Near(double threshold = 0.0, bool relative = false) { if (relative) - OCL_EXPECT_MATS_NEAR_RELATIVE(dst, threshold) + OCL_EXPECT_MATS_NEAR_RELATIVE(dst, threshold); else - OCL_EXPECT_MATS_NEAR(dst, threshold) + OCL_EXPECT_MATS_NEAR(dst, threshold); } }; @@ -117,8 +117,8 @@ PARAM_TEST_CASE(CopyMakeBorder, MatDepth, // depth TestUtils::Border border; Scalar val; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -148,13 +148,13 @@ PARAM_TEST_CASE(CopyMakeBorder, MatDepth, // depth randomSubMat(dst, dst_roi, roiSize, dstBorder, type, -MAX_VALUE, MAX_VALUE); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } void Near() { - OCL_EXPECT_MATS_NEAR(dst, 0) + OCL_EXPECT_MATS_NEAR(dst, 0); } }; @@ -217,8 +217,8 @@ struct CornerTestBase : Border dstBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, roiSize, dstBorder, CV_32FC1, 5, 16); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } }; @@ -286,7 +286,7 @@ struct Integral : { int sdepth, sqdepth; - TEST_DECLARE_OUTPUT_PARAMETER(dst2) + TEST_DECLARE_OUTPUT_PARAMETER(dst2); virtual void SetUp() { @@ -310,17 +310,17 @@ struct Integral : Border dst2Border = randomBorder(0, useRoi ? 2 : 0); randomSubMat(dst2, dst2_roi, isize, dst2Border, sqdepth, 5, 16); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst2) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst2); } void Near2(double threshold = 0.0, bool relative = false) { if (relative) - OCL_EXPECT_MATS_NEAR_RELATIVE(dst2, threshold) + OCL_EXPECT_MATS_NEAR_RELATIVE(dst2, threshold); else - OCL_EXPECT_MATS_NEAR(dst2, threshold) + OCL_EXPECT_MATS_NEAR(dst2, threshold); } }; @@ -390,8 +390,8 @@ PARAM_TEST_CASE(CLAHETest, Size, double, bool) double clipLimit; bool useRoi; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -409,13 +409,13 @@ PARAM_TEST_CASE(CLAHETest, Size, double, bool) Border dstBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, roiSize, dstBorder, CV_8UC1, 5, 16); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } void Near(double threshold = 0.0) { - OCL_EXPECT_MATS_NEAR(dst, threshold) + OCL_EXPECT_MATS_NEAR(dst, threshold); } }; diff --git a/modules/imgproc/test/ocl/test_match_template.cpp b/modules/imgproc/test/ocl/test_match_template.cpp index c283b8c0b1..f0a61302d1 100644 --- a/modules/imgproc/test/ocl/test_match_template.cpp +++ b/modules/imgproc/test/ocl/test_match_template.cpp @@ -62,9 +62,9 @@ PARAM_TEST_CASE(MatchTemplate, MatDepth, Channels, MatchTemplType, bool) int method; bool use_roi; - TEST_DECLARE_INPUT_PARAMETER(image) - TEST_DECLARE_INPUT_PARAMETER(templ) - TEST_DECLARE_OUTPUT_PARAMETER(result) + TEST_DECLARE_INPUT_PARAMETER(image); + TEST_DECLARE_INPUT_PARAMETER(templ); + TEST_DECLARE_OUTPUT_PARAMETER(result); virtual void SetUp() { @@ -92,9 +92,9 @@ PARAM_TEST_CASE(MatchTemplate, MatDepth, Channels, MatchTemplType, bool) Border resultBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); randomSubMat(result, result_roi, result_roiSize, resultBorder, CV_32FC1, -upValue, upValue); - UMAT_UPLOAD_INPUT_PARAMETER(image) - UMAT_UPLOAD_INPUT_PARAMETER(templ) - UMAT_UPLOAD_OUTPUT_PARAMETER(result) + UMAT_UPLOAD_INPUT_PARAMETER(image); + UMAT_UPLOAD_INPUT_PARAMETER(templ); + UMAT_UPLOAD_OUTPUT_PARAMETER(result); } void Near(double threshold = 0.0) diff --git a/modules/imgproc/test/ocl/test_medianfilter.cpp b/modules/imgproc/test/ocl/test_medianfilter.cpp index 0116197269..63690872a5 100644 --- a/modules/imgproc/test/ocl/test_medianfilter.cpp +++ b/modules/imgproc/test/ocl/test_medianfilter.cpp @@ -57,8 +57,8 @@ PARAM_TEST_CASE(MedianFilter, MatDepth, Channels, int, bool) int ksize; bool use_roi; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -76,8 +76,8 @@ PARAM_TEST_CASE(MedianFilter, MatDepth, Channels, int, bool) Border dstBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, roiSize, dstBorder, type, -MAX_VALUE, MAX_VALUE); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } void Near(double threshold = 0.0) diff --git a/modules/imgproc/test/ocl/test_pyramids.cpp b/modules/imgproc/test/ocl/test_pyramids.cpp index d6174a5b78..113349b302 100644 --- a/modules/imgproc/test/ocl/test_pyramids.cpp +++ b/modules/imgproc/test/ocl/test_pyramids.cpp @@ -57,8 +57,8 @@ PARAM_TEST_CASE(PyrTestBase, MatDepth, Channels, bool) int depth, channels; bool use_roi; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -75,8 +75,8 @@ PARAM_TEST_CASE(PyrTestBase, MatDepth, Channels, bool) Border dstBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, dst_roiSize, dstBorder, CV_MAKETYPE(depth, channels), -MAX_VALUE, MAX_VALUE); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } void Near(double threshold = 0.0) diff --git a/modules/imgproc/test/ocl/test_sepfilter2D.cpp b/modules/imgproc/test/ocl/test_sepfilter2D.cpp index 5e824d6b2a..d242a734f6 100644 --- a/modules/imgproc/test/ocl/test_sepfilter2D.cpp +++ b/modules/imgproc/test/ocl/test_sepfilter2D.cpp @@ -62,8 +62,8 @@ PARAM_TEST_CASE(SepFilter2D, MatDepth, Channels, BorderType, bool, bool) bool useRoi; Mat kernelX, kernelY; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -103,8 +103,8 @@ PARAM_TEST_CASE(SepFilter2D, MatDepth, Channels, BorderType, bool, bool) anchor.x = -1; anchor.y = -1; - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } void Near(double threshold = 0.0) diff --git a/modules/imgproc/test/ocl/test_warp.cpp b/modules/imgproc/test/ocl/test_warp.cpp index 3963b671a2..8c82d8224d 100644 --- a/modules/imgproc/test/ocl/test_warp.cpp +++ b/modules/imgproc/test/ocl/test_warp.cpp @@ -73,8 +73,8 @@ PARAM_TEST_CASE(WarpTestBase, MatType, Interpolation, bool, bool) Size dsize; bool useRoi, mapInverse; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -98,13 +98,13 @@ PARAM_TEST_CASE(WarpTestBase, MatType, Interpolation, bool, bool) Border dstBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, dsize, dstBorder, type, -MAX_VALUE, MAX_VALUE); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } void Near(double threshold = 0.0) { - OCL_EXPECT_MATS_NEAR(dst, threshold) + OCL_EXPECT_MATS_NEAR(dst, threshold); } }; @@ -164,8 +164,8 @@ PARAM_TEST_CASE(Resize, MatType, double, double, Interpolation, bool) double fx, fy; bool useRoi; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -202,7 +202,7 @@ PARAM_TEST_CASE(Resize, MatType, double, double, Interpolation, bool) void Near(double threshold = 0.0) { - OCL_EXPECT_MATS_NEAR(dst, threshold) + OCL_EXPECT_MATS_NEAR(dst, threshold); } }; @@ -230,10 +230,10 @@ PARAM_TEST_CASE(Remap, MatDepth, Channels, std::pair, BorderTy Scalar val; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_INPUT_PARAMETER(map1) - TEST_DECLARE_INPUT_PARAMETER(map2) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_INPUT_PARAMETER(map1); + TEST_DECLARE_INPUT_PARAMETER(map2); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -269,16 +269,16 @@ PARAM_TEST_CASE(Remap, MatDepth, Channels, std::pair, BorderTy randomSubMat(map2, map2_roi, dstROISize, map2Border, map2Type, mapMinValue, mapMaxValue); } - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_INPUT_PARAMETER(map1) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_INPUT_PARAMETER(map1); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); if (noType != map2Type) - UMAT_UPLOAD_INPUT_PARAMETER(map2) + UMAT_UPLOAD_INPUT_PARAMETER(map2); } void Near(double threshold = 0.0) { - OCL_EXPECT_MATS_NEAR(dst, threshold) + OCL_EXPECT_MATS_NEAR(dst, threshold); } }; diff --git a/modules/photo/test/ocl/test_denoising.cpp b/modules/photo/test/ocl/test_denoising.cpp index 745a45745f..cc880886bd 100644 --- a/modules/photo/test/ocl/test_denoising.cpp +++ b/modules/photo/test/ocl/test_denoising.cpp @@ -19,8 +19,8 @@ PARAM_TEST_CASE(FastNlMeansDenoisingTestBase, Channels, bool) float h; bool use_roi; - TEST_DECLARE_INPUT_PARAMETER(src) - TEST_DECLARE_OUTPUT_PARAMETER(dst) + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); virtual void SetUp() { @@ -52,8 +52,8 @@ PARAM_TEST_CASE(FastNlMeansDenoisingTestBase, Channels, bool) Border dstBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, roiSize, dstBorder, type, 0, 255); - UMAT_UPLOAD_INPUT_PARAMETER(src) - UMAT_UPLOAD_OUTPUT_PARAMETER(dst) + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); } }; @@ -68,7 +68,7 @@ OCL_TEST_P(FastNlMeansDenoising, Mat) OCL_OFF(cv::fastNlMeansDenoising(src_roi, dst_roi, h, templateWindowSize, searchWindowSize)); OCL_ON(cv::fastNlMeansDenoising(usrc_roi, udst_roi, h, templateWindowSize, searchWindowSize)); - OCL_EXPECT_MATS_NEAR(dst, 1) + OCL_EXPECT_MATS_NEAR(dst, 1); } } @@ -83,7 +83,7 @@ OCL_TEST_P(fastNlMeansDenoisingColored, Mat) OCL_OFF(cv::fastNlMeansDenoisingColored(src_roi, dst_roi, h, h, templateWindowSize, searchWindowSize)); OCL_ON(cv::fastNlMeansDenoisingColored(usrc_roi, udst_roi, h, h, templateWindowSize, searchWindowSize)); - OCL_EXPECT_MATS_NEAR(dst, 1) + OCL_EXPECT_MATS_NEAR(dst, 1); } } diff --git a/modules/ts/include/opencv2/ts/ocl_test.hpp b/modules/ts/include/opencv2/ts/ocl_test.hpp index 169e34fdcc..0f0d9657fe 100644 --- a/modules/ts/include/opencv2/ts/ocl_test.hpp +++ b/modules/ts/include/opencv2/ts/ocl_test.hpp @@ -62,53 +62,73 @@ extern int test_loop_times; #define MAX_VALUE 357 #define EXPECT_MAT_NORM(mat, eps) \ +do \ { \ - EXPECT_LE(TestUtils::checkNorm(mat), eps) \ -} + EXPECT_LE(TestUtils::checkNorm1(mat), eps) \ +} while ((void)0, 0) #define EXPECT_MAT_NEAR(mat1, mat2, eps) \ +do \ { \ ASSERT_EQ(mat1.type(), mat2.type()); \ ASSERT_EQ(mat1.size(), mat2.size()); \ - EXPECT_LE(TestUtils::checkNorm(mat1, mat2), eps) \ + EXPECT_LE(TestUtils::checkNorm2(mat1, mat2), eps) \ << "Size: " << mat1.size() << std::endl; \ -} +} while ((void)0, 0) #define EXPECT_MAT_NEAR_RELATIVE(mat1, mat2, eps) \ +do \ { \ ASSERT_EQ(mat1.type(), mat2.type()); \ ASSERT_EQ(mat1.size(), mat2.size()); \ EXPECT_LE(TestUtils::checkNormRelative(mat1, mat2), eps) \ << "Size: " << mat1.size() << std::endl; \ -} +} while ((void)0, 0) #define OCL_EXPECT_MATS_NEAR(name, eps) \ +do \ { \ - EXPECT_MAT_NEAR(name ## _roi, u ## name ## _roi, eps); \ - int nextValue = rng.next(); \ - RNG dataRng1(nextValue), dataRng2(nextValue); \ - dataRng1.fill(name ## _roi, RNG::UNIFORM, Scalar::all(-MAX_VALUE), Scalar::all(MAX_VALUE)); \ - dataRng2.fill(u ## name ## _roi, RNG::UNIFORM, Scalar::all(-MAX_VALUE), Scalar::all(MAX_VALUE)); \ - EXPECT_MAT_NEAR(name, u ## name, 0/*FLT_EPSILON*/); \ -} + ASSERT_EQ(name ## _roi.type(), u ## name ## _roi.type()); \ + ASSERT_EQ(name ## _roi.size(), u ## name ## _roi.size()); \ + EXPECT_LE(TestUtils::checkNorm2(name ## _roi, u ## name ## _roi), eps) \ + << "Size: " << name ## _roi.size() << std::endl; \ + Point _offset; \ + Size _wholeSize; \ + u ## name ## _roi.locateROI(_wholeSize, _offset); \ + Mat _mask(name.size(), CV_8UC1, Scalar::all(255)); \ + _mask(Rect(_offset, name ## _roi.size())).setTo(Scalar::all(0)); \ + ASSERT_EQ(name.type(), u ## name.type()); \ + ASSERT_EQ(name.size(), u ## name.size()); \ + EXPECT_LE(TestUtils::checkNorm2(name, u ## name, _mask), eps) \ + << "Size: " << name ## _roi.size() << std::endl; \ +} while ((void)0, 0) #define OCL_EXPECT_MATS_NEAR_RELATIVE(name, eps) \ +do \ { \ - EXPECT_MAT_NEAR_RELATIVE(name ## _roi, u ## name ## _roi, eps); \ - int nextValue = rng.next(); \ - RNG dataRng1(nextValue), dataRng2(nextValue); \ - dataRng1.fill(name ## _roi, RNG::UNIFORM, Scalar::all(-MAX_VALUE), Scalar::all(MAX_VALUE)); \ - dataRng2.fill(u ## name ## _roi, RNG::UNIFORM, Scalar::all(-MAX_VALUE), Scalar::all(MAX_VALUE)); \ - EXPECT_MAT_NEAR_RELATIVE(name, u ## name, 0/*FLT_EPSILON*/); \ -} + ASSERT_EQ(name ## _roi.type(), u ## name ## _roi.type()); \ + ASSERT_EQ(name ## _roi.size(), u ## name ## _roi.size()); \ + EXPECT_LE(TestUtils::checkNormRelative(name ## _roi, u ## name ## _roi), eps) \ + << "Size: " << name ## _roi.size() << std::endl; \ + Point _offset; \ + Size _wholeSize; \ + name ## _roi.locateROI(_wholeSize, _offset); \ + Mat _mask(name.size(), CV_8UC1, Scalar::all(255)); \ + _mask(Rect(_offset, name ## _roi.size())).setTo(Scalar::all(0)); \ + ASSERT_EQ(name.type(), u ## name.type()); \ + ASSERT_EQ(name.size(), u ## name.size()); \ + EXPECT_LE(TestUtils::checkNormRelative(name, u ## name, _mask), eps) \ + << "Size: " << name ## _roi.size() << std::endl; \ +} while ((void)0, 0) #define EXPECT_MAT_SIMILAR(mat1, mat2, eps) \ +do \ { \ ASSERT_EQ(mat1.type(), mat2.type()); \ ASSERT_EQ(mat1.size(), mat2.size()); \ EXPECT_LE(checkSimilarity(mat1, mat2), eps) \ << "Size: " << mat1.size() << std::endl; \ -} +} while ((void)0, 0) using perf::MatDepth; using perf::MatType; @@ -205,28 +225,30 @@ struct CV_EXPORTS TestUtils static cv::Mat readImage(const String &fileName, int flags = cv::IMREAD_COLOR); static cv::Mat readImageType(const String &fname, int type); - static double checkNorm(InputArray m); - static double checkNorm(InputArray m1, InputArray m2); + static double checkNorm1(InputArray m, InputArray mask = noArray()); + static double checkNorm2(InputArray m1, InputArray m2, InputArray mask = noArray()); static double checkSimilarity(InputArray m1, InputArray m2); static void showDiff(InputArray _src, InputArray _gold, InputArray _actual, double eps, bool alwaysShow); - static inline double checkNormRelative(InputArray m1, InputArray m2) + static inline double checkNormRelative(InputArray m1, InputArray m2, InputArray mask = noArray()) { - return cv::norm(m1.getMat(), m2.getMat(), cv::NORM_INF) / + return cv::norm(m1.getMat(), m2.getMat(), cv::NORM_INF, mask) / std::max((double)std::numeric_limits::epsilon(), (double)std::max(cv::norm(m1.getMat(), cv::NORM_INF), norm(m2.getMat(), cv::NORM_INF))); } }; -#define TEST_DECLARE_INPUT_PARAMETER(name) Mat name, name ## _roi; UMat u ## name, u ## name ## _roi; +#define TEST_DECLARE_INPUT_PARAMETER(name) Mat name, name ## _roi; UMat u ## name, u ## name ## _roi #define TEST_DECLARE_OUTPUT_PARAMETER(name) TEST_DECLARE_INPUT_PARAMETER(name) #define UMAT_UPLOAD_INPUT_PARAMETER(name) \ +do \ { \ name.copyTo(u ## name); \ Size _wholeSize; Point ofs; name ## _roi.locateROI(_wholeSize, ofs); \ u ## name ## _roi = u ## name(Rect(ofs.x, ofs.y, name ## _roi.size().width, name ## _roi.size().height)); \ -} +} while ((void)0, 0) + #define UMAT_UPLOAD_OUTPUT_PARAMETER(name) UMAT_UPLOAD_INPUT_PARAMETER(name) template diff --git a/modules/ts/src/ocl_test.cpp b/modules/ts/src/ocl_test.cpp index caf5bf4105..0291cadbed 100644 --- a/modules/ts/src/ocl_test.cpp +++ b/modules/ts/src/ocl_test.cpp @@ -223,14 +223,14 @@ Mat TestUtils::readImageType(const String &fname, int type) return src; } -double TestUtils::checkNorm(InputArray m) +double TestUtils::checkNorm1(InputArray m, InputArray mask) { - return norm(m.getMat(), NORM_INF); + return norm(m.getMat(), NORM_INF, mask); } -double TestUtils::checkNorm(InputArray m1, InputArray m2) +double TestUtils::checkNorm2(InputArray m1, InputArray m2, InputArray mask) { - return norm(m1.getMat(), m2.getMat(), NORM_INF); + return norm(m1.getMat(), m2.getMat(), NORM_INF, mask); } double TestUtils::checkSimilarity(InputArray m1, InputArray m2) diff --git a/modules/video/test/ocl/test_bgfg_mog2.cpp b/modules/video/test/ocl/test_bgfg_mog2.cpp index bfb1621fe6..0a52227ece 100644 --- a/modules/video/test/ocl/test_bgfg_mog2.cpp +++ b/modules/video/test/ocl/test_bgfg_mog2.cpp @@ -70,7 +70,7 @@ OCL_TEST_P(Mog2_Update, Accuracy) OCL_ON (mog2_ocl->apply(frame, u_foreground)); if (detectShadow) - EXPECT_MAT_SIMILAR(foreground, u_foreground, 15e-3) + EXPECT_MAT_SIMILAR(foreground, u_foreground, 15e-3); else EXPECT_MAT_NEAR(foreground, u_foreground, 0); } @@ -133,4 +133,4 @@ OCL_INSTANTIATE_TEST_CASE_P(OCL_Video, Mog2_getBackgroundImage, (Values(DetectSh }}// namespace cvtest::ocl #endif -#endif \ No newline at end of file +#endif diff --git a/modules/video/test/ocl/test_motempl.cpp b/modules/video/test/ocl/test_motempl.cpp index 7b4c22755e..91053d9add 100644 --- a/modules/video/test/ocl/test_motempl.cpp +++ b/modules/video/test/ocl/test_motempl.cpp @@ -18,8 +18,8 @@ PARAM_TEST_CASE(UpdateMotionHistory, bool) double timestamp, duration; bool use_roi; - TEST_DECLARE_INPUT_PARAMETER(silhouette) - TEST_DECLARE_OUTPUT_PARAMETER(mhi) + TEST_DECLARE_INPUT_PARAMETER(silhouette); + TEST_DECLARE_OUTPUT_PARAMETER(mhi); virtual void SetUp() { @@ -40,8 +40,8 @@ PARAM_TEST_CASE(UpdateMotionHistory, bool) if (timestamp < duration) std::swap(timestamp, duration); - UMAT_UPLOAD_INPUT_PARAMETER(silhouette) - UMAT_UPLOAD_OUTPUT_PARAMETER(mhi) + UMAT_UPLOAD_INPUT_PARAMETER(silhouette); + UMAT_UPLOAD_OUTPUT_PARAMETER(mhi); } }; @@ -54,7 +54,7 @@ OCL_TEST_P(UpdateMotionHistory, Mat) OCL_OFF(cv::updateMotionHistory(silhouette_roi, mhi_roi, timestamp, duration)); OCL_ON(cv::updateMotionHistory(usilhouette_roi, umhi_roi, timestamp, duration)); - OCL_EXPECT_MATS_NEAR(mhi, 0) + OCL_EXPECT_MATS_NEAR(mhi, 0); } } diff --git a/modules/video/test/ocl/test_optflow_farneback.cpp b/modules/video/test/ocl/test_optflow_farneback.cpp index c2d13e0065..cc40f749ba 100644 --- a/modules/video/test/ocl/test_optflow_farneback.cpp +++ b/modules/video/test/ocl/test_optflow_farneback.cpp @@ -101,7 +101,7 @@ OCL_TEST_P(FarnebackOpticalFlow, Mat) OCL_OFF(cv::calcOpticalFlowFarneback(frame0, frame1, flow, pyrScale, numLevels, winSize, numIters, polyN, polySigma, flags)); OCL_ON(cv::calcOpticalFlowFarneback(frame0, frame1, uflow, pyrScale, numLevels, winSize, numIters, polyN, polySigma, flags)); - EXPECT_MAT_SIMILAR(flow, uflow, 0.1) + EXPECT_MAT_SIMILAR(flow, uflow, 0.1); } @@ -117,4 +117,4 @@ OCL_INSTANTIATE_TEST_CASE_P(Video, FarnebackOpticalFlow, } } // namespace cvtest::ocl -#endif // HAVE_OPENCL \ No newline at end of file +#endif // HAVE_OPENCL From b449b0bf71cf7fb69d8dd7a61ce43ebd5d239f91 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Wed, 19 Mar 2014 15:59:00 +0400 Subject: [PATCH 037/117] simplified cv::sepFilter2D OpenCL part --- modules/imgproc/src/filter.cpp | 137 +++---- modules/imgproc/src/opencl/filterSepCol.cl | 62 ++- modules/imgproc/src/opencl/filterSepRow.cl | 373 ++++-------------- .../src/opencl/filterSep_singlePass.cl | 11 +- modules/imgproc/test/ocl/test_sepfilter2D.cpp | 4 +- 5 files changed, 167 insertions(+), 420 deletions(-) diff --git a/modules/imgproc/src/filter.cpp b/modules/imgproc/src/filter.cpp index bb54471c07..ba2e347af0 100644 --- a/modules/imgproc/src/filter.cpp +++ b/modules/imgproc/src/filter.cpp @@ -41,6 +41,7 @@ //M*/ #include "precomp.hpp" +#define CV_OPENCL_RUN_ASSERT #include "opencl_kernels.hpp" #include @@ -3317,11 +3318,9 @@ static bool ocl_filter2D( InputArray _src, OutputArray _dst, int ddepth, return kernel.run(2, globalsize, localsize, true); } -static bool ocl_sepRowFilter2D( UMat &src, UMat &buf, Mat &kernelX, int anchor, int borderType, bool sync) +static bool ocl_sepRowFilter2D( UMat &src, UMat &buf, Mat &kernelX, int anchor, int borderType) { - int type = src.type(); - int cn = CV_MAT_CN(type); - int sdepth = CV_MAT_DEPTH(type); + int type = src.type(), cn = CV_MAT_CN(type), sdepth = CV_MAT_DEPTH(type); Size bufSize = buf.size(); #ifdef ANDROID @@ -3329,27 +3328,14 @@ static bool ocl_sepRowFilter2D( UMat &src, UMat &buf, Mat &kernelX, int anchor, #else size_t localsize[2] = {16, 16}; #endif + size_t globalsize[2] = {DIVUP(bufSize.width, localsize[0]) * localsize[0], DIVUP(bufSize.height, localsize[1]) * localsize[1]}; - if (CV_8U == sdepth) - { - switch (cn) - { - case 1: - globalsize[0] = DIVUP((bufSize.width + 3) >> 2, localsize[0]) * localsize[0]; - break; - case 2: - globalsize[0] = DIVUP((bufSize.width + 1) >> 1, localsize[0]) * localsize[0]; - break; - case 4: - globalsize[0] = DIVUP(bufSize.width, localsize[0]) * localsize[0]; - break; - } - } + if (type == CV_8UC1) + globalsize[0] = DIVUP((bufSize.width + 3) >> 2, localsize[0]) * localsize[0]; - int radiusX = anchor; - int radiusY = (int)((buf.rows - src.rows) >> 1); + int radiusX = anchor, radiusY = (buf.rows - src.rows) >> 1; - bool isIsolatedBorder = (borderType & BORDER_ISOLATED) != 0; + bool isolated = (borderType & BORDER_ISOLATED) != 0; const char * const borderMap[] = { "BORDER_CONSTANT", "BORDER_REPLICATE", "BORDER_REFLECT", "BORDER_WRAP", "BORDER_REFLECT_101" }, * const btype = borderMap[borderType & ~BORDER_ISOLATED]; @@ -3358,49 +3344,38 @@ static bool ocl_sepRowFilter2D( UMat &src, UMat &buf, Mat &kernelX, int anchor, extra_extrapolation |= src.cols < (int)((-radiusX + globalsize[0] + 8 * localsize[0] + 3) >> 1) + 1; extra_extrapolation |= src.cols < radiusX; - cv::String build_options = cv::format("-D RADIUSX=%d -D LSIZE0=%d -D LSIZE1=%d -D CN=%d -D %s -D %s -D %s", - radiusX, (int)localsize[0], (int)localsize[1], cn, - btype, - extra_extrapolation ? "EXTRA_EXTRAPOLATION" : "NO_EXTRA_EXTRAPOLATION", - isIsolatedBorder ? "BORDER_ISOLATED" : "NO_BORDER_ISOLATED"); + char cvt[40]; + cv::String build_options = cv::format("-D RADIUSX=%d -D LSIZE0=%d -D LSIZE1=%d -D CN=%d -D %s -D %s -D %s" + " -D srcT=%s -D dstT=%s -D convertToDstT=%s -D srcT1=%s -D dstT1=%s", + radiusX, (int)localsize[0], (int)localsize[1], cn, btype, + extra_extrapolation ? "EXTRA_EXTRAPOLATION" : "NO_EXTRA_EXTRAPOLATION", + isolated ? "BORDER_ISOLATED" : "NO_BORDER_ISOLATED", + ocl::typeToStr(type), ocl::typeToStr(CV_32FC(cn)), + ocl::convertTypeStr(sdepth, CV_32F, cn, cvt), + ocl::typeToStr(sdepth), ocl::typeToStr(CV_32F)); build_options += ocl::kernelToStr(kernelX, CV_32F); Size srcWholeSize; Point srcOffset; src.locateROI(srcWholeSize, srcOffset); - std::stringstream strKernel; - strKernel << "row_filter"; - if (-1 != cn) - strKernel << "_C" << cn; - if (-1 != sdepth) - strKernel << "_D" << sdepth; + String kernelName("row_filter"); + if (type == CV_8UC1) + kernelName += "_C1_D0"; - ocl::Kernel kernelRow; - if (!kernelRow.create(strKernel.str().c_str(), cv::ocl::imgproc::filterSepRow_oclsrc, - build_options)) + ocl::Kernel k(kernelName.c_str(), cv::ocl::imgproc::filterSepRow_oclsrc, + build_options); + if (k.empty()) return false; - int idxArg = 0; - idxArg = kernelRow.set(idxArg, ocl::KernelArg::PtrReadOnly(src)); - idxArg = kernelRow.set(idxArg, (int)(src.step / src.elemSize())); - - idxArg = kernelRow.set(idxArg, srcOffset.x); - idxArg = kernelRow.set(idxArg, srcOffset.y); - idxArg = kernelRow.set(idxArg, src.cols); - idxArg = kernelRow.set(idxArg, src.rows); - idxArg = kernelRow.set(idxArg, srcWholeSize.width); - idxArg = kernelRow.set(idxArg, srcWholeSize.height); - - idxArg = kernelRow.set(idxArg, ocl::KernelArg::PtrWriteOnly(buf)); - idxArg = kernelRow.set(idxArg, (int)(buf.step / buf.elemSize())); - idxArg = kernelRow.set(idxArg, buf.cols); - idxArg = kernelRow.set(idxArg, buf.rows); - idxArg = kernelRow.set(idxArg, radiusY); - - return kernelRow.run(2, globalsize, localsize, sync); + k.args(ocl::KernelArg::PtrReadOnly(src), (int)(src.step / src.elemSize()), srcOffset.x, + srcOffset.y, src.cols, src.rows, srcWholeSize.width, srcWholeSize.height, + ocl::KernelArg::PtrWriteOnly(buf), (int)(buf.step / buf.elemSize()), + buf.cols, buf.rows, radiusY); + + return k.run(2, globalsize, localsize, false); } -static bool ocl_sepColFilter2D(const UMat &buf, UMat &dst, Mat &kernelY, int anchor, bool sync) +static bool ocl_sepColFilter2D(const UMat &buf, UMat &dst, Mat &kernelY, int anchor) { #ifdef ANDROID size_t localsize[2] = {16, 10}; @@ -3420,28 +3395,23 @@ static bool ocl_sepColFilter2D(const UMat &buf, UMat &dst, Mat &kernelY, int anc globalsize[0] = DIVUP(sz.width, localsize[0]) * localsize[0]; char cvt[40]; - cv::String build_options = cv::format("-D RADIUSY=%d -D LSIZE0=%d -D LSIZE1=%d -D CN=%d -D GENTYPE_SRC=%s -D GENTYPE_DST=%s -D convert_to_DST=%s", - anchor, (int)localsize[0], (int)localsize[1], cn, ocl::typeToStr(buf.type()), - ocl::typeToStr(dtype), ocl::convertTypeStr(CV_32F, ddepth, cn, cvt)); + cv::String build_options = cv::format("-D RADIUSY=%d -D LSIZE0=%d -D LSIZE1=%d -D CN=%d" + " -D srcT=%s -D dstT=%s -D convertToDstT=%s", + anchor, (int)localsize[0], (int)localsize[1], cn, + ocl::typeToStr(buf.type()), ocl::typeToStr(dtype), + ocl::convertTypeStr(CV_32F, ddepth, cn, cvt)); build_options += ocl::kernelToStr(kernelY, CV_32F); - ocl::Kernel kernelCol; - if (!kernelCol.create("col_filter", cv::ocl::imgproc::filterSepCol_oclsrc, build_options)) + ocl::Kernel k("col_filter", cv::ocl::imgproc::filterSepCol_oclsrc, + build_options); + if (k.empty()) return false; - int idxArg = 0; - idxArg = kernelCol.set(idxArg, ocl::KernelArg::PtrReadOnly(buf)); - idxArg = kernelCol.set(idxArg, (int)(buf.step / buf.elemSize())); - idxArg = kernelCol.set(idxArg, buf.cols); - idxArg = kernelCol.set(idxArg, buf.rows); - - idxArg = kernelCol.set(idxArg, ocl::KernelArg::PtrWriteOnly(dst)); - idxArg = kernelCol.set(idxArg, (int)(dst.offset / dst.elemSize())); - idxArg = kernelCol.set(idxArg, (int)(dst.step / dst.elemSize())); - idxArg = kernelCol.set(idxArg, dst.cols); - idxArg = kernelCol.set(idxArg, dst.rows); - - return kernelCol.run(2, globalsize, localsize, sync); + k.args(ocl::KernelArg::PtrReadOnly(buf), (int)(buf.step / buf.elemSize()), buf.cols, + buf.rows, ocl::KernelArg::PtrWriteOnly(dst), (int)(dst.offset / dst.elemSize()), + (int)(dst.step / dst.elemSize()), dst.cols, dst.rows); + + return k.run(2, globalsize, localsize, false); } const int optimizedSepFilterLocalSize = 16; @@ -3473,12 +3443,14 @@ static bool ocl_sepFilter2D_SinglePass(InputArray _src, OutputArray _dst, String opts = cv::format("-D BLK_X=%d -D BLK_Y=%d -D RADIUSX=%d -D RADIUSY=%d%s%s" " -D srcT=%s -D convertToWT=%s -D WT=%s -D dstT=%s -D convertToDstT=%s" - " -D %s", (int)lt2[0], (int)lt2[1], _row_kernel.size().height / 2, _col_kernel.size().height / 2, + " -D %s -D srcT1=%s -D dstT1=%s -D cn=%d", (int)lt2[0], (int)lt2[1], + _row_kernel.size().height / 2, _col_kernel.size().height / 2, ocl::kernelToStr(_row_kernel, CV_32F, "KERNEL_MATRIX_X").c_str(), ocl::kernelToStr(_col_kernel, CV_32F, "KERNEL_MATRIX_Y").c_str(), ocl::typeToStr(stype), ocl::convertTypeStr(sdepth, wdepth, cn, cvt[0]), ocl::typeToStr(CV_MAKE_TYPE(wdepth, cn)), ocl::typeToStr(dtype), - ocl::convertTypeStr(wdepth, ddepth, cn, cvt[1]), borderMap[borderType]); + ocl::convertTypeStr(wdepth, ddepth, cn, cvt[1]), borderMap[borderType], + ocl::typeToStr(sdepth), ocl::typeToStr(ddepth), cn); ocl::Kernel k("sep_filter", ocl::imgproc::filterSep_singlePass_oclsrc, opts); if (k.empty()) @@ -3529,10 +3501,13 @@ static bool ocl_sepFilter2D( InputArray _src, OutputArray _dst, int ddepth, if (ddepth < 0) ddepth = sdepth; - CV_OCL_RUN_(kernelY.rows <= 21 && kernelX.rows <= 21 && - imgSize.width > optimizedSepFilterLocalSize + (kernelX.rows >> 1) && - imgSize.height > optimizedSepFilterLocalSize + (kernelY.rows >> 1), - ocl_sepFilter2D_SinglePass(_src, _dst, _kernelX, _kernelY, borderType, ddepth), true) +// printf("%d %d\n", imgSize.width, optimizedSepFilterLocalSize + (kernelX.rows >> 1)); +// printf("%d %d\n", imgSize.height, optimizedSepFilterLocalSize + (kernelY.rows >> 1)); + +// CV_OCL_RUN_(kernelY.rows <= 21 && kernelX.rows <= 21 && +// imgSize.width > optimizedSepFilterLocalSize + (kernelX.rows >> 1) && +// imgSize.height > optimizedSepFilterLocalSize + (kernelY.rows >> 1), +// ocl_sepFilter2D_SinglePass(_src, _dst, _kernelX, _kernelY, borderType, ddepth), true) UMat src = _src.getUMat(); Size srcWholeSize; Point srcOffset; @@ -3546,12 +3521,12 @@ static bool ocl_sepFilter2D( InputArray _src, OutputArray _dst, int ddepth, Size srcSize = src.size(); Size bufSize(srcSize.width, srcSize.height + kernelY.cols - 1); UMat buf; buf.create(bufSize, CV_MAKETYPE(CV_32F, cn)); - if (!ocl_sepRowFilter2D(src, buf, kernelX, anchor.x, borderType, false)) + if (!ocl_sepRowFilter2D(src, buf, kernelX, anchor.x, borderType)) return false; _dst.create(srcSize, CV_MAKETYPE(ddepth, cn)); UMat dst = _dst.getUMat(); - return ocl_sepColFilter2D(buf, dst, kernelY, anchor.y, false); + return ocl_sepColFilter2D(buf, dst, kernelY, anchor.y); } #endif diff --git a/modules/imgproc/src/opencl/filterSepCol.cl b/modules/imgproc/src/opencl/filterSepCol.cl index 30a2221cf1..05717c6ad2 100644 --- a/modules/imgproc/src/opencl/filterSepCol.cl +++ b/modules/imgproc/src/opencl/filterSepCol.cl @@ -36,16 +36,6 @@ #define READ_TIMES_COL ((2*(RADIUSY+LSIZE1)-1)/LSIZE1) #define RADIUS 1 -#if CN ==1 -#define ALIGN (((RADIUS)+3)>>2<<2) -#elif CN==2 -#define ALIGN (((RADIUS)+1)>>1<<1) -#elif CN==3 -#define ALIGN (((RADIUS)+3)>>2<<2) -#elif CN==4 -#define ALIGN (RADIUS) -#define READ_TIMES_ROW ((2*(RADIUS+LSIZE0)-1)/LSIZE0) -#endif #define noconvert @@ -65,16 +55,8 @@ The info above maybe obsolete. #define DIG(a) a, __constant float mat_kernel[] = { COEFF }; -__kernel __attribute__((reqd_work_group_size(LSIZE0,LSIZE1,1))) void col_filter - (__global const GENTYPE_SRC * restrict src, - const int src_step_in_pixel, - const int src_whole_cols, - const int src_whole_rows, - __global GENTYPE_DST * dst, - const int dst_offset_in_pixel, - const int dst_step_in_pixel, - const int dst_cols, - const int dst_rows) +__kernel void col_filter(__global const srcT * src, int src_step_in_pixel, int src_whole_cols, int src_whole_rows, + __global dstT * dst, int dst_offset_in_pixel, int dst_step_in_pixel, int dst_cols, int dst_rows) { int x = get_global_id(0); int y = get_global_id(1); @@ -85,35 +67,35 @@ __kernel __attribute__((reqd_work_group_size(LSIZE0,LSIZE1,1))) void col_filter int start_addr = mad24(y, src_step_in_pixel, x); int end_addr = mad24(src_whole_rows - 1, src_step_in_pixel, src_whole_cols); - int i; - GENTYPE_SRC sum, temp[READ_TIMES_COL]; - __local GENTYPE_SRC LDS_DAT[LSIZE1 * READ_TIMES_COL][LSIZE0 + 1]; + srcT sum, temp[READ_TIMES_COL]; + __local srcT LDS_DAT[LSIZE1 * READ_TIMES_COL][LSIZE0 + 1]; - //read pixels from src - for(i = 0;i>2<<2) -#elif CN==2 -#define ALIGN (((RADIUS)+1)>>1<<1) -#elif CN==3 -#define ALIGN (((RADIUS)+3)>>2<<2) -#elif CN==4 -#define ALIGN (RADIUS) -#endif #ifdef BORDER_REPLICATE -//BORDER_REPLICATE: aaaaaa|abcdefgh|hhhhhhh +// BORDER_REPLICATE: aaaaaa|abcdefgh|hhhhhhh #define ADDR_L(i, l_edge, r_edge) ((i) < (l_edge) ? (l_edge) : (i)) #define ADDR_R(i, r_edge, addr) ((i) >= (r_edge) ? (r_edge)-1 : (addr)) #endif #ifdef BORDER_REFLECT -//BORDER_REFLECT: fedcba|abcdefgh|hgfedcb +// BORDER_REFLECT: fedcba|abcdefgh|hgfedcb #define ADDR_L(i, l_edge, r_edge) ((i) < (l_edge) ? -(i)-1 : (i)) #define ADDR_R(i, r_edge, addr) ((i) >= (r_edge) ? -(i)-1+((r_edge)<<1) : (addr)) #endif #ifdef BORDER_REFLECT_101 -//BORDER_REFLECT_101: gfedcb|abcdefgh|gfedcba +// BORDER_REFLECT_101: gfedcb|abcdefgh|gfedcba #define ADDR_L(i, l_edge, r_edge) ((i) < (l_edge) ? -(i) : (i)) #define ADDR_R(i, r_edge, addr) ((i) >= (r_edge) ? -(i)-2+((r_edge)<<1) : (addr)) #endif -//blur function does not support BORDER_WRAP #ifdef BORDER_WRAP -//BORDER_WRAP: cdefgh|abcdefgh|abcdefg +// BORDER_WRAP: cdefgh|abcdefgh|abcdefg #define ADDR_L(i, l_edge, r_edge) ((i) < (l_edge) ? (i)+(r_edge) : (i)) #define ADDR_R(i, r_edge, addr) ((i) >= (r_edge) ? (i)-(r_edge) : (addr)) #endif @@ -127,65 +115,56 @@ #endif //BORDER_CONSTANT #endif //EXTRA_EXTRAPOLATION -/********************************************************************************** -These kernels are written for separable filters such as Sobel, Scharr, GaussianBlur. -Now(6/29/2011) the kernels only support 8U data type and the anchor of the convovle -kernel must be in the center. ROI is not supported either. -For channels =1,2,4, each kernels read 4 elements(not 4 pixels), and for channels =3, -the kernel read 4 pixels, save them to LDS and read the data needed from LDS to -calculate the result. -The length of the convovle kernel supported is related to the LSIZE0 and the MAX size -of LDS, which is HW related. -For channels = 1,3 the RADIUS is no more than LSIZE0*2 -For channels = 2, the RADIUS is no more than LSIZE0 -For channels = 4, arbitary RADIUS is supported unless the LDS is not enough -Niko -6/29/2011 -The info above maybe obsolete. -***********************************************************************************/ +#define noconvert + +#if cn != 3 +#define loadpix(addr) *(__global const srcT *)(addr) +#define storepix(val, addr) *(__global dstT *)(addr) = val +#define SRCSIZE ((int)sizeof(srcT)) +#define DSTSIZE ((int)sizeof(dstT)) +#else +#define loadpix(addr) vload3(0, (__global const srcT1 *)(addr)) +#define storepix(val, addr) vstore3(val, 0, (__global dstT1 *)(addr)) +#define SRCSIZE ((int)sizeof(srcT1)*3) +#define DSTSIZE ((int)sizeof(dstT1)*3) +#endif #define DIG(a) a, __constant float mat_kernel[] = { COEFF }; -__kernel __attribute__((reqd_work_group_size(LSIZE0,LSIZE1,1))) void row_filter_C1_D0 - (__global uchar * restrict src, - int src_step_in_pixel, - int src_offset_x, int src_offset_y, - int src_cols, int src_rows, - int src_whole_cols, int src_whole_rows, - __global float * dst, - int dst_step_in_pixel, - int dst_cols, int dst_rows, - int radiusy) +__kernel void row_filter_C1_D0(__global const uchar * src, int src_step_in_pixel, int src_offset_x, int src_offset_y, + int src_cols, int src_rows, int src_whole_cols, int src_whole_rows, + __global float * dst, int dst_step_in_pixel, int dst_cols, int dst_rows, + int radiusy) { int x = get_global_id(0)<<2; int y = get_global_id(1); int l_x = get_local_id(0); int l_y = get_local_id(1); - int start_x = x+src_offset_x - RADIUSX & 0xfffffffc; + int start_x = x + src_offset_x - RADIUSX & 0xfffffffc; int offset = src_offset_x - RADIUSX & 3; int start_y = y + src_offset_y - radiusy; int start_addr = mad24(start_y, src_step_in_pixel, start_x); - int i; + float4 sum; uchar4 temp[READ_TIMES_ROW]; - __local uchar4 LDS_DAT[LSIZE1][READ_TIMES_ROW*LSIZE0+1]; + __local uchar4 LDS_DAT[LSIZE1][READ_TIMES_ROW * LSIZE0 + 1]; #ifdef BORDER_CONSTANT int end_addr = mad24(src_whole_rows - 1, src_step_in_pixel, src_whole_cols); // read pixels from src - for (i = 0; i < READ_TIMES_ROW; i++) + for (int i = 0; i < READ_TIMES_ROW; ++i) { - int current_addr = start_addr+i*LSIZE0*4; - current_addr = ((current_addr < end_addr) && (current_addr > 0)) ? current_addr : 0; - temp[i] = *(__global uchar4*)&src[current_addr]; + int current_addr = mad24(i, LSIZE0 << 2, start_addr); + current_addr = current_addr < end_addr && current_addr > 0 ? current_addr : 0; + temp[i] = *(__global const uchar4 *)&src[current_addr]; } // judge if read out of boundary #ifdef BORDER_ISOLATED - for (i = 0; isrc_whole_cols)| (start_y<0) | (start_y >= src_whole_rows); #endif - int4 index[READ_TIMES_ROW]; - int4 addr; + int4 index[READ_TIMES_ROW], addr; int s_y; if (not_all_in_range) { // judge if read out of boundary - for (i = 0; i < READ_TIMES_ROW; i++) + for (int i = 0; i < READ_TIMES_ROW; ++i) { - index[i] = (int4)(start_x+i*LSIZE0*4) + (int4)(0, 1, 2, 3); + index[i] = (int4)(mad24(i, LSIZE0 << 2, start_x)) + (int4)(0, 1, 2, 3); #ifdef BORDER_ISOLATED EXTRAPOLATE(index[i].x, src_offset_x, src_offset_x + src_cols); EXTRAPOLATE(index[i].y, src_offset_x, src_offset_x + src_cols); @@ -231,6 +209,7 @@ __kernel __attribute__((reqd_work_group_size(LSIZE0,LSIZE1,1))) void row_filter_ EXTRAPOLATE(index[i].w, 0, src_whole_cols); #endif } + s_y = start_y; #ifdef BORDER_ISOLATED EXTRAPOLATE(s_y, src_offset_y, src_offset_y + src_rows); @@ -239,9 +218,9 @@ __kernel __attribute__((reqd_work_group_size(LSIZE0,LSIZE1,1))) void row_filter_ #endif // read pixels from src - for (i = 0; i 0)) ? current_addr : 0; + int current_addr = mad24(i, LSIZE0, start_addr); + current_addr = current_addr < end_addr && current_addr > 0 ? current_addr : 0; temp[i] = src[current_addr]; } - //judge if read out of boundary + // judge if read out of boundary #ifdef BORDER_ISOLATED - for (i = 0; i 0)) ? current_addr : 0; - temp[i] = src[current_addr]; - } - - // judge if read out of boundary -#ifdef BORDER_ISOLATED - for (i = 0; i 0)) ? current_addr : 0; - temp[i] = src[current_addr]; - } - - // judge if read out of boundary -#ifdef BORDER_ISOLATED - for (i = 0; i Date: Wed, 19 Mar 2014 13:05:38 +0100 Subject: [PATCH 038/117] 1. fix an error in sample code 2. change an external link to maintain consistency with the previous tutorial --- .../mat_the_basic_image_container.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/tutorials/core/mat_the_basic_image_container/mat_the_basic_image_container.rst b/doc/tutorials/core/mat_the_basic_image_container/mat_the_basic_image_container.rst index 171d2e683f..ce65c0a42a 100644 --- a/doc/tutorials/core/mat_the_basic_image_container/mat_the_basic_image_container.rst +++ b/doc/tutorials/core/mat_the_basic_image_container/mat_the_basic_image_container.rst @@ -45,7 +45,7 @@ All the above objects, in the end, point to the same single data matrix. Their h :linenos: Mat D (A, Rect(10, 10, 100, 100) ); // using a rectangle - Mat E = A(Range:all(), Range(1,3)); // using row and column boundaries + Mat E = A(Range::all(), Range(1,3)); // using row and column boundaries Now you may ask if the matrix itself may belong to multiple *Mat* objects who takes responsibility for cleaning it up when it's no longer needed. The short answer is: the last object that used it. This is handled by using a reference counting mechanism. Whenever somebody copies a header of a *Mat* object, a counter is increased for the matrix. Whenever a header is cleaned this counter is decreased. When the counter reaches zero the matrix too is freed. Sometimes you will want to copy the matrix itself too, so OpenCV provides the :basicstructures:`clone() ` and :basicstructures:`copyTo() ` functions. @@ -86,7 +86,7 @@ Each of the building components has their own valid domains. This leads to the d Creating a *Mat* object explicitly ================================== -In the :ref:`Load_Save_Image` tutorial you have already learned how to write a matrix to an image file by using the :readWriteImageVideo:` imwrite() ` function. However, for debugging purposes it's much more convenient to see the actual values. You can do this using the << operator of *Mat*. Be aware that this only works for two dimensional matrices. +In the :ref:`Load_Save_Image` tutorial you have already learned how to write a matrix to an image file by using the :imwrite:`imwrite() <>` function. However, for debugging purposes it's much more convenient to see the actual values. You can do this using the << operator of *Mat*. Be aware that this only works for two dimensional matrices. Although *Mat* works really well as an image container, it is also a general matrix class. Therefore, it is possible to create and manipulate multidimensional matrices. You can create a Mat object in multiple ways: From 30a8308f8e66fd46483cb193cac66665666a77fd Mon Sep 17 00:00:00 2001 From: Alexander Karsakov Date: Wed, 19 Mar 2014 17:30:13 +0400 Subject: [PATCH 039/117] Enabled Intel-specific optimizations for HOG detector. --- modules/objdetect/src/hog.cpp | 16 +++++++++------- modules/objdetect/src/opencl/objdetect_hog.cl | 18 +++++++++++++----- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/modules/objdetect/src/hog.cpp b/modules/objdetect/src/hog.cpp index 18bb7afc22..0f4456ad51 100644 --- a/modules/objdetect/src/hog.cpp +++ b/modules/objdetect/src/hog.cpp @@ -1085,8 +1085,8 @@ static bool ocl_compute_gradients_8UC1(int height, int width, InputArray _img, f size_t globalThreads[3] = { width, height, 1 }; char correctGamma = (correct_gamma) ? 1 : 0; int grad_quadstep = (int)grad.step >> 3; - int qangle_step_shift = 0; - int qangle_step = (int)qangle.step >> (1 + qangle_step_shift); + int qangle_elem_size = CV_ELEM_SIZE1(qangle.type()); + int qangle_step = (int)qangle.step / (2 * qangle_elem_size); int idx = 0; idx = k.set(idx, height); @@ -1137,9 +1137,9 @@ static bool ocl_compute_hists(int nbins, int block_stride_x, int block_stride_y, int img_block_height = (height - CELLS_PER_BLOCK_Y * CELL_HEIGHT + block_stride_y)/block_stride_y; int blocks_total = img_block_width * img_block_height; - int qangle_step_shift = 0; + int qangle_elem_size = CV_ELEM_SIZE1(qangle.type()); int grad_quadstep = (int)grad.step >> 2; - int qangle_step = (int)qangle.step >> qangle_step_shift; + int qangle_step = (int)qangle.step / qangle_elem_size; int blocks_in_group = 4; size_t localThreads[3] = { blocks_in_group * 24, 2, 1 }; @@ -1316,11 +1316,12 @@ static bool ocl_extract_descrs_by_cols(int win_height, int win_width, int block_ static bool ocl_compute(InputArray _img, Size win_stride, std::vector& _descriptors, int descr_format, Size blockSize, Size cellSize, int nbins, Size blockStride, Size winSize, float sigma, bool gammaCorrection, double L2HysThreshold) { - Size imgSize = _img.size(); + Size imgSize = _img.size(); Size effect_size = imgSize; UMat grad(imgSize, CV_32FC2); - UMat qangle(imgSize, CV_8UC2); + int qangle_type = ocl::Device::getDefault().isIntel() ? CV_32SC2 : CV_8UC2; + UMat qangle(imgSize, qangle_type); const size_t block_hist_size = getBlockHistogramSize(blockSize, cellSize, nbins); const Size blocks_per_img = numPartsWithin(imgSize, blockSize, blockStride); @@ -1720,7 +1721,8 @@ static bool ocl_detect(InputArray img, std::vector &hits, double hit_thre Size imgSize = img.size(); Size effect_size = imgSize; UMat grad(imgSize, CV_32FC2); - UMat qangle(imgSize, CV_8UC2); + int qangle_type = ocl::Device::getDefault().isIntel() ? CV_32SC2 : CV_8UC2; + UMat qangle(imgSize, qangle_type); const size_t block_hist_size = getBlockHistogramSize(blockSize, cellSize, nbins); const Size blocks_per_img = numPartsWithin(imgSize, blockSize, blockStride); diff --git a/modules/objdetect/src/opencl/objdetect_hog.cl b/modules/objdetect/src/opencl/objdetect_hog.cl index 082f9ab7fb..5c71aa1b45 100644 --- a/modules/objdetect/src/opencl/objdetect_hog.cl +++ b/modules/objdetect/src/opencl/objdetect_hog.cl @@ -50,6 +50,14 @@ #define NTHREADS 256 #define CV_PI_F 3.1415926535897932384626433832795f +#ifdef INTEL_DEVICE +#define QANGLE_TYPE int +#define QANGLE_TYPE2 int2 +#else +#define QANGLE_TYPE uchar +#define QANGLE_TYPE2 uchar2 +#endif + //---------------------------------------------------------------------------- // Histogram computation // 12 threads for a cell, 12x4 threads per block @@ -59,7 +67,7 @@ __kernel void compute_hists_lut_kernel( const int cnbins, const int cblock_hist_size, const int img_block_width, const int blocks_in_group, const int blocks_total, const int grad_quadstep, const int qangle_step, - __global const float* grad, __global const uchar* qangle, + __global const float* grad, __global const QANGLE_TYPE* qangle, __global const float* gauss_w_lut, __global float* block_hists, __local float* smem) { @@ -86,7 +94,7 @@ __kernel void compute_hists_lut_kernel( __global const float* grad_ptr = (gid < blocks_total) ? grad + offset_y * grad_quadstep + (offset_x << 1) : grad; - __global const uchar* qangle_ptr = (gid < blocks_total) ? + __global const QANGLE_TYPE* qangle_ptr = (gid < blocks_total) ? qangle + offset_y * qangle_step + (offset_x << 1) : qangle; __local float* hist = hists + 12 * (cell_y * CELLS_PER_BLOCK_Y + cell_x) + @@ -101,7 +109,7 @@ __kernel void compute_hists_lut_kernel( for (int dist_y = dist_y_begin; dist_y < dist_y_begin + 12; ++dist_y) { float2 vote = (float2) (grad_ptr[0], grad_ptr[1]); - uchar2 bin = (uchar2) (qangle_ptr[0], qangle_ptr[1]); + QANGLE_TYPE2 bin = (QANGLE_TYPE2) (qangle_ptr[0], qangle_ptr[1]); grad_ptr += grad_quadstep; qangle_ptr += qangle_step; @@ -558,7 +566,7 @@ __kernel void extract_descrs_by_cols_kernel( __kernel void compute_gradients_8UC4_kernel( const int height, const int width, const int img_step, const int grad_quadstep, const int qangle_step, - const __global uchar4 * img, __global float * grad, __global uchar * qangle, + const __global uchar4 * img, __global float * grad, __global QANGLE_TYPE * qangle, const float angle_scale, const char correct_gamma, const int cnbins) { const int x = get_global_id(0); @@ -660,7 +668,7 @@ __kernel void compute_gradients_8UC4_kernel( __kernel void compute_gradients_8UC1_kernel( const int height, const int width, const int img_step, const int grad_quadstep, const int qangle_step, - __global const uchar * img, __global float * grad, __global uchar * qangle, + __global const uchar * img, __global float * grad, __global QANGLE_TYPE * qangle, const float angle_scale, const char correct_gamma, const int cnbins) { const int x = get_global_id(0); From 284b2fc1e735886c569685333d558f624ce58719 Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Fri, 28 Feb 2014 18:18:20 +0400 Subject: [PATCH 040/117] Cut path to CUDA libraries to prevent generation of OpenCVModules.cmake with abs path. --- CMakeLists.txt | 11 --------- cmake/OpenCVDetectAndroidSDK.cmake | 6 ++--- cmake/OpenCVDetectCUDA.cmake | 39 ++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fb49497412..747d207e36 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -467,7 +467,6 @@ include(cmake/OpenCVFindLibsGUI.cmake) include(cmake/OpenCVFindLibsVideo.cmake) include(cmake/OpenCVFindLibsPerf.cmake) - # ---------------------------------------------------------------------------- # Detect other 3rd-party libraries/tools # ---------------------------------------------------------------------------- @@ -513,16 +512,6 @@ if(NOT HAVE_CUDA) set(ENABLE_DYNAMIC_CUDA OFF) endif() -if(HAVE_CUDA AND NOT ENABLE_DYNAMIC_CUDA) - set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY}) - if(HAVE_CUBLAS) - set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${CUDA_cublas_LIBRARY}) - endif() - if(HAVE_CUFFT) - set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${CUDA_cufft_LIBRARY}) - endif() -endif() - # ---------------------------------------------------------------------------- # Solution folders: # ---------------------------------------------------------------------------- diff --git a/cmake/OpenCVDetectAndroidSDK.cmake b/cmake/OpenCVDetectAndroidSDK.cmake index af7427194e..273758967c 100644 --- a/cmake/OpenCVDetectAndroidSDK.cmake +++ b/cmake/OpenCVDetectAndroidSDK.cmake @@ -326,12 +326,12 @@ macro(add_android_project target path) # copy all needed CUDA libs to project if EMBED_CUDA flag is present if(android_proj_EMBED_CUDA) - set(android_proj_culibs ${CUDA_npp_LIBRARY} ${CUDA_LIBRARIES}) + set(android_proj_culibs ${CUDA_npp_LIBRARY_ABS} ${CUDA_LIBRARIES_ABS}) if(HAVE_CUFFT) - list(INSERT android_proj_culibs 0 ${CUDA_cufft_LIBRARY}) + list(INSERT android_proj_culibs 0 ${CUDA_cufft_LIBRARY_ABS}) endif() if(HAVE_CUBLAS) - list(INSERT android_proj_culibs 0 ${CUDA_cublas_LIBRARY}) + list(INSERT android_proj_culibs 0 ${CUDA_cublas_LIBRARY_ABS}) endif() foreach(lib ${android_proj_culibs}) get_filename_component(f "${lib}" NAME) diff --git a/cmake/OpenCVDetectCUDA.cmake b/cmake/OpenCVDetectCUDA.cmake index 56b142970e..24fbb03ce3 100644 --- a/cmake/OpenCVDetectCUDA.cmake +++ b/cmake/OpenCVDetectCUDA.cmake @@ -219,3 +219,42 @@ else() unset(CUDA_ARCH_BIN CACHE) unset(CUDA_ARCH_PTX CACHE) endif() + +if(HAVE_CUDA) + set(CUDA_LIBS_PATH "") + foreach(p ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY}) + get_filename_component(_tmp ${p} PATH) + list(APPEND CUDA_LIBS_PATH ${_tmp}) + endforeach() + + if(HAVE_CUBLAS) + foreach(p ${CUDA_cublas_LIBRARY}) + get_filename_component(_tmp ${p} PATH) + list(APPEND CUDA_LIBS_PATH ${_tmp}) + endforeach() + endif() + + if(HAVE_CUFFT) + foreach(p ${CUDA_cufft_LIBRARY}) + get_filename_component(_tmp ${p} PATH) + list(APPEND CUDA_LIBS_PATH ${_tmp}) + endforeach() + endif() + + list(REMOVE_DUPLICATES CUDA_LIBS_PATH) + link_directories(${CUDA_LIBS_PATH}) + + set(CUDA_LIBRARIES_ABS ${CUDA_LIBRARIES}) + ocv_convert_to_lib_name(CUDA_LIBRARIES ${CUDA_LIBRARIES}) + set(CUDA_npp_LIBRARY_ABS ${CUDA_npp_LIBRARY}) + ocv_convert_to_lib_name(CUDA_npp_LIBRARY ${CUDA_npp_LIBRARY}) + if(HAVE_CUBLAS) + set(CUDA_cublas_LIBRARY_ABS ${CUDA_cublas_LIBRARY}) + ocv_convert_to_lib_name(CUDA_cublas_LIBRARY ${CUDA_cublas_LIBRARY}) + endif() + + if(HAVE_CUFFT) + set(CUDA_cufft_LIBRARY_ABS ${CUDA_cufft_LIBRARY}) + ocv_convert_to_lib_name(CUDA_cufft_LIBRARY ${CUDA_cufft_LIBRARY}) + endif() +endif() \ No newline at end of file From 291458a8599d513eff1729ef8c0fcab89187621d Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Wed, 19 Mar 2014 18:49:33 +0400 Subject: [PATCH 041/117] generalized OpenCL version of cv::sepFilter2D; removed some restrictions and added 3-channels support --- modules/core/src/ocl.cpp | 4 +- modules/imgproc/src/filter.cpp | 86 +++++++++++-------- modules/imgproc/src/opencl/filterSepCol.cl | 47 +++++----- modules/imgproc/src/opencl/filterSepRow.cl | 45 ++++++---- modules/imgproc/test/ocl/test_filters.cpp | 2 +- modules/imgproc/test/ocl/test_sepfilter2D.cpp | 17 ++-- 6 files changed, 112 insertions(+), 89 deletions(-) diff --git a/modules/core/src/ocl.cpp b/modules/core/src/ocl.cpp index b56f84c16e..3a7c718d4f 100644 --- a/modules/core/src/ocl.cpp +++ b/modules/core/src/ocl.cpp @@ -4317,8 +4317,8 @@ String kernelToStr(InputArray _kernel, int ddepth, const char * name) if (ddepth != depth) kernel.convertTo(kernel, ddepth); - typedef std::string (*func_t)(const Mat &); - static const func_t funcs[] = { kerToStr, kerToStr, kerToStr,kerToStr, + typedef std::string (* func_t)(const Mat &); + static const func_t funcs[] = { kerToStr, kerToStr, kerToStr, kerToStr, kerToStr, kerToStr, kerToStr, 0 }; const func_t func = funcs[depth]; CV_Assert(func != 0); diff --git a/modules/imgproc/src/filter.cpp b/modules/imgproc/src/filter.cpp index ba2e347af0..c013a9b16c 100644 --- a/modules/imgproc/src/filter.cpp +++ b/modules/imgproc/src/filter.cpp @@ -41,7 +41,6 @@ //M*/ #include "precomp.hpp" -#define CV_OPENCL_RUN_ASSERT #include "opencl_kernels.hpp" #include @@ -3135,7 +3134,7 @@ template struct Filter2D : public BaseFi // b e h b e h 0 0 // c f i c f i 0 0 template -static int _prepareKernelFilter2D(std::vector& data, const Mat &kernel) +static int _prepareKernelFilter2D(std::vector & data, const Mat & kernel) { Mat _kernel; kernel.convertTo(_kernel, DataDepth::value); int size_y_aligned = ROUNDUP(kernel.rows * 2, 4); @@ -3318,11 +3317,16 @@ static bool ocl_filter2D( InputArray _src, OutputArray _dst, int ddepth, return kernel.run(2, globalsize, localsize, true); } -static bool ocl_sepRowFilter2D( UMat &src, UMat &buf, Mat &kernelX, int anchor, int borderType) +static bool ocl_sepRowFilter2D(const UMat & src, UMat & buf, const Mat & kernelX, int anchor, + int borderType, int ddepth, bool fast8uc1) { int type = src.type(), cn = CV_MAT_CN(type), sdepth = CV_MAT_DEPTH(type); + bool doubleSupport = ocl::Device::getDefault().doubleFPConfig() > 0; Size bufSize = buf.size(); + if (!doubleSupport && (sdepth == CV_64F || ddepth == CV_64F)) + return false; + #ifdef ANDROID size_t localsize[2] = {16, 10}; #else @@ -3330,7 +3334,7 @@ static bool ocl_sepRowFilter2D( UMat &src, UMat &buf, Mat &kernelX, int anchor, #endif size_t globalsize[2] = {DIVUP(bufSize.width, localsize[0]) * localsize[0], DIVUP(bufSize.height, localsize[1]) * localsize[1]}; - if (type == CV_8UC1) + if (fast8uc1) globalsize[0] = DIVUP((bufSize.width + 3) >> 2, localsize[0]) * localsize[0]; int radiusX = anchor, radiusY = (buf.rows - src.rows) >> 1; @@ -3346,20 +3350,21 @@ static bool ocl_sepRowFilter2D( UMat &src, UMat &buf, Mat &kernelX, int anchor, char cvt[40]; cv::String build_options = cv::format("-D RADIUSX=%d -D LSIZE0=%d -D LSIZE1=%d -D CN=%d -D %s -D %s -D %s" - " -D srcT=%s -D dstT=%s -D convertToDstT=%s -D srcT1=%s -D dstT1=%s", + " -D srcT=%s -D dstT=%s -D convertToDstT=%s -D srcT1=%s -D dstT1=%s%s", radiusX, (int)localsize[0], (int)localsize[1], cn, btype, extra_extrapolation ? "EXTRA_EXTRAPOLATION" : "NO_EXTRA_EXTRAPOLATION", isolated ? "BORDER_ISOLATED" : "NO_BORDER_ISOLATED", ocl::typeToStr(type), ocl::typeToStr(CV_32FC(cn)), ocl::convertTypeStr(sdepth, CV_32F, cn, cvt), - ocl::typeToStr(sdepth), ocl::typeToStr(CV_32F)); + ocl::typeToStr(sdepth), ocl::typeToStr(CV_32F), + doubleSupport ? " -D DOUBLE_SUPPORT" : ""); build_options += ocl::kernelToStr(kernelX, CV_32F); Size srcWholeSize; Point srcOffset; src.locateROI(srcWholeSize, srcOffset); String kernelName("row_filter"); - if (type == CV_8UC1) + if (fast8uc1) kernelName += "_C1_D0"; ocl::Kernel k(kernelName.c_str(), cv::ocl::imgproc::filterSepRow_oclsrc, @@ -3367,39 +3372,47 @@ static bool ocl_sepRowFilter2D( UMat &src, UMat &buf, Mat &kernelX, int anchor, if (k.empty()) return false; - k.args(ocl::KernelArg::PtrReadOnly(src), (int)(src.step / src.elemSize()), srcOffset.x, - srcOffset.y, src.cols, src.rows, srcWholeSize.width, srcWholeSize.height, - ocl::KernelArg::PtrWriteOnly(buf), (int)(buf.step / buf.elemSize()), - buf.cols, buf.rows, radiusY); + if (fast8uc1) + k.args(ocl::KernelArg::PtrReadOnly(src), (int)(src.step / src.elemSize()), srcOffset.x, + srcOffset.y, src.cols, src.rows, srcWholeSize.width, srcWholeSize.height, + ocl::KernelArg::PtrWriteOnly(buf), (int)(buf.step / buf.elemSize()), + buf.cols, buf.rows, radiusY); + else + k.args(ocl::KernelArg::PtrReadOnly(src), (int)src.step, srcOffset.x, + srcOffset.y, src.cols, src.rows, srcWholeSize.width, srcWholeSize.height, + ocl::KernelArg::PtrWriteOnly(buf), (int)buf.step, buf.cols, buf.rows, radiusY); return k.run(2, globalsize, localsize, false); } -static bool ocl_sepColFilter2D(const UMat &buf, UMat &dst, Mat &kernelY, int anchor) +static bool ocl_sepColFilter2D(const UMat & buf, UMat & dst, const Mat & kernelY, int anchor) { + bool doubleSupport = ocl::Device::getDefault().doubleFPConfig() > 0; + if (dst.depth() == CV_64F && !doubleSupport) + return false; + #ifdef ANDROID - size_t localsize[2] = {16, 10}; + size_t localsize[2] = { 16, 10 }; #else - size_t localsize[2] = {16, 16}; + size_t localsize[2] = { 16, 16 }; #endif - size_t globalsize[2] = {0, 0}; + size_t globalsize[2] = { 0, 0 }; int dtype = dst.type(), cn = CV_MAT_CN(dtype), ddepth = CV_MAT_DEPTH(dtype); Size sz = dst.size(); globalsize[1] = DIVUP(sz.height, localsize[1]) * localsize[1]; - - if (dtype == CV_8UC2) - globalsize[0] = DIVUP((sz.width + 1) / 2, localsize[0]) * localsize[0]; - else - globalsize[0] = DIVUP(sz.width, localsize[0]) * localsize[0]; + globalsize[0] = DIVUP(sz.width, localsize[0]) * localsize[0]; char cvt[40]; cv::String build_options = cv::format("-D RADIUSY=%d -D LSIZE0=%d -D LSIZE1=%d -D CN=%d" - " -D srcT=%s -D dstT=%s -D convertToDstT=%s", + " -D srcT=%s -D dstT=%s -D convertToDstT=%s" + " -D srcT1=%s -D dstT1=%s%s", anchor, (int)localsize[0], (int)localsize[1], cn, ocl::typeToStr(buf.type()), ocl::typeToStr(dtype), - ocl::convertTypeStr(CV_32F, ddepth, cn, cvt)); + ocl::convertTypeStr(CV_32F, ddepth, cn, cvt), + ocl::typeToStr(CV_32F), ocl::typeToStr(ddepth), + doubleSupport ? " -D DOUBLE_SUPPORT" : ""); build_options += ocl::kernelToStr(kernelY, CV_32F); ocl::Kernel k("col_filter", cv::ocl::imgproc::filterSepCol_oclsrc, @@ -3407,13 +3420,13 @@ static bool ocl_sepColFilter2D(const UMat &buf, UMat &dst, Mat &kernelY, int anc if (k.empty()) return false; - k.args(ocl::KernelArg::PtrReadOnly(buf), (int)(buf.step / buf.elemSize()), buf.cols, - buf.rows, ocl::KernelArg::PtrWriteOnly(dst), (int)(dst.offset / dst.elemSize()), - (int)(dst.step / dst.elemSize()), dst.cols, dst.rows); + k.args(ocl::KernelArg::ReadOnly(buf), ocl::KernelArg::WriteOnly(dst)); return k.run(2, globalsize, localsize, false); } +#if 0 + const int optimizedSepFilterLocalSize = 16; static bool ocl_sepFilter2D_SinglePass(InputArray _src, OutputArray _dst, @@ -3471,18 +3484,19 @@ static bool ocl_sepFilter2D_SinglePass(InputArray _src, OutputArray _dst, return k.run(2, gt2, lt2, false); } +#endif + static bool ocl_sepFilter2D( InputArray _src, OutputArray _dst, int ddepth, InputArray _kernelX, InputArray _kernelY, Point anchor, double delta, int borderType ) { - Size imgSize = _src.size(); +// Size imgSize = _src.size(); if (abs(delta)> FLT_MIN) return false; int type = _src.type(), cn = CV_MAT_CN(type); - if ( !( (type == CV_8UC1 || type == CV_8UC4 || type == CV_32FC1 || type == CV_32FC4) && - (ddepth == CV_32F || ddepth == CV_16S || ddepth == CV_8U || ddepth < 0) ) ) + if (cn > 4) return false; Mat kernelX = _kernelX.getMat().reshape(1, 1); @@ -3501,9 +3515,6 @@ static bool ocl_sepFilter2D( InputArray _src, OutputArray _dst, int ddepth, if (ddepth < 0) ddepth = sdepth; -// printf("%d %d\n", imgSize.width, optimizedSepFilterLocalSize + (kernelX.rows >> 1)); -// printf("%d %d\n", imgSize.height, optimizedSepFilterLocalSize + (kernelY.rows >> 1)); - // CV_OCL_RUN_(kernelY.rows <= 21 && kernelX.rows <= 21 && // imgSize.width > optimizedSepFilterLocalSize + (kernelX.rows >> 1) && // imgSize.height > optimizedSepFilterLocalSize + (kernelY.rows >> 1), @@ -3512,20 +3523,19 @@ static bool ocl_sepFilter2D( InputArray _src, OutputArray _dst, int ddepth, UMat src = _src.getUMat(); Size srcWholeSize; Point srcOffset; src.locateROI(srcWholeSize, srcOffset); - if ( (0 != (srcOffset.x % 4)) || - (0 != (src.cols % 4)) || - (0 != ((src.step / src.elemSize()) % 4)) - ) - return false; + + bool fast8uc1 = type == CV_8UC1 && srcOffset.x % 4 == 0 && + src.cols % 4 == 0 && src.step % 4 == 0; Size srcSize = src.size(); Size bufSize(srcSize.width, srcSize.height + kernelY.cols - 1); - UMat buf; buf.create(bufSize, CV_MAKETYPE(CV_32F, cn)); - if (!ocl_sepRowFilter2D(src, buf, kernelX, anchor.x, borderType)) + UMat buf(bufSize, CV_32FC(cn)); + if (!ocl_sepRowFilter2D(src, buf, kernelX, anchor.x, borderType, ddepth, fast8uc1)) return false; _dst.create(srcSize, CV_MAKETYPE(ddepth, cn)); UMat dst = _dst.getUMat(); + return ocl_sepColFilter2D(buf, dst, kernelY, anchor.y); } diff --git a/modules/imgproc/src/opencl/filterSepCol.cl b/modules/imgproc/src/opencl/filterSepCol.cl index 05717c6ad2..f5d270cf42 100644 --- a/modules/imgproc/src/opencl/filterSepCol.cl +++ b/modules/imgproc/src/opencl/filterSepCol.cl @@ -34,29 +34,36 @@ // // +#ifdef DOUBLE_SUPPORT +#ifdef cl_amd_fp64 +#pragma OPENCL EXTENSION cl_amd_fp64:enable +#elif defined (cl_khr_fp64) +#pragma OPENCL EXTENSION cl_khr_fp64:enable +#endif +#endif + #define READ_TIMES_COL ((2*(RADIUSY+LSIZE1)-1)/LSIZE1) #define RADIUS 1 #define noconvert -/********************************************************************************** -These kernels are written for separable filters such as Sobel, Scharr, GaussianBlur. -Now(6/29/2011) the kernels only support 8U data type and the anchor of the convovle -kernel must be in the center. ROI is not supported either. -Each kernels read 4 elements(not 4 pixels), save them to LDS and read the data needed -from LDS to calculate the result. -The length of the convovle kernel supported is only related to the MAX size of LDS, -which is HW related. -Niko -6/29/2011 -The info above maybe obsolete. -***********************************************************************************/ +#if CN != 3 +#define loadpix(addr) *(__global const srcT *)(addr) +#define storepix(val, addr) *(__global dstT *)(addr) = val +#define SRCSIZE (int)sizeof(srcT) +#define DSTSIZE (int)sizeof(dstT) +#else +#define loadpix(addr) vload3(0, (__global const srcT1 *)(addr)) +#define storepix(val, addr) vstore3(val, 0, (__global dstT1 *)(addr)) +#define SRCSIZE (int)sizeof(srcT1)*3 +#define DSTSIZE (int)sizeof(dstT1)*3 +#endif #define DIG(a) a, __constant float mat_kernel[] = { COEFF }; -__kernel void col_filter(__global const srcT * src, int src_step_in_pixel, int src_whole_cols, int src_whole_rows, - __global dstT * dst, int dst_offset_in_pixel, int dst_step_in_pixel, int dst_cols, int dst_rows) +__kernel void col_filter(__global const uchar * src, int src_step, int src_offset, int src_whole_rows, int src_whole_cols, + __global uchar * dst, int dst_step, int dst_offset, int dst_rows, int dst_cols) { int x = get_global_id(0); int y = get_global_id(1); @@ -64,8 +71,8 @@ __kernel void col_filter(__global const srcT * src, int src_step_in_pixel, int s int l_x = get_local_id(0); int l_y = get_local_id(1); - int start_addr = mad24(y, src_step_in_pixel, x); - int end_addr = mad24(src_whole_rows - 1, src_step_in_pixel, src_whole_cols); + int start_addr = mad24(y, src_step, x * SRCSIZE); + int end_addr = mad24(src_whole_rows - 1, src_step, src_whole_cols * SRCSIZE); srcT sum, temp[READ_TIMES_COL]; __local srcT LDS_DAT[LSIZE1 * READ_TIMES_COL][LSIZE0 + 1]; @@ -73,9 +80,9 @@ __kernel void col_filter(__global const srcT * src, int src_step_in_pixel, int s // read pixels from src for (int i = 0; i < READ_TIMES_COL; ++i) { - int current_addr = mad24(i, LSIZE1 * src_step_in_pixel, start_addr); + int current_addr = mad24(i, LSIZE1 * src_step, start_addr); current_addr = current_addr < end_addr ? current_addr : 0; - temp[i] = src[current_addr]; + temp[i] = loadpix(src + current_addr); } // save pixels to lds @@ -95,7 +102,7 @@ __kernel void col_filter(__global const srcT * src, int src_step_in_pixel, int s // write the result to dst if (x < dst_cols && y < dst_rows) { - start_addr = mad24(y, dst_step_in_pixel, x + dst_offset_in_pixel); - dst[start_addr] = convertToDstT(sum); + start_addr = mad24(y, dst_step, mad24(DSTSIZE, x, dst_offset)); + storepix(convertToDstT(sum), dst + start_addr); } } diff --git a/modules/imgproc/src/opencl/filterSepRow.cl b/modules/imgproc/src/opencl/filterSepRow.cl index 83968dfc1e..726de448e4 100644 --- a/modules/imgproc/src/opencl/filterSepRow.cl +++ b/modules/imgproc/src/opencl/filterSepRow.cl @@ -34,6 +34,14 @@ // // +#ifdef DOUBLE_SUPPORT +#ifdef cl_amd_fp64 +#pragma OPENCL EXTENSION cl_amd_fp64:enable +#elif defined (cl_khr_fp64) +#pragma OPENCL EXTENSION cl_khr_fp64:enable +#endif +#endif + #define READ_TIMES_ROW ((2*(RADIUSX+LSIZE0)-1)/LSIZE0) //for c4 only #define RADIUS 1 @@ -117,16 +125,16 @@ #define noconvert -#if cn != 3 +#if CN != 3 #define loadpix(addr) *(__global const srcT *)(addr) #define storepix(val, addr) *(__global dstT *)(addr) = val -#define SRCSIZE ((int)sizeof(srcT)) -#define DSTSIZE ((int)sizeof(dstT)) +#define SRCSIZE (int)sizeof(srcT) +#define DSTSIZE (int)sizeof(dstT) #else #define loadpix(addr) vload3(0, (__global const srcT1 *)(addr)) #define storepix(val, addr) vstore3(val, 0, (__global dstT1 *)(addr)) -#define SRCSIZE ((int)sizeof(srcT1)*3) -#define DSTSIZE ((int)sizeof(dstT1)*3) +#define SRCSIZE (int)sizeof(srcT1)*3 +#define DSTSIZE (int)sizeof(dstT1)*3 #endif #define DIG(a) a, @@ -269,32 +277,33 @@ __kernel void row_filter_C1_D0(__global const uchar * src, int src_step_in_pixel dst[start_addr] = sum.x; } -__kernel void row_filter(__global const srcT * src, int src_step_in_pixel, int src_offset_x, int src_offset_y, +__kernel void row_filter(__global const uchar * src, int src_step, int src_offset_x, int src_offset_y, int src_cols, int src_rows, int src_whole_cols, int src_whole_rows, - __global dstT * dst, int dst_step_in_pixel, int dst_cols, int dst_rows, + __global uchar * dst, int dst_step, int dst_cols, int dst_rows, int radiusy) { int x = get_global_id(0); int y = get_global_id(1); int l_x = get_local_id(0); int l_y = get_local_id(1); + int start_x = x + src_offset_x - RADIUSX; int start_y = y + src_offset_y - radiusy; - int start_addr = mad24(start_y, src_step_in_pixel, start_x); + int start_addr = mad24(start_y, src_step, start_x * SRCSIZE); dstT sum; srcT temp[READ_TIMES_ROW]; __local srcT LDS_DAT[LSIZE1][READ_TIMES_ROW * LSIZE0 + 1]; #ifdef BORDER_CONSTANT - int end_addr = mad24(src_whole_rows - 1, src_step_in_pixel, src_whole_cols); + int end_addr = mad24(src_whole_rows - 1, src_step, src_whole_cols * SRCSIZE); // read pixels from src for (int i = 0; i < READ_TIMES_ROW; i++) { - int current_addr = mad24(i, LSIZE0, start_addr); - current_addr = current_addr < end_addr && current_addr > 0 ? current_addr : 0; - temp[i] = src[current_addr]; + int current_addr = mad24(i, LSIZE0 * SRCSIZE, start_addr); + current_addr = current_addr < end_addr && current_addr >= 0 ? current_addr : 0; + temp[i] = loadpix(src + current_addr); } // judge if read out of boundary @@ -312,8 +321,7 @@ __kernel void row_filter(__global const srcT * src, int src_step_in_pixel, int s } #endif #else - int index[READ_TIMES_ROW]; - int s_x, s_y; + int index[READ_TIMES_ROW], s_x, s_y; // judge if read out of boundary for (int i = 0; i < READ_TIMES_ROW; ++i) @@ -328,12 +336,12 @@ __kernel void row_filter(__global const srcT * src, int src_step_in_pixel, int s EXTRAPOLATE(s_x, 0, src_whole_cols); EXTRAPOLATE(s_y, 0, src_whole_rows); #endif - index[i] = mad24(s_y, src_step_in_pixel, s_x); + index[i] = mad24(s_y, src_step, s_x * SRCSIZE); } // read pixels from src for (int i = 0; i < READ_TIMES_ROW; ++i) - temp[i] = src[index[i]]; + temp[i] = loadpix(src + index[i]); #endif // BORDER_CONSTANT // save pixels to lds @@ -349,10 +357,11 @@ __kernel void row_filter(__global const srcT * src, int src_step_in_pixel, int s temp[1] = LDS_DAT[l_y][l_x + RADIUSX + i]; sum += mad(convertToDstT(temp[0]), mat_kernel[RADIUSX - i], convertToDstT(temp[1]) * mat_kernel[RADIUSX + i]); } + // write the result to dst if (x < dst_cols && y < dst_rows) { - start_addr = mad24(y, dst_step_in_pixel, x); - dst[start_addr] = sum; + start_addr = mad24(y, dst_step, x * DSTSIZE); + storepix(sum, dst + start_addr); } } diff --git a/modules/imgproc/test/ocl/test_filters.cpp b/modules/imgproc/test/ocl/test_filters.cpp index fe16fe81d5..04b330527f 100644 --- a/modules/imgproc/test/ocl/test_filters.cpp +++ b/modules/imgproc/test/ocl/test_filters.cpp @@ -312,7 +312,7 @@ OCL_TEST_P(MorphologyEx, Mat) (int)BORDER_REFLECT|BORDER_ISOLATED, (int)BORDER_WRAP|BORDER_ISOLATED, \ (int)BORDER_REFLECT_101|BORDER_ISOLATED*/) // WRAP and ISOLATED are not supported by cv:: version -#define FILTER_TYPES Values(CV_8UC1, CV_8UC2, CV_8UC4, CV_32FC1, CV_32FC4, CV_64FC1, CV_64FC4) +#define FILTER_TYPES Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_32FC1, CV_32FC3, CV_32FC4) OCL_INSTANTIATE_TEST_CASE_P(Filter, Bilateral, Combine( Values((MatType)CV_8UC1), diff --git a/modules/imgproc/test/ocl/test_sepfilter2D.cpp b/modules/imgproc/test/ocl/test_sepfilter2D.cpp index 09d01d157a..05d46cc2b3 100644 --- a/modules/imgproc/test/ocl/test_sepfilter2D.cpp +++ b/modules/imgproc/test/ocl/test_sepfilter2D.cpp @@ -75,9 +75,9 @@ PARAM_TEST_CASE(SepFilter2D, MatDepth, Channels, BorderType, bool, bool) void random_roi() { Size ksize = randomSize(kernelMinSize, kernelMaxSize); - if (1 != (ksize.width % 2)) + if (1 != ksize.width % 2) ksize.width++; - if (1 != (ksize.height % 2)) + if (1 != ksize.height % 2) ksize.height++; Mat temp = randomMat(Size(ksize.width, 1), CV_MAKE_TYPE(CV_32F, 1), -MAX_VALUE, MAX_VALUE); @@ -86,24 +86,22 @@ PARAM_TEST_CASE(SepFilter2D, MatDepth, Channels, BorderType, bool, bool) cv::normalize(temp, kernelY, 1.0, 0.0, NORM_L1); Size roiSize = randomSize(ksize.width + 16, MAX_VALUE, ksize.height + 20, MAX_VALUE); - std::cout << roiSize << std::endl; int rest = roiSize.width % 4; - if (0 != rest) + if (rest != 0) roiSize.width += (4 - rest); Border srcBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); rest = srcBorder.lef % 4; - if (0 != rest) + if (rest != 0) srcBorder.lef += (4 - rest); rest = srcBorder.rig % 4; - if (0 != rest) + if (rest != 0) srcBorder.rig += (4 - rest); randomSubMat(src, src_roi, roiSize, srcBorder, type, -MAX_VALUE, MAX_VALUE); Border dstBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); randomSubMat(dst, dst_roi, roiSize, dstBorder, type, -MAX_VALUE, MAX_VALUE); - anchor.x = -1; - anchor.y = -1; + anchor.x = anchor.y = -1; UMAT_UPLOAD_INPUT_PARAMETER(src) UMAT_UPLOAD_OUTPUT_PARAMETER(dst) @@ -128,11 +126,10 @@ OCL_TEST_P(SepFilter2D, Mat) } } - OCL_INSTANTIATE_TEST_CASE_P(ImageProc, SepFilter2D, Combine( Values(CV_8U, CV_32F), - Values(1, 4), + OCL_ALL_CHANNELS, Values( (BorderType)BORDER_CONSTANT, (BorderType)BORDER_REPLICATE, From eb8b4c58c7c717a3c2f03c22e186267c4e44f265 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Thu, 20 Mar 2014 00:28:21 +0400 Subject: [PATCH 042/117] fixed bug in cv::ocl::predictOptimalVectorWidth --- modules/core/src/arithm.cpp | 21 +++++++++------------ modules/core/src/mathfuncs.cpp | 9 +++------ modules/core/src/ocl.cpp | 7 ++++--- modules/core/test/ocl/test_arithm.cpp | 2 +- 4 files changed, 17 insertions(+), 22 deletions(-) diff --git a/modules/core/src/arithm.cpp b/modules/core/src/arithm.cpp index 5672c02ad9..f59eefd32d 100644 --- a/modules/core/src/arithm.cpp +++ b/modules/core/src/arithm.cpp @@ -1299,7 +1299,7 @@ static bool ocl_arithm_op(InputArray _src1, InputArray _src2, OutputArray _dst, int type1 = _src1.type(), depth1 = CV_MAT_DEPTH(type1), cn = CV_MAT_CN(type1); bool haveMask = !_mask.empty(); - if( ((haveMask || haveScalar) && cn > 4) ) + if ( (haveMask || haveScalar) && cn > 4 ) return false; int dtype = _dst.type(), ddepth = CV_MAT_DEPTH(dtype), wdepth = std::max(CV_32S, CV_MAT_DEPTH(wtype)); @@ -1320,14 +1320,11 @@ static bool ocl_arithm_op(InputArray _src1, InputArray _src2, OutputArray _dst, "-D convertToWT2=%s -D convertToDT=%s%s -D cn=%d", (haveMask ? "MASK_" : ""), (haveScalar ? "UNARY_OP" : "BINARY_OP"), oclop2str[oclop], ocl::typeToStr(CV_MAKETYPE(depth1, kercn)), - ocl::typeToStr(CV_MAKETYPE(depth1, 1)), - ocl::typeToStr(CV_MAKETYPE(depth2, kercn)), - ocl::typeToStr(CV_MAKETYPE(depth2, 1)), - ocl::typeToStr(CV_MAKETYPE(ddepth, kercn)), - ocl::typeToStr(CV_MAKETYPE(ddepth, 1)), - ocl::typeToStr(CV_MAKETYPE(wdepth, kercn)), + ocl::typeToStr(depth1), ocl::typeToStr(CV_MAKETYPE(depth2, kercn)), + ocl::typeToStr(depth2), ocl::typeToStr(CV_MAKETYPE(ddepth, kercn)), + ocl::typeToStr(ddepth), ocl::typeToStr(CV_MAKETYPE(wdepth, kercn)), ocl::typeToStr(CV_MAKETYPE(wdepth, scalarcn)), - ocl::typeToStr(CV_MAKETYPE(wdepth, 1)), wdepth, + ocl::typeToStr(wdepth), wdepth, ocl::convertTypeStr(depth1, wdepth, kercn, cvtstr[0]), ocl::convertTypeStr(depth2, wdepth, kercn, cvtstr[1]), ocl::convertTypeStr(wdepth, ddepth, kercn, cvtstr[2]), @@ -1347,7 +1344,7 @@ static bool ocl_arithm_op(InputArray _src1, InputArray _src2, OutputArray _dst, } ocl::Kernel k("KF", ocl::core::arithm_oclsrc, opts); - if( k.empty() ) + if (k.empty()) return false; UMat src1 = _src1.getUMat(), src2; @@ -1388,12 +1385,12 @@ static bool ocl_arithm_op(InputArray _src1, InputArray _src2, OutputArray _dst, if( !haveMask ) { - if(n == 0) + if (n == 0) k.args(src1arg, src2arg, dstarg); - else if(n == 1) + else if (n == 1) k.args(src1arg, src2arg, dstarg, ocl::KernelArg(0, 0, 0, 0, usrdata_p, usrdata_esz)); - else if(n == 3) + else if (n == 3) k.args(src1arg, src2arg, dstarg, ocl::KernelArg(0, 0, 0, 0, usrdata_p, usrdata_esz), ocl::KernelArg(0, 0, 0, 0, usrdata_p + usrdata_esz, usrdata_esz), diff --git a/modules/core/src/mathfuncs.cpp b/modules/core/src/mathfuncs.cpp index 095460c781..16df02cafa 100644 --- a/modules/core/src/mathfuncs.cpp +++ b/modules/core/src/mathfuncs.cpp @@ -2041,7 +2041,7 @@ static bool ocl_pow(InputArray _src, double power, OutputArray _dst, const char * const op = issqrt ? "OP_SQRT" : is_ipower ? "OP_POWN" : "OP_POW"; ocl::Kernel k("KF", ocl::core::arithm_oclsrc, - format("-D dstT=%s -D %s -D UNARY_OP%s", ocl::typeToStr(CV_MAKE_TYPE(depth, 1)), + format("-D dstT=%s -D %s -D UNARY_OP%s", ocl::typeToStr(depth), op, doubleSupport ? " -D DOUBLE_SUPPORT" : "")); if (k.empty()) return false; @@ -2081,7 +2081,7 @@ void pow( InputArray _src, double power, OutputArray _dst ) { if( ipower < 0 ) { - divide( 1., _src, _dst ); + divide( Scalar::all(1), _src, _dst ); if( ipower == -1 ) return; ipower = -ipower; @@ -2115,10 +2115,7 @@ void pow( InputArray _src, double power, OutputArray _dst ) Mat src, dst; if (same) - { - dst = _dst.getMat(); - src = dst; - } + src = dst = _dst.getMat(); else { src = _src.getMat(); diff --git a/modules/core/src/ocl.cpp b/modules/core/src/ocl.cpp index 7c4f8de9e0..5a522d4ea8 100644 --- a/modules/core/src/ocl.cpp +++ b/modules/core/src/ocl.cpp @@ -4347,7 +4347,7 @@ int predictOptimalVectorWidth(InputArray src1, InputArray src2, InputArray src3, InputArray src4, InputArray src5, InputArray src6, InputArray src7, InputArray src8, InputArray src9) { - int type = src1.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type); + int type = src1.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type), esz = CV_ELEM_SIZE(depth); Size ssize = src1.size(); const ocl::Device & d = ocl::Device::getDefault(); @@ -4371,7 +4371,8 @@ int predictOptimalVectorWidth(InputArray src1, InputArray src2, InputArray src3, PROCESS_SRC(src9); size_t size = offsets.size(); - std::vector dividers(size, width); + int wsz = width * esz; + std::vector dividers(size, wsz); for (size_t i = 0; i < size; ++i) while (offsets[i] % dividers[i] != 0 || steps[i] % dividers[i] != 0 || cols[i] % dividers[i] != 0) @@ -4379,7 +4380,7 @@ int predictOptimalVectorWidth(InputArray src1, InputArray src2, InputArray src3, // default strategy for (size_t i = 0; i < size; ++i) - if (dividers[i] != width) + if (dividers[i] != wsz) { width = 1; break; diff --git a/modules/core/test/ocl/test_arithm.cpp b/modules/core/test/ocl/test_arithm.cpp index 8618746c9f..d2b26e1463 100644 --- a/modules/core/test/ocl/test_arithm.cpp +++ b/modules/core/test/ocl/test_arithm.cpp @@ -839,7 +839,7 @@ OCL_TEST_P(Pow, Mat) OCL_OFF(cv::pow(src1_roi, pows[k], dst1_roi)); OCL_ON(cv::pow(usrc1_roi, pows[k], udst1_roi)); - OCL_EXPECT_MATS_NEAR_RELATIVE(dst1, 1e-6); + OCL_EXPECT_MATS_NEAR_RELATIVE(dst1, 1e-5); } } From b14c314fc3a18bd204364c7a4c5dec8fe218bdf0 Mon Sep 17 00:00:00 2001 From: Alexander Karsakov Date: Wed, 19 Mar 2014 17:33:13 +0400 Subject: [PATCH 043/117] Fixed incorrect thread synchronizations --- modules/objdetect/src/opencl/objdetect_hog.cl | 3 +-- modules/objdetect/test/opencl/test_hogdetector.cpp | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/objdetect/src/opencl/objdetect_hog.cl b/modules/objdetect/src/opencl/objdetect_hog.cl index 5c71aa1b45..704dec4447 100644 --- a/modules/objdetect/src/opencl/objdetect_hog.cl +++ b/modules/objdetect/src/opencl/objdetect_hog.cl @@ -141,9 +141,8 @@ __kernel void compute_hists_lut_kernel( final_hist[(cell_x * 2 + cell_y) * cnbins + bin_id] = hist_[0] + hist_[1] + hist_[2]; } -#ifdef CPU + barrier(CLK_LOCAL_MEM_FENCE); -#endif int tid = (cell_y * CELLS_PER_BLOCK_Y + cell_x) * 12 + cell_thread_x; if ((tid < cblock_hist_size) && (gid < blocks_total)) diff --git a/modules/objdetect/test/opencl/test_hogdetector.cpp b/modules/objdetect/test/opencl/test_hogdetector.cpp index 8568352b69..b3ef6b48fb 100644 --- a/modules/objdetect/test/opencl/test_hogdetector.cpp +++ b/modules/objdetect/test/opencl/test_hogdetector.cpp @@ -110,7 +110,7 @@ OCL_TEST_P(HOG, Detect) OCL_OFF(hog.detectMultiScale(img, cpu_found, 0, Size(8, 8), Size(0, 0), 1.05, 6)); OCL_ON(hog.detectMultiScale(uimg, gpu_found, 0, Size(8, 8), Size(0, 0), 1.05, 6)); - EXPECT_LT(checkRectSimilarity(img.size(), cpu_found, gpu_found), 1.0); + EXPECT_LT(checkRectSimilarity(img.size(), cpu_found, gpu_found), 0.05); } INSTANTIATE_TEST_CASE_P(OCL_ObjDetect, HOG, testing::Combine( From 63d8a61b9b18db161e0ff94fc7bac0166f0b8e3b Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Wed, 19 Mar 2014 19:12:37 +0400 Subject: [PATCH 044/117] enabled 3-channels support for cv::createSuperResolution_BTVL1 --- modules/imgproc/src/filter.cpp | 15 ++++++--------- modules/imgproc/test/ocl/test_sepfilter2D.cpp | 4 ++-- modules/superres/src/btv_l1.cpp | 4 +--- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/modules/imgproc/src/filter.cpp b/modules/imgproc/src/filter.cpp index c013a9b16c..2d7c7404f6 100644 --- a/modules/imgproc/src/filter.cpp +++ b/modules/imgproc/src/filter.cpp @@ -3425,8 +3425,6 @@ static bool ocl_sepColFilter2D(const UMat & buf, UMat & dst, const Mat & kernelY return k.run(2, globalsize, localsize, false); } -#if 0 - const int optimizedSepFilterLocalSize = 16; static bool ocl_sepFilter2D_SinglePass(InputArray _src, OutputArray _dst, @@ -3484,13 +3482,11 @@ static bool ocl_sepFilter2D_SinglePass(InputArray _src, OutputArray _dst, return k.run(2, gt2, lt2, false); } -#endif - static bool ocl_sepFilter2D( InputArray _src, OutputArray _dst, int ddepth, InputArray _kernelX, InputArray _kernelY, Point anchor, double delta, int borderType ) { -// Size imgSize = _src.size(); + Size imgSize = _src.size(); if (abs(delta)> FLT_MIN) return false; @@ -3515,10 +3511,11 @@ static bool ocl_sepFilter2D( InputArray _src, OutputArray _dst, int ddepth, if (ddepth < 0) ddepth = sdepth; -// CV_OCL_RUN_(kernelY.rows <= 21 && kernelX.rows <= 21 && -// imgSize.width > optimizedSepFilterLocalSize + (kernelX.rows >> 1) && -// imgSize.height > optimizedSepFilterLocalSize + (kernelY.rows >> 1), -// ocl_sepFilter2D_SinglePass(_src, _dst, _kernelX, _kernelY, borderType, ddepth), true) + CV_OCL_RUN_(kernelY.rows <= 21 && kernelX.rows <= 21 && + imgSize.width > optimizedSepFilterLocalSize + (kernelX.rows >> 1) && + imgSize.height > optimizedSepFilterLocalSize + (kernelY.rows >> 1) && + (borderType & BORDER_ISOLATED) != 0, + ocl_sepFilter2D_SinglePass(_src, _dst, _kernelX, _kernelY, borderType, ddepth), true) UMat src = _src.getUMat(); Size srcWholeSize; Point srcOffset; diff --git a/modules/imgproc/test/ocl/test_sepfilter2D.cpp b/modules/imgproc/test/ocl/test_sepfilter2D.cpp index 05d46cc2b3..b724641f45 100644 --- a/modules/imgproc/test/ocl/test_sepfilter2D.cpp +++ b/modules/imgproc/test/ocl/test_sepfilter2D.cpp @@ -85,7 +85,7 @@ PARAM_TEST_CASE(SepFilter2D, MatDepth, Channels, BorderType, bool, bool) temp = randomMat(Size(1, ksize.height), CV_MAKE_TYPE(CV_32F, 1), -MAX_VALUE, MAX_VALUE); cv::normalize(temp, kernelY, 1.0, 0.0, NORM_L1); - Size roiSize = randomSize(ksize.width + 16, MAX_VALUE, ksize.height + 20, MAX_VALUE); + Size roiSize = randomSize(ksize.width, MAX_VALUE, ksize.height, MAX_VALUE); int rest = roiSize.width % 4; if (rest != 0) roiSize.width += (4 - rest); @@ -115,7 +115,7 @@ PARAM_TEST_CASE(SepFilter2D, MatDepth, Channels, BorderType, bool, bool) OCL_TEST_P(SepFilter2D, Mat) { - for (int j = 0; j < test_loop_times; j++) + for (int j = 0; j < test_loop_times + 1; j++) { random_roi(); diff --git a/modules/superres/src/btv_l1.cpp b/modules/superres/src/btv_l1.cpp index 1e4aa48a7d..d54b4b398a 100644 --- a/modules/superres/src/btv_l1.cpp +++ b/modules/superres/src/btv_l1.cpp @@ -1014,10 +1014,8 @@ namespace return; #ifdef HAVE_OPENCL - if (isUmat_ && curFrame_.channels() == 1) + if (isUmat_) curFrame_.copyTo(ucurFrame_); - else - isUmat_ = false; #endif ++storePos_; From 80a40ae3d7fd2f932addda446f0790e250f29de5 Mon Sep 17 00:00:00 2001 From: mlyashko Date: Thu, 20 Mar 2014 16:15:43 +0400 Subject: [PATCH 045/117] changed epsilon for test pass on Win32 --- modules/video/test/test_tvl1optflow.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/video/test/test_tvl1optflow.cpp b/modules/video/test/test_tvl1optflow.cpp index 804eae8b62..274c13e65d 100644 --- a/modules/video/test/test_tvl1optflow.cpp +++ b/modules/video/test/test_tvl1optflow.cpp @@ -133,14 +133,13 @@ namespace } } } - return sqrt(sum / (1e-9 + counter)); } } TEST(Video_calcOpticalFlowDual_TVL1, Regression) { - const double MAX_RMSE = 0.02; + const double MAX_RMSE = 0.03; const string frame1_path = TS::ptr()->get_data_path() + "optflow/RubberWhale1.png"; const string frame2_path = TS::ptr()->get_data_path() + "optflow/RubberWhale2.png"; From d060d30fa0ee978a3356f619911fdc078e501d45 Mon Sep 17 00:00:00 2001 From: Andrey Pavlenko Date: Thu, 20 Mar 2014 21:57:34 +0400 Subject: [PATCH 046/117] enabling OCL LBP branch for all devices --- modules/objdetect/src/cascadedetect.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/modules/objdetect/src/cascadedetect.cpp b/modules/objdetect/src/cascadedetect.cpp index 3f0e6e38ce..2d5c0795dc 100644 --- a/modules/objdetect/src/cascadedetect.cpp +++ b/modules/objdetect/src/cascadedetect.cpp @@ -765,11 +765,8 @@ bool LBPEvaluator::read( const FileNode& node, Size _origWinSize ) nchannels = 1; localSize = lbufSize = Size(0, 0); if (ocl::haveOpenCL()) - { - const ocl::Device& device = ocl::Device::getDefault(); - if (device.isAMD() && !device.hostUnifiedMemory()) - localSize = Size(8, 8); - } + localSize = Size(8, 8); + return true; } From 640e180efe645c32863af549b7a856d91ef0276f Mon Sep 17 00:00:00 2001 From: Andrey Pavlenko Date: Thu, 20 Mar 2014 22:22:55 +0400 Subject: [PATCH 047/117] switching to CV_HAAR_SCALE_IMAGE mode, enabling test --- modules/ocl/perf/perf_haar.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/ocl/perf/perf_haar.cpp b/modules/ocl/perf/perf_haar.cpp index e70641d061..6b5100b6f2 100644 --- a/modules/ocl/perf/perf_haar.cpp +++ b/modules/ocl/perf/perf_haar.cpp @@ -92,12 +92,12 @@ PERF_TEST(HaarFixture, Haar) typedef std::tr1::tuple Cascade_Image_MinSize_t; typedef perf::TestBaseWithParam Cascade_Image_MinSize; -OCL_PERF_TEST_P(Cascade_Image_MinSize, DISABLED_CascadeClassifier, +OCL_PERF_TEST_P(Cascade_Image_MinSize, CascadeClassifier, testing::Combine(testing::Values( string("cv/cascadeandhog/cascades/haarcascade_frontalface_alt.xml"), string("cv/cascadeandhog/cascades/haarcascade_frontalface_alt2.xml") ), - testing::Values(string("cv/shared/lena.png"), - string("cv/cascadeandhog/images/bttf301.png")/*, - string("cv/cascadeandhog/images/class57.png")*/ ), + testing::Values( string("cv/shared/lena.png"), + string("cv/cascadeandhog/images/bttf301.png"), + string("cv/cascadeandhog/images/class57.png") ), testing::Values(30, 64, 90))) { const string cascasePath = get<0>(GetParam()); @@ -121,7 +121,7 @@ OCL_PERF_TEST_P(Cascade_Image_MinSize, DISABLED_CascadeClassifier, faces.clear(); startTimer(); - cc.detectMultiScale(img, faces, 1.1, 3, 0, minSize); + cc.detectMultiScale(img, faces, 1.1, 3, CV_HAAR_SCALE_IMAGE, minSize); stopTimer(); } } @@ -137,7 +137,7 @@ OCL_PERF_TEST_P(Cascade_Image_MinSize, DISABLED_CascadeClassifier, ocl::finish(); startTimer(); - cc.detectMultiScale(uimg, faces, 1.1, 3, 0, minSize); + cc.detectMultiScale(uimg, faces, 1.1, 3, CV_HAAR_SCALE_IMAGE, minSize); stopTimer(); } } From b7198ccf1c6f076586b74218a59727a968d55b26 Mon Sep 17 00:00:00 2001 From: Andrey Pavlenko Date: Thu, 20 Mar 2014 22:30:16 +0400 Subject: [PATCH 048/117] dropping legacy modes testing --- modules/objdetect/perf/opencl/perf_cascades.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/objdetect/perf/opencl/perf_cascades.cpp b/modules/objdetect/perf/opencl/perf_cascades.cpp index b660f59111..dd61cdb668 100644 --- a/modules/objdetect/perf/opencl/perf_cascades.cpp +++ b/modules/objdetect/perf/opencl/perf_cascades.cpp @@ -18,8 +18,6 @@ OCL_PERF_TEST_P(Cascade_Image_MinSize, CascadeClassifier, testing::Combine( testing::Values( string("cv/cascadeandhog/cascades/haarcascade_frontalface_alt.xml"), string("cv/cascadeandhog/cascades/haarcascade_frontalface_alt2.xml"), - string("cv/cascadeandhog/cascades/haarcascade_frontalface_alt_old.xml"), - string("cv/cascadeandhog/cascades/haarcascade_frontalface_alt2_old.xml"), string("cv/cascadeandhog/cascades/lbpcascade_frontalface.xml") ), testing::Values( string("cv/shared/lena.png"), string("cv/cascadeandhog/images/bttf301.png"), From 0bd4fd3a87ddee808419e1e4d656c2cbe7dc94ca Mon Sep 17 00:00:00 2001 From: Alexander Karsakov Date: Mon, 17 Mar 2014 12:18:55 +0400 Subject: [PATCH 049/117] Workaround for Intel platform: replace min() with ternary operator --- modules/imgproc/src/opencl/morph.cl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/imgproc/src/opencl/morph.cl b/modules/imgproc/src/opencl/morph.cl index cb6e733ed4..35c0a27ff6 100644 --- a/modules/imgproc/src/opencl/morph.cl +++ b/modules/imgproc/src/opencl/morph.cl @@ -69,8 +69,13 @@ #endif #ifdef ERODE +#ifdef INTEL_DEVICE +// workaround for bug in Intel HD graphics drivers (10.18.10.3496 or older) +#define MORPH_OP(A,B) ((A) < (B) ? (A) : (B)) +#else #define MORPH_OP(A,B) min((A),(B)) #endif +#endif #ifdef DILATE #define MORPH_OP(A,B) max((A),(B)) #endif From b0ad84cfa2f4ecb884de542c9706177f22dade6d Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Fri, 21 Mar 2014 12:48:38 +0400 Subject: [PATCH 050/117] Libraries filter update after abs path cut. --- cmake/OpenCVGenAndroidMK.cmake | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cmake/OpenCVGenAndroidMK.cmake b/cmake/OpenCVGenAndroidMK.cmake index ee52fa6886..2622d2aaed 100644 --- a/cmake/OpenCVGenAndroidMK.cmake +++ b/cmake/OpenCVGenAndroidMK.cmake @@ -56,8 +56,11 @@ if(ANDROID) # remove CUDA runtime and NPP from regular deps # it can be added separately if needed. - ocv_list_filterout(OPENCV_EXTRA_COMPONENTS_CONFIGMAKE "libcu") - ocv_list_filterout(OPENCV_EXTRA_COMPONENTS_CONFIGMAKE "libnpp") + ocv_list_filterout(OPENCV_EXTRA_COMPONENTS_CONFIGMAKE "cusparse") + ocv_list_filterout(OPENCV_EXTRA_COMPONENTS_CONFIGMAKE "cufft") + ocv_list_filterout(OPENCV_EXTRA_COMPONENTS_CONFIGMAKE "cublas") + ocv_list_filterout(OPENCV_EXTRA_COMPONENTS_CONFIGMAKE "npp") + ocv_list_filterout(OPENCV_EXTRA_COMPONENTS_CONFIGMAKE "cudart") if(HAVE_CUDA) # CUDA runtime libraries and are required always From 846266fde4c82fe392ccf122ef64ea30b6da4f01 Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Wed, 19 Feb 2014 16:20:40 +0400 Subject: [PATCH 051/117] Native camera fix for some deivices with Qualcomm SoC like Samsung Galaxy S4. --- .../armeabi-v7a/libnative_camera_r2.2.0.so | Bin 275932 -> 271836 bytes .../armeabi-v7a/libnative_camera_r2.3.3.so | Bin 275932 -> 271836 bytes .../armeabi-v7a/libnative_camera_r3.0.1.so | Bin 275932 -> 271836 bytes .../armeabi-v7a/libnative_camera_r4.0.0.so | Bin 263644 -> 259548 bytes .../armeabi-v7a/libnative_camera_r4.0.3.so | Bin 275932 -> 271836 bytes .../armeabi-v7a/libnative_camera_r4.1.1.so | Bin 275932 -> 271836 bytes .../armeabi-v7a/libnative_camera_r4.2.0.so | Bin 275932 -> 271836 bytes .../armeabi-v7a/libnative_camera_r4.3.0.so | Bin 275932 -> 271836 bytes .../armeabi-v7a/libnative_camera_r4.4.0.so | Bin 275932 -> 271836 bytes .../lib/armeabi/libnative_camera_r2.2.0.so | Bin 288212 -> 284116 bytes .../lib/armeabi/libnative_camera_r2.3.3.so | Bin 288212 -> 284116 bytes .../lib/armeabi/libnative_camera_r3.0.1.so | Bin 284124 -> 280028 bytes .../lib/armeabi/libnative_camera_r4.0.0.so | Bin 271832 -> 267736 bytes .../lib/armeabi/libnative_camera_r4.0.3.so | Bin 284120 -> 280024 bytes .../lib/armeabi/libnative_camera_r4.1.1.so | Bin 288216 -> 284120 bytes .../lib/armeabi/libnative_camera_r4.2.0.so | Bin 288216 -> 284120 bytes .../lib/armeabi/libnative_camera_r4.3.0.so | Bin 288220 -> 284124 bytes .../lib/armeabi/libnative_camera_r4.4.0.so | Bin 284124 -> 280028 bytes 3rdparty/lib/mips/libnative_camera_r4.0.3.so | Bin 546012 -> 545972 bytes 3rdparty/lib/mips/libnative_camera_r4.1.1.so | Bin 546104 -> 546008 bytes 3rdparty/lib/mips/libnative_camera_r4.2.0.so | Bin 546108 -> 546012 bytes 3rdparty/lib/mips/libnative_camera_r4.3.0.so | Bin 546104 -> 546008 bytes 3rdparty/lib/mips/libnative_camera_r4.4.0.so | Bin 550340 -> 550308 bytes 3rdparty/lib/x86/libnative_camera_r2.3.3.so | Bin 427444 -> 423348 bytes 3rdparty/lib/x86/libnative_camera_r3.0.1.so | Bin 427444 -> 423348 bytes 3rdparty/lib/x86/libnative_camera_r4.0.3.so | Bin 427444 -> 423348 bytes 3rdparty/lib/x86/libnative_camera_r4.1.1.so | Bin 431540 -> 427444 bytes 3rdparty/lib/x86/libnative_camera_r4.2.0.so | Bin 447940 -> 443844 bytes 3rdparty/lib/x86/libnative_camera_r4.3.0.so | Bin 447940 -> 443844 bytes 3rdparty/lib/x86/libnative_camera_r4.4.0.so | Bin 456132 -> 456132 bytes .../camera_wrapper/CMakeLists.txt | 2 +- .../camera_wrapper/camera_wrapper.cpp | 173 ++++++++++-------- .../src/java/android+NativeCameraView.java | 1 - 33 files changed, 102 insertions(+), 74 deletions(-) diff --git a/3rdparty/lib/armeabi-v7a/libnative_camera_r2.2.0.so b/3rdparty/lib/armeabi-v7a/libnative_camera_r2.2.0.so index 5b618a87459123ff5f70d6f0647ca5d1785140cb..9b8352e03fe48531bab41f5b28dccdc403c7898d 100755 GIT binary patch delta 80209 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 delta 84472 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 delta 85093 zcmbrH3tUxI+W+_FqNr%7sFAfBygd`7D0x`#jHDYwxw! z+PAaMq4@KV;&UN6ZS0<_+uk>zv`&B}DbQjGu`C;jY8YTewQ;AXT3go9_Lfyk{eEb4 z=Kw4E7D=l=?$e`ig}>!V3C%4_QUFns?l?6!-K_0sD{9N_WRGh!c8@l!40=7;wi=;r340gq@rX^%&3_gDOSTn`N;RLL$DYre5dfIW-!;B#>M z6mR(te7FRj;F%>3X)xHbCQ+b(!qQ+X*t1B53Gn_%@9`%EZa>~TuV=smVd-Ki{|bC4 z$F>&0vOyoglkj^s=vVmaO8202NI;YNOrtw(D@-eB@58;}miYIpKNa>YvVvJY`~sZ( zvb#R1e+N7T<{;}@q3_{kbLerK{VxGmFyyfhWf#ak4{cys(>Q`gXo2={a}GSRk0pKp zJUG=mkC(xoMONquDUUyny!6OMcs(p*Q}~OTc;>$p_`1g6=Hu|*3APoj)2Q0V-}@#C z=_2K)7%YSG6(9b_hwI9g$RfudDUjeXD9`udcYXK=A8sg>=pxxc{JC(CcTkUqFT=76 zqzBf*OF6VN{@q>r0fw)haUZ#)i@$+SOth^GEl`WijAIZ+!E&7E7BUOU$GlQhm=QJhg_jUT~qVTzk2;2C&4J>u!1 zE$~Y^ZN&d2++?b4O(eioVG~-?g>|<^`tULzUMcK3|44xxpMV#Ac&iV8=EMK=;YLk$ zZ4jydRv*rUJ?*;!-tY<7@54nt9MJ5>273DNc!L>E)@mRAvYEGi*DR~?tR!`^B5n8U}g9e#xXX;2E(X~6{r9HE@x z!;ip+jS4@5FTtL3K`S!#xMq}TEA=gcd%=;)j&Cqr=3-XPk`ho2-!$CI9a}O_IeB>e zNpN3-r@_h0dyjt|{D8s#g44K2m02XmjbC8T!Y*)Fp>jylMfOR5AI|jQTp#|}hcEkZ zL~Bp&?p=KQ4b1+3^ag`vZSmn^AFda1V}(gRyv&CSe7M|X+P8YP;g2rT12cVilMnv{ zM{y{YQ-E~oO7D*t1CI^e|XVFJgJ;UD`rsZ?s`mih#zX4tf%gPIHfm^2gTem3hglo=! z5>zAxU4(yx=cRcoyyW9AH&_O7rNL4@L=O782uJ#GU)Z((B}M}J`veU3;Sum_^Zjdf z+1)<=nebA>zZ`y-T`CvP(gW*!;@^s*{d$YMUGymdHY_I-DR3OVZj6Zw@HY$nT@Mt* zZ*{V)VZFR3ms)VA<#x>joQ`l0SgsKzK2hR3dTw4DSod~f`zH~=NzWDV2mvd3%)zA{ z$At#gv+zR0zX{%9`1inT@k{SX1K;_?{|>)xln?1_SsRS<9UU0<85InK%>wtp$BYVQ z!~2abcmn>-D8Jq(ej8k8g?9xH!R7`#e#X#}08bBGhqH_Z8g}8pV)#43D-Hhuc)ZcT zoj&oi;OR#BC*Td<@($}23@eNZ-uEf+IsB4Q!D-m?R=`s~%i3;~4~Nb8IQW23ehgex zvkM#ztZ5id85Jz`DX#U-#g=&r+U@O#cBExR&i;0zfva{u2S z!*vV`bP!E~k3H$Vb;^cI*y3RPGALh!`x!SPAHXq&|8qFf;1W2^;NRd0PZ{_BExK9O z0=mT0KrFmd17uXE!lj1)AvnCm-*u7N(5h!W1@AB#cmoc`FK0&ae*j-G%6|?Y{J}Nt z<@{gII)NdT0&)}+{v8f8Dy-L?9-x5S;D|pG&NSlt!4>#Dwv zv*A!V{z-+aF~l1Uz73oE>;PP|&*+geu=zm3FNOmT4=Ch*M0zX=_AGL2h=J$fFCj1f zaquMWEf>h~R}6D7T*pvLc@4aR`}1MS+u;7sd#CA_a7dK*Ky?P5fZuZ<3g~fTd~0~7 zQNBO?6zt%L>RN&E7`9^Y@N&3}9tpuOgKiDnlG|@j1Am5(5ud2#KZM7xvx#)q_a$sL zcmcLpVb2(=-IHgHtGWMQsRjCDIJDY33sNND1@E)mN8oD|9)}T-hatuYcn=OU_)|FFi2oiwZ}1=R4ueBuEo-B}J>bm- zkANK^MgvnZL>s&a4l?)!xYDR#GaPLA_rZ|{{{UMCUxVWeZrGdochIP?eQ!<<2KR#_ zi~^(JLc@PQyvg7taFM~QVe^^MMtCb@NXCfFx{rG^|8^OM5&{mup0lA}AI=R1N5b|R z@AHA%;6Q^X!gb(KZD0}H5{^_}2M;v-A389MHv)>`g|G}NS;KO8Dcnf8d0(~&_H02P zc)d~nZg?;3*?^gFZ{xAsayX7zkwASitsQGH95)*Hvrh#d!j}#I_i*4^?+VE?*5 z&-J4E(dBvWXT#EiX>db&z;mDR5}fj*=Q!c0XT6Ofk2RJCq)T?fX{S8_^{fN%0>gg{ z9%Bs3-{2Vha-fmh@gOen6Y$^U;(AsK*j(WxxQzHPY0p7{i5P-9c@MR-;jyf-XP-X> zoBMDBY(5>|3a|gjyU&lo=A+gN@N3jJk_M$m!fs^@9kH#KVb}BjF&MHFypP{A;0qLx zW4{!53N}B`d>NicgPwi<3A~Kw`<_AjExZf%l)nTYf_G?rLGd;9yPyAe!r)nCt9!vK zUa_q&$jb^0gWu%jlCC@puCtzVgP+^~1U#Y0ww9~^HMr|n-Z4`IZ!k9S6ui#GuJeB* z>kka8jDY(6Ij|Vq72as@aCo!955PGFFNYTx{2IL6;1A#>!gBtXPdpA`m}><51g|vs zDt!G_KGD#d&)@;{$d|UYO}DrsY?s*9Chd_K@WAhFYmdfng_nH?tN#jo>KNyLdezm% zx7@~q#IHGWala{Dz6>5k7jkdm;{EW#z22+X5_s%uww0;=#tH26*WDjfO8EqM(zkv! zW8@xqi^22Y72o*4LvZ`=ycM2 zWl#!tfmazk2wrpAIRB5wu+0dV0k1RoF*w`c7vbdwZ-(;>-VK);$Az!qO#F>mp*F10 z1-OpG7{!5uZrsOVu(^dX@Xin1mss+QXE;2>c;Ijk{C1H0z$Lq2DZJg_SK+UAd3RwU z>@X|*9z!zo+K)Aq3IYc+28?;$7TyVa4%G|beFlF4A2v8Lk#mc|i{LW`f04-f|2Mk3AAARK4JkAwFc@ma7H=Z$|HK7Po1 z?B4_%J>;u}ER^gvzOkseqLFJlWCTQ1%U_a5iv%kYU~ zel>%(?g$3q0YBGg!>-T&6EKXbF$7uj;WnRp0)ni~@QTm8{3HC8QQq;>c1f<!qviRd1a!l&y|(wrH5wiZr|SwVfcF~yweVVw zY@W;P0(d&yS>wNhkH>k(NW$$nbdmEzGCZY~oGY0Bvd>mvIMdwwAaXB!7;Z|i_^-ng z;04OJjM3U$%*XBUvfuq&vqs|YhWDNKo~&lWBY8V5hl>@rhS*;PZ-9O`djr~ zT+ezBj)R*ie+CyC6`X?8&UpRS*c*>*5wLmSiigbuS1R0_v#TSR24szAVVHoybL@W- z?gV@M>*4W+|8HDk~e@Pst) z%W3iO(!YC;3-jP*a9v%YP4E!M_uha449^+?m*AHSj!fa~XT%SH-!%Ml;H|J{i#NeL z4L%O3om0_%47x;ovpW}86W(9L#o4W+hAbK4> zaojsdcfxfHe<^(2@K?hP@q2o#<=t=x@0jQX_s6e2}KAr96H)whLFmfqVU|CzJ;C_Jp90^(dkF~F2K?`3 z3yccd!FlfUw`*PxgO6*4vV~c&Sw0WGjNj9vpTk#K;U#kZmjd5msPl<;jVs{smUqz9 zpUkwxuY<Cx6HAlu^M^p8~(Z>+wfu zg{{*#b{kzD1MkA`*#&pP`;7Q(c$5*p8a^fQwD0PH4=`N75T*PJyzDzat5DgV!lAR! z+l77LuCQmCjfE$`o*v5d@jnUA#NSry+X^qFe%JfQvJ3WNSWQ3!4LA+IW)x_6AA^tr zo-J$x?=#|u!e7BLTK+ybkZVZK3N7{V=fTbQasEH31&(5vMgzgh=i&OF`dMkpb*Hig z21mh%3?2q|QTLjcG0zQJT8vcuL!!Num*e-(#4Nipz8vG1=oelJCz#H%c z!~d@g=HJ5@JfrqH0XvNX4W=^-i~{}O!-jt-ywmVM4DU1ik4n5z|0dY}($D%?d;A** zhP4#%9BNBp&mvRj65O@Od*F$DkWp>)(5>(&!=D8&GyG4&GY$WT!iL}RFAUEb0YNi3 zIT+j@K4fqfJjJNsDfoin-v(bcdf*ed{$cM1T!2q`{SNCIhUg3KdpUVd*Eo}p;kX-? zeI^%;UEt-0e=r=v6^+M#51fX-jVr#Ml?|sF{x{)#!~Yq)l9N}kE1u8)FJZWH-uppf zoteBOVyr+rxY+RbhbxQ*?t()vx^Kl~17^bqx$1Q{z&j*x9xKpHS8x-&!BbxD|3ATS zg@BeCa1!2QR1i4JvJwn`2Y9om0?H4Cj~M<8IK|k2r{G}2{|+3Ze%Jl~=NQaG?HSlS z)Yg9J#zSpK*gVt@h0R0jY`BwgB+Z4*BkML;kF0wB$6y{h{jxZc8ArNKuzBPgBg_R! z7(FH@uZQ6UJd}!X^&sESf}?l{<=F*)f_M6PpQ0UrPq~=+FBM$DFy07g{V>zW;NkEl zo^p8_cmRIN_Ez`;yxrhkaICQcMR1<6f@k4$I9SgAGRiA4R2U63pUpI^@}7>z!|M&s zf!D%8l$QF2hRaLJ@6Zx zDqEl%PBG@J z91D+i@BqQj)j*In2*Y@|sq$EO3Rgs)T{HvsEV4p#e0Z@BFZbbRefULKx8J>mulfXR z^5LyM{C6KN^x;E3{Iw7NFyGt0tBX(j1YCp{e(&vpI*;&3#o$QzB{+oMkXdjm{IR8u1sx`;GX6a6Iu+p?s=!1dfCKmA`{ajQEpqjJJM= zbpeAF<89yyTxJxggrkiH0v2*?HyWr12T|U$0ike&w*jlA#2fWT!eKS>od2USgc}XS zN`TS8t#C|Dfd*D09AY#u3LaxLkOC(d@e|=-qyBU_$WuS>zgjaeq#6b0zyU^q#qa{7 zfn{)p5x)|)JQY&k^Kj)a{;qv4yJRh#ZN#sKEAY!Mb4b9O7&aIUybI?T1^xX)lo}2E1fMh-I0F|M4P1sxj0Ud4 zWkv(l;y2=JE#eZ+sJ}jZ)Kx$8U)HcOh6+cUo81X~k{ZhXie`N(mVMs6<7zf7~1@49mjRvN`dyEDifQK3J55Wb}fY$#A zoMF_z6i$U5o-J68VTaMcGw?Q}fz@!9(ZEY^zR|#IaE{TypW$pH{x9%mqyFvireApf zUye-D1AoVmXB7AZ-e@%NIlRMY;ILF+#27!CXYuY*1HpMv)o@fYB{U-a{TS%Kd$ zlo$DuKrs4W5ScjrcNnn9;yhxX5Tg9&zq5;)CEsqy7*F zh6JO5X7Ev?Kx;VOD9{nEFdFCzmm2Z0aGX)!t#B;tnFRx3i*HPL#*iZ!LyXbDSUAG? zO2u7ph*98PINE4n8XRRbFhkggp94o4^)H6wynep_k0HXS@F_UlsPK8%v&dDi6MpF| zPd?csxn$c3mkkN9Qt>t9<(iM-JcAFyafx34*YKDm4?7xLB^VNn0%zeIqrh+QrkVnc zxdNrj4Szk@{H(VfJdAjm_p(9*;ma5OtUO)esc?QmfW>`?y#Lq8T8823FMifa&abjX zufgVr$vfd)Resh03W)zV_&OY~9K&Poe%0Q4!3W@hu&jW@=fXn_E`*ce2KZgi|I0B< zFap{$D;C1i-BQ62*!%!t8vM55Ujdt+54;KI{N`^pr@TB7`52yS@DFenH@jR@y3hYt zFr*RCkOFcju9MBfWE$Z4qH6_W;fJ~W@T^cWY<@m)FZ`O}p98y}@4L&dgtz1GY`OV; z_yjys?muJ;zs1m%yWcxBz+T4LiWQPBay^uS3k+@#FC*U5#pB==1}}q87`z2OW$<_K z8DZLYtw5c}*hk!Mdn)V=CmTE!9%b-qc&x#@;4KE9gSQ&o{Be4~;304}xATrz*A_Og zCS&Nz2Zx?6UILq+<-Pv(PccAw(qL1LQ2A_s!8r)Zc@uzKH>=;NEn<9zisd%@IHgzgikmO!(j~94X%cp^VW-J1-m}U78^VP zwtn|MxSRur8~iLBZ}6YtVg_+j*DkMT?S&mzFxYA+!4O6P4_CvLhQHNH4yA^_KWumK z4%&1$(BNm_ItKq0u5a+MmCV1c7(9dS5&`Ci#eq*T$P9lA*!(QF2mCPpFx`dY;HM0p z2fqe;dN2>(W$=ejG5?MkhT{bMW^gqe^oRRhZaEG#dYaSkRWG-Pn{@NHKBmj$g~9~* zSa*MmR{&i+5%w&ykyCx*A9Y|jo$?Ru-yKVb&H5aVVK83^{1d#1CzsM?a=*V7UTJV4-0%+Xlh1GA{%|7kawNS5@7H*F zu-SAKM@qw=1n={fcUTiKTs8uh!lgz9d9e9D-+uVSIPX6F1)etE%YB|@m)z-Hp%i!m z>=|RTZ}9W^e-4J3MuES;Ta5w-ef($PhWB`XC9LIhOjCo$!1E?~{qy0a2CswD_+_(Z z^cd%Vz8;4msGs*y>ObKHo&fw8;84RK^gI_V^iYKEq84y8@i)1+p4AP`F#H4IF@`?{ z_Utm(`F|b;a~He_dlu=o^*;Q%55MihTYY$^5AXG|T>n_sr(T1L55n@Z8f>_0P<;(Q zJj4BdpiHxquzWMRQ2iI+@l*UE9fa^Cc#+PUfSen-Av^{De4anM8o0T};O36-v8nzw zpN#hQ;X&|K{B54m>gqcl+=`*!=SPSMcHc{VhkNR``<|JX{7JBfxX$tn}fa)f_4D zGy7Z(Hud3lu=&$$-C^_F^>Of-49@?3bd3kP4K+L(Zo}8_XK4d>`tZGQC;a!T|9&5y z1^2*zulgVHVTX%3|9b+S#ITwIo|8!){1P0Z6>Re19q`-uJqMP5z=sX~8a`$4Dfp_v zSKx;o#;Eptfi8zTYlF>T|4jdycS5?t<_`+=fjjYS`4k=HgW*w+`dbNFek^SMK*7E6 zv-o>5QDlrf06X?B<3(ew;9(4t=D3esGR;=PTjqJE)f@17gA3qY2A9Bx488`BpYJW- zG?%Mn{GJ|;%H{ljY?k)|qAvl*;rnz8#=*Do{eQV)ku{zPkB0{-FN2+MBjpY7+c4YX zir)$k&f++rydPfp2)kT2_;@b!Zz@~dRt*;jXlSf);2Nf-!7btK#uoO5-!ymxywBiF z*xcf5*!+crmmC<(pHz59Dxkr(y2hXSa0z_I@R$2=@LDdh*g{YF2)HF8 zpV1i1L39_qbcw&kx2arRnC8PX;Zcvi-|dc@{TzL#%u1jA(Dd{kJ;yyXd+xOKJEu*Z z`_Sy<(c>of=rd#5!pZZeWX_v5Icv)F*^}prwePsOv!~B`Aa2OGo|A_R8Iss@$b4(^ z-J@%&iO~vXW@Yy1b^r8P)8}MNp6{yDC$NvJJ%^`3;@x#kp1NSld-P0yX!6vDX3d#9d*0N!L&nU1Ft_3Tp#g(gYckbyCL)91{cGHdFzA=7g|OzEF{c6`V8!|n_W$$f4@ zqxXm2|Gi&ZbHKUBkui)0_Z;$|Ytw79>35767n9p=`WAgD>e>PqhlXhDEsh+f&0I&2OG~O_nhoo%<(_XWH#B|Rqk^C-8TH+ZbDzz zILVULXPCIQV8s9LaVCyB=VWD0k#Sv9>3=X`9RKd%)uT7H&U|S8w8{5BH2aY$v(x_{ zEC083_wm$y-;}8{9;xfC{ryAJciYBzG>@45W>1?lZT9?{!>}AheGWSROZfkEJT_`~ zxQ_Bv-|IiCKK4Hg@BQC}JJ>K|bv$d+=f8{p_u+m2v+y`?xWjeM`!C0ip1nOg;D)o| zzu67{K~djbB1IkEQ!SPM_s#n5p8ud(-(7V>QAhIs*sSkTbhfHKUQH+E6W=7pS0@ zu7K3gPYch+)`FCvzCEh^cAYhuGV4jQ{HVHzas$YJsw}<;%@0zYB6r2xv;hf_wZ@53d+lp*8SKvqc`DiM}9oM zBD5Asp2}OdlF1?QB{=Ix((B|qk^ZhLumF{}*A`GPf=b>~`$A%uVV9*gKJHtsg=jwh zSJW=P80}rjm*5{jxq0~SAnyplsh9oM015_bu>3%I3Os^fSyrq5PQEKKW%xFc-%8wc ze4XIOH0H0^9w7fdTASDcd@a-`w|u$S+tc_%Je9ZF6L25SmIU2Ls>C776jG3`%x~C# zqEI2W?@@nZnrVeSiQ(lb>qBCm!6(Z#(w{WnQtLRP{AX2(dxg7l*K$^kk7?r_v~s?U zYt6v79Q(UO*1`T6wz=4@z#n4&tCmSe@5TPJ@_h1sq_Mgd)%t<-J#{Rkj>jcV z+TTh>ZWQ;Cc+^v~#1r%_#9P&_`@|>ICl4w-OD|$%nX8RTK2hTqp!}kX^)VFyi zfR%WZ#K%rN6=BVi3FIrEuH_Mop*Z=Z)w-GVPwWRtN7df|TP6AJ=tWADkv~hShR?gJ zu(rYjVbAhsZM@oJKx5rD?SBk6Q)n2eyY4TEJ#AD{K>@yZYV~7_S`af9pQkkMnOi@( zE40>OpCg5Jc@-W`3ZYyc^}nETSMfh6`~OLdsTv%w8ig%V1Jz_TgKxzyON?7;{!YMm zCynqbuyv7!O344+C_jbsS4oi*PPeVGd5u;prf11R${WnxKHq$BvhAbm^vGbsd{ql!!gNtOx>y#8%H zh(1Z;iHuc@U7niMg#$>k@OvfJCGtPxFCjTe^6Y3lDnHvH3%}55?WWu%^b0M=%kb85 zeCN4gIIFV#P+x9P)X@WEi$2 z@{^R?Fi;<-(Z5m04C0{@tGW>vVe)@WjW zz@CrxqVh`Y^1~$ZZ1Es@c~{^ud~c9sS%AKSZ$J63@GYgT+epdkcMQVlTBuBxhu}Yv zZY95)poZ9;@aq(Mi;85~0pEr%3||xMUtr^N4eJ25OZfb-&xYk|{kNm(*dHggCQT<;;bzmcy^swBmec%{fXL+no)-;|iIu?4|= zqGzokKMUKB|V@Y@6mnEKh6G@(BKX$?8=sRjmk|S6S4W6ZvU-5Q>n-Rb}16CB3O+dfI z{~bw|TG&#t@yVR^5A;`*FFaV!X+t~Fr>W~ceDz4d#23T2knc`9P3#HM=h)cBneZClL1+ zhLOwR`O}z+`H>VW9OqLS+yh%%Y`w*X$}*CbxQ%=pzudi-Zg$Mqbsa_#K1*?Z_ArUC zc2bliODk2$ZzqMrtx1L2jMz77{#o<{=~J4J3F=w?sqOqtZ66VHFP|(}F&Nepb&`Nn z7~e*>lODqM9K4s6`a9_#B+t?YyDURV{~+yzx2r#s{5I+gBrVmr<;3s>G1oE+yMz39 z_y))|?A;hfQ+Ok3F-AU`w4T<=zJcY#lGjjMZQtXsO@0QIbVS!{#e0eA1OEswA*Kv{ zf;0vDhoqMHO3^RzrI44UzFb1e@}eZ1|6->!bIc@{Nl`w^sacX(4OtpvzXkg$RF($h z8>1VH(H;1^Q1i2BF)?RIoz-8Te0S`!yy<$~h0HdL zvTW8M$={4EpTN=RaqOY!WzrKg{3U5Mw(n6{La@v7SLN3zHyqnOxIOt$ZSVzjj>h`S z{*diIL`8W77T^eihY-}7{9f`o=n0aOnAxOVq!f}Y4`RPn8~g@-ocu{N0J|*mAw{;v zUPbRA?W6A9q|ZsRILi3b9!C~wB1x9@ICpA*a1$zg0bdvOm#ZE_zoXITHTGTdH_KM( zG6;UlsAn7Yq14sGYjapD6sF?1NAnk{_&S9@(T3htt%Le&{%>ek(gUO)D0dlsg*qxJ zXD+p{{Xp_8DdaorN}kg3XI-bTECD$9j|O#UXU&Fp%#(=7L3S-3p}Zf%G1w_}e9l$xeBi0~=V4NDZ|=aM3{&ig6V zCGZ|-htygpO{0^gcKbl?!&jU2Xs5C5RXr8nN#;>(Z=ew#Bl`E;)mIz0?_fl)CEplN zu-Y1E^po0GA^qoK8Aw_|s-xbIRJW=gR^{h-t!&MUq_F1g*r8*uhlYV0wULJ8pVj

78f;T?297qV_8?h8*LS#PdFB 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 N^YW=@%fGzg{{e?`TyFpX diff --git a/3rdparty/lib/armeabi-v7a/libnative_camera_r3.0.1.so b/3rdparty/lib/armeabi-v7a/libnative_camera_r3.0.1.so index 80bf459cc114e69f17e940e964f741141e710e60..f8a9cad2c2379d6e214cf67a28434cb3b7569f8f 100755 GIT binary patch delta 79731 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�k;^Z|9lNHO&7; z6ZjxP40o}KMW?fgMQ5;yMR^l2RdgnsSd@3*GDMfMiA9(3@{Qjb-JEzQlYMeVO?z%IiCe zMPK0=lIYvaBGE!-jp)0~5>aN=YEhXzqB2`VnH}rhQuvB_F3R-SD9ZHMEcy)}Scrbh z7!YN4>=b2o>=I>m>=ylwF(At9*elBH*e}ZLI4H{OC>CXQ92I4Dl!!7r+^40`l>gK% z8f#nUMS07#T$HzpFN?}3ycRvr7!Yk`Tj8R-u^b_KnK2;BOS@5`R~Q4LHEb(Jl(&^* zMfvJnYtcyCiWmKp`JW(#GRA-?uO23gUStf2*0QZWqBU(RRW#hT(nPD)5q;EU%@Tc#|5+@` z%V_gNd0jPE^a=ijxF|1QE)wNSQj10NTvndw5|_19l&^#pi1Ie*N>ScLTP@0W-`0xq z0^B-Lx5s6zmqG#mTU?YEb2o}U@3J!|3yP^$!WH~K!*IxU7v90x>y2(`|O?hm!fMSl#n zE{k$N3N7w*EVTH=V|9w3DGv93bS%0egkSl1=9eyCF8(FDV(T$~InpSH8)eHVmtS$> z-A-k%51ev|Q7$&h`;BsuQQl>gcNpc(M!C=^uQST4uebwCU0^u!jPfF*oNJWl808$J zoNbh|jB=(?9_BB**>o9xpqy%yQ;c$=QI0ptu|_%CC`TIQaHDJ)}51qZt#DJ zn^>7l+)=Wxy@W1KV2}S2IIJ>)psnOk>qV~Po+*y2s62VP+|#J1-FC!_TdQZxNppEu zU9`5pcQM53+lgOXK$Fl<_|`=VUu22g6h35LT5S4N-g_&n4Xi#WHr>Bk+e#u+TY2Yi zwYHz8&eQbq;Cau}J?)ltCSmK!uVsvV+_r|E_k7gTzFh0xQ?coh+ro*;^E}ksZW_{{ z((_9%yXA;5?;Yjh+DwN_uT)mDM(LGhCo5yqL%e@fh==de53V-ofi&@~$PDl1$_n-N zx+I=l>J(JfIqlRrP~o|`x7{{u2)>oRt~OP8Ug&N23ORey^J8zjPsHAnA%&6Kmd*{a z{yx{!vX7mRxcOv!cHWkjgW}Sw#onJ*Syp(mFuOgA@y^NSgQ~^GrQe@cvv6BU4(og1 zgUYhEPI?~fV|Tq~(aEsl+Ula6i+S0pCX zJA8{L>Kc1uNO`5_{%h<(HBVQDr6)2TPgi)pxyEkkUUV^}*j^XyExu&0Xq8oYTsA_= zrik>0>GL;?*&uy`QQW_ zDm|Xk#uGd0?l|>*PR_Qj8J$je`*k`K^5mSfhYMZV2ddZJ>+&wWIBbI*TUqw^6CD!< zKalq63Cr%_jJXdkwjbI&?!mOgY&$VAE6yAKr`5jC9y|7M`O@6VvOLf5Ywd0!pZ)21 z^jbT?9e*OMxUN%e$;A-wt$&6TZaW?F^Je{6zKiFjl@F4YWStS=!g`ddDXvwTkWJu`#ZMgL|sI z;X3tbwVTT$B5D-763U8d4y+bilY@bbtG7z*jOvUe?;~7SZ{K|`#9AlgV|Ix36APMw z?nlcvg{9X?Z=7zm-q^qTk2jUKwtCXnjuKB~svV!cVRIYkA0;=Hhu5tv+g0*%_H`Ss zVziE+$7uTaM~T(y<*b*pyZy!bfn!bCW^Mm%R*3b?y`BeC?W^4DOTyAqw=`u5n>tJA z8{_wGPRy<>8&nd%r4gP+j;HkageeoY{5qxEmIl}w==vm-{5r+%_Ur9A+uEnUG^ODB z%q?~B)=_UvNo=~bSXuVW_MB}C=r@D4%RwJTZ=MwrYrR9EKZatoH5$Uc%3(}~r8i)C_`Yx~;f}?(|O3cRdiF?s~rQ*}SX1J`-|(RPmi%9w-|7 zQ+5~2yDWE0u|Kw=>|f_3He`8xItReD&u55GqI4ok=!1>mb{tr*2(v=1U>Hpo9 zXz!%WIoEeOQGQ)$db`0^X-18>_N(^ek0w##OyEGuwMi<2&TJ{VxP4QWx~`DK8e5%TaEPeQugIq{iGcH)Bm z*8Z3+;m#?=doeO0{6K8F{aR(&dQOem1 z3)|n2nEq_~<1BU2nRbKcr-ibaPGzQ~TWuy~$tHRw%fHJ1ICJcF&KtEtOB2I(mbcE^ zSsuT7v~$}0sxq`RBYbqaY`D)V8xM5FHXbxM{p)gTwQp8Ov9TDxCEjNwVoyb-`?wr= zzOL|XuBXpb9uF-Iw<^o#R@5Av7__BNp0>RS71s7CeDzW`Sbcs}W+KPdN57F%OXKv| z!J+A~gX&N#JbhJW`}9z6#Gmo+w&z+Q)Z5_C)pxkE|2Dbc`ml66e*Jb=y4`B^^k47r z6kcz~SMy%6y$@A*e!kw03IAnFIh&{OxF;mTzPkQ^i*bWv)BoV=EVVqgx6A9f=oyq@ zr**mNqFgapEi21rRL0Z(ZE#3o&NeA$UaUMG%UbAi8Q=jwrWGGE}jYoL9to$q;LpzU#YI31VXGCH0in8Nw!tL;4g*;FTeI!FKMZ2kMw zx^Xa`#_@mpsY#vZrCHu3xy=rSbRJYx`=Hgidy(Ba)%!uN9EI%HLSC;Z`{dN2Ga*w_ zibFdm7G3{S7~VH>ZyPNBBbgOtADwDnJh`*weLA=H!8<#Pb(Xtm-oaZ2i}U_dHxI5J z7m{9_`9Seq1U;I&tXI_A(a54+j@B*e z>1gdeDV&IE7R%r2#XaPt;-spMB2RT09OkT6 zWN{~FMXQ}k7#!|csuy=0=a?!^b{HJ$m@3O!{8@0kT~+n$Q`L&&)A?dDf9*Jq5Eo@# z-#`1?{o%zeIIOqO!}{uz+s|4L3_sntRw$!rI!D-DQ$nnN9Q9l^#O_dk0*8h^FMQJ@*|n~F zB8Ps-pZ>wO2 zvLD{Bw7u_LmiqyhcN8o3(4Ul?3)u6;o{xsw&0}A=Xuq9}_so^J^px}|%;%My30&T! z3bA&s@LV2hw`>$c-GP7RY_duhgoUOzAIjB}cg#gk@{N4w>3YxX8|{vb7IJXmE?|4{ z;SlTUfB3fD(a${Z-Dt=24b8(h+D+_>o{Kly13PcL)G^zRc`8*aC1f9i_WrgmvmtuE=VJlBd<{YMtbIjiBH*Tq!d(<(c}={S~-D?Hx~ zw>#CGdueofSYAch@hhI1BeuiMgM`JrSVpH%eiSG z-ta4))g$ai_F2#SBkUgSH(va5Ktw@k(ZKZn=~v2{pG!@9tADM$8@>D-V@~fqa@_y9 zJcYkMc^Z$j+qef_^m5LuEZbS`JABr=;yZV4CFKu&9E-TBwJ8t(bIQ}q`<>H+o3@`7E+Y1ku zuYasgdRYG9@^wAR)2csvRn+Sbq*cpvl}3j(PLIwG?>4eLH0BM@w*CuxM`PRDNLnds>$Ku_nn|OX%Vz`4Ts|AM!tQve$WH$KxYaf}{q}^K zR9x#cw%TdzN?C`qR-1%htFMyA@)}+97Ju8?%Q$APxrk98LUt#OD#;+KG?V`2EDk*N96G)VR4ani>PC zv632vZmN_wlyxX?BOB>T*$%2CP{nQ;sMM!2gU%8vdr@^bRddfilAiHy?b2a2hcT}D zR~#a?+yHkz!ER#u*gc)Q8+6k>DE)-Fw^y^7ukWPKN#=3-G9I5dEbla^Zo7d zceC^z21ZVz~Qpv|9eM z7AAx%eYr!9gGIh#k$=yk1{Tsii!fN^DHgf+EH1(#`<{glEHV^}j3`m(iRJ`MCc8}v zc;(>HrYc6M_kt;dEa_e_b>I>di}-sM+aZg&XThTlQ7l64S!{sJ|DMH3iw;Gtn5gcV zthBf=s^sr3hkVfD7%OTW>Y-xtJ`JQ&F<>oz~ z`IaW=nz&A<)cI6P!#(A4iv>!{J&(gJ;YyufWJx>}t~8tlmK9nd=Hau0tEw?Za>&^h zA?8NqHBSgv$0O z3@cUT;Ty3XN#%KMv+4AhfXW}uK0c{h^~bX@!SJte$W@j2IHI^n*FxsknVap*4mSm-&Y_LceX`mBw@E}xYHHGR3hrHgRsVYD+3dW5_3*sG5 zrul|xJrc9tQ;IXpnnH9~mT7y}!fvfcI?2peUQS>;wzpT+YM8I~D70oi?yI-Q+3i=CXzl=o(6rm>t#~|wKzR~MfIJbe*@dPAdyMu`WnzdQq{r1tbuVM- z5L5{|0V>DUODFO2&Ij%RE&-MTlYs@mDBxP)m!O-^Q{gkbkB!`(VZhtz@bR~Y019vX04)g2hcKzLPaWt45BK|CD0fMwIEFcY{PSOQ!R z{0g`Pcmc?lh`qJXroC%;7QMr=6uiS%EKP~fT2bv{>-rpe8f#K~*Far0ENjrADIN}Q zi#mqkcb3*?5URI19#229j+SU5gvfBM&LIysj~}nP5rEeaI*xeFL-a$3JXA4@trIZ@ zcgROv-oUwVHP>a~e|VjL6%Qt)Ze|tt>5v1lW8jc?x~3}jUt;`z*ft_d3?Djn=(zdw zc*`IkUa-bU7p$rRhx}_Tul?g%;>V)@kN4F4)3pQ94hDL-v9_vz%wb08Y|JI5XIc={t)>~_b914eZxW{@^?T8GX+>kn- zDjm9hwNY1Vru7JGCw*Fm-0ORB9@WQVL1=D7{qr&ik?PAgnK1$ z5-=CI2{;Y-HBbvQ1N#A8z#!llJVuusa@2c2-8I^(@(t>tf<5v)2K~F(!sp3&8dAx= zeV)vw!<{TLgQU}M94t43tS5FR&LX{h>l_t5BCBrnppm4hnmsg&4D0eA$4N5|2W9lB zI%)PIT=6Z_%_4)ymu&AW@-kV#dd|k!pU(|d@pgH7W4P8XPsM+}abcGyH405Lt?td7 z0ockRBV2N=OOs&5#!Vvp_#zjnHQ}LsLmhGoR^<~FUqj(*w3RQnch!bzwR=P0lW*@_ zhfmEAGV-=52irbAD2Gt(2(Hy>2SNQC)MUgRMfsi}KormLkN(LEV|m`%nI-ySZZ$zm0nv@MvSv2K}UU=O>z6#2SswaZI@ zy<7e;3H|$z9zA8ka zb1k9i2h3)J5XG{Y%H99@ZSj$+in^UV3MHo7JM($O}$ z1^?1r$JJbS!<_vrYnV#{yPt%tZJAlWex)71E7P zu4S8FA<@3csC;L!hdvV_MY5k?!AivdW_pG63<`y&6m;!q4q9QC3E1yM%oVjPEQf^a z%4&OMUGlzlp&cHJ9b2hFc+L^;)QQc~tGzO~q_~zqGQ9#j$DkNcAgH~k!UiFv^$3AP zMrPng$uFptP&U=7fP8PhXOr`&6?vEmKbL@Q{Vjq&AqpM~?|EF>#^bf474Q%ZkK2q_ zbI2QnR(!!`E+R8~uRTPCY)~!;iF>^5lkVCyNqLkr*wsbo1T{4*?o~1YH`u)SDtS1x zx*P+B{Vv($k{-v3hO6zv-o(znO1k;2+Qv0N!AGWVxHHOTMZ!S>fnKBb%8^f@y`3EzKoyWFy;|i)WX`e$OSNX^dNoOTLCJ zCIe~p0XAHB_xti_WBYMIzHw9^!%Gu)yXF3xAAVp;zxTzAAzHJ^ z)!Q9eoc15A4i>PhOHjQ6>RIa&5*^lTNrs1f#Y4{COIFoFc$M7gN^M{xUnA**PFe;A zg=?4hSQuiLw>yuF%9yLF?5iCNe|{FJd-yD@4CjPvt?2e$a;3{DKgN!}M#gvP;mCsE zOV=G!QW+H{aAKi(YohueYQS&v%U<$G2c_gjNVMQ|rngU3-a$t39-+y99{$eN1`U9_--rDQEFw6Kb$B$+OA-q(#}`RkA-+^+f@pYF>IF~zZ<-jvoSUdQq-99y^#`{H7_JM z!zKsR#o#Tl3h7?PKGKoVeG6;C=iB6sHAVQpp+9*sg34&b7ucN`-|BF=fAUe{``q`Z)uXXt@1_1@*!9T9}b`2ikIE| z`Oz=D@WKUaqQvK7zLkyhj|z#fJO)es-bW7=!79AbJb%Xvf4{)n&0|>nX~i1nP17)7 zaN~cx6-Qtrt6NE?(bY9PZINuwTO_Xg0u(VpHJCOd=kar6+ql{8w{U>yz*tuL76}gB zF%G?kHs^6puDj?G+!vD(G2*fH>d zLCUTv-%1S7P70=#K}e@x18ZGH`jJ(v_uHsS!^bi0+ay!fDo<-S&AfxXijjyBAa*nL|3KOes?A*Ip0`J9a?~(z;hxJ`crt}`{xZlQG^d@%%xCl0k@dL_E0|QGiY|* z-7dr?kF>W9USIp~;OD~IA8cJdy3UF0a6akLZGS5dZX_yR^e`OZ_zcyK6RXcBUvxfM zi``1`F|Ecd&>)z-3TP-O4ipUvW52&oSWt_6r7`so{Wx6PB426@ zKO`!y^Nnmx0f~!gk;@x}n19Zy73l%E|2i9v2N6@FMzZ<7Ay4#=Hg=@|-F*=wACPW| zYqszXK&{nieGsU<@&5LrO&)VtING%TJ%cv}-dS3IwAw%|Z?`u2R0~W0fP_)Kjpckm z#s&Xkjl&kw)oF3#uT68vw^{~_&B6f1CNHtE^B<52bb^gVZ6GmIR%1A8#hBS47qr|l zdFgHPn^qZZJQJz#8-i&!s52;&mk%f(6qtb7GAIQ!8N9~jaz(?f0d0MV3WeXXkaX#s>v}M< zOIGHyi7f4~)p9q4&Fqgt(w!A=BGCy;E#Y&8Uf)kSZw)BuHTSRXeP%`O{?Y91eJEtW ztQhUfv(V<852kLWl}-2<@rN)>-(oFF67v}b43r&aWFcK@VR3~du=7M`+jO+b`(12m zAzA9P)Oox8-6K0$vJU&k^(L80%lKNwk8r#oAvpCDV; zYLTrpddR^hY(Z>;>jur8+Gy}E6Eu`Yx~a4ESWzyYSxdznV1gag^ghjUPP^T6F7HnzqzgGuWokVG)idNxuVxx z#%2|guI$^*80+PJM#lNj8lLJwTC42DTawqRYoC#*Ff00me^-lXSn1#|s53TWR1rCW zA9T0!9y!5klXtkDz`)ue-)N12q(9mSItXi{DOHhP#{d;?I>kB^*6+JUEAmTaUD`n@49IENpXGQdQZX6T#HPfnSMsk z(K!Z_&qyqwfi{7bgEBzrphQqGs6FUr1kS0jC%2P6^m090x}D@E6xE+Rl#GtRiru3k zxSoV-Q+*y>&%m{zJ{>OakF6LK$H1k5YfU|i{F0=n&8!z7oJ;i0phJIDaK8ck^j z8BD6!iXEg!dFX`^28(j*s3aP<6gY$y%SNOf_Y9>B36Osz`~2|+)W-Cn`HJy zowLiMTYOS|#`=!SOSyZR+$xvXT{F37!s#t|3AJv23)KR28ng^l20FJKRR%PZ4JgHg zv7|0qi6I&>?5kswN=d(@8BlY=yE&Afsv}0E?FFlRtd1rgxw~dDbLIW@i>Yw4 zqEZsudw3gZzc%jZHtsNXqZD_x#_u7^Y5N*x*h4aDST`1EAk$T{tZ!tw1~L?`d<+l` zB+4(mrgzpEw2!e!PjC&ZGLYye54Q3rf@5Vui`=UP2f~0of$_i|z#w2ZRE`!oK&c{b z3qOxVdyj>eVj-f)7PF`KlE>5kw8n>8<=I$=%{gL|_qX0MpKfLt7w^4X7P^o02q>_YjA}U>bh~=7x-uw< zr|lgpOWQ|AJ@legqvT)~kmukzAkV=w)?`>s#eY8jZ|gISeYcNvd3cm{2ZHp&)<=t+ zWNnp8U2cy@Ut%`7w{?N2fcjR{1zwJgv;pDi8LA^No{T-%t9f zgAn0%_W1!s7;}IGs44i9Y$4|-A3y?X9ci2!Af9z(bF)5PUaSOJj#X9d72|ANF}1;9wU(@_oVl93GV9@o$+ z2RZl|%zPWK16v)pOxw|EXj$)r=$Ox&*@S~6klO3noP!v-U#Vx?4q~!hUeBrzVphGq zo&_Ev;dDbiOFV?}Ee=~wT6v2npw#}uzAh)v=?bw*oAf#sM*J}3UW^R| z46Q3M#0~+5gRacNt{LbI$O6iI9>*_1QP7=)T?{Z5)Q~}i>!2$jJ81Gu49{`4H5aG? z>Jj!q&~}gkv>CK=F&!*SgJS_m3yMcTqkyRhH~@GJkIfE>g8MYE477!PcZ95)5QEo8 zG$_tPLxG$EJroAybk~me3Qip8@fd z4A~f6vUiV?2s*8fl^i9DdVbmxkF-SAwaPx|1j7ZVti#wx#eOEyq$2HsSz9SI<+wd_F-w|oW;I36(WfhK2 z?#4!bhiX1j#g=|YQUdN^sUrC%>Fl#}n)amCU%Df=Hn4Nwk;@%_R1QBs)!HH-N2e3V zjvOOT&>0QP=X;VCJhWkc)^T$?`bl@8-~0^KpU2D^AwqjcKG(n&eNQe1W;U!$Ic>_$ zs_yYyWjfXwaa2m4-oP@BlK}Fqaq)5T3&HZ$m=okN@+W)e1ag&Y{PF}DM#*0G*Gcjj znZb*wi2`yvuIz0Z*M>G?W#;0&g62kKbU8B#>1u@8PBefy7YkzjLr zHYzE|0Mdh!QK3^ne1gv>_SG^GaKHL5ID31&mK9VYKc{Qi@k(OH-SOX@B@5emTU+D= zJOhzEat>p&is#t8b0kb%j^E`l7~eZb&WasxIJ_~pJ=$WGE$B2$jW7R7-XV0K!+7U6 zvYK>muw!6kSHmREYL%b0Uz%cE|2t_GX?QJL^(UF!;Z99z%3y7T_O{%_T%E)Srn*8V z(@7@d^ef~%@%yNyW8ocnLrVwzf4_w#Rgr>#W_d$n`p!*yUUPo5`WH0IiyDnpRb-3T zpaw^%zEzHIk>%$wTj)0V9r?1o#k9fro|V)RGL*g6N_uyii6aah4NYio z&GIz+9r=`TcPkk$dPSj6{dSPi=^%D>`&$?WP{g^*#Z)Sq-}R!Cr(l*Mo9VhOS2|lv zYmHy3=+lIh8Xao-5uth~%WK7K(%?-sohlu7W4R@ta@>}aj6ZtQpQ-ACt+JPKb9;Ki ztB>7^Un?0uu@!oAQEeJx-Yb0Iie`%j%jt4Ejad1n!wOQ_~OcIuKMFZ;U zj=_i+479h_{-BqU_ICO^m@qcWyKOvC%R8gTHr@!PPl~QpC|A&VLas*9?0=c`Df(#j@;4SjDc5+XmIwV+wQzrtj$7#5xxbrs zA}lfP9!PJ~sAnI@@eTPY|%3!tP=jbV?_9mMNf z)amLb_^-CKjd_lRS*Ox`TIb-Y4q{uM zromlP96a)$9qv^7p$ij^u3T#1thw3o_)?;F|4Od8(qSS1lofcCK) znY4dEHlCDf)P|h{GJS8K%NSo`kujo^ki8c`Wo84G4m#$WK=+fFE6>Pzg?X2BG8cO%ovY3T5BzSx63)#K1`Ny!Oqnaz@ zF&Zb4r9CWiVJ(}vkWN5n!%7#@$tts4)xf+Kp(3rYvT2K`l@4z(PI{G=5%0dP2Kf`G zp7}1OZt{J50| z*$ee?hJgt4Sm>Md4ga_YO#Nz^{!N$?#dIBdme@T+7|xzp4%1CFZ9`px{j%jSor?#2 zOTLBO7yE7^v}bSX=n*>D#*!pjNG=*LNOS-R8&~^>H6{KJYjUz^ep~(JsK&|&tdEe$ z%pPWWXe|q0iOzL!t#Rl|y4;(dvl|b*ORtHvs+DbikA~68R`$(%G&pQ%t6$+wd6KQ( zWWnM=J=O&=?ER7m!JyXd?B;v4nL1lp&3YVS!X*8D`iy2lON`bm%PlPXeVRxwwXhxU z(*tzE5H_=b4u#Q21@zUHh5w9>}D`GiIfE4Rhy>*PZ=9>f6~58`WEfW859e~TPxYchF5Qf#}QRsAL+Yy_3C z?px?fWDr}ig}zRkZOpy}!G^M)pVFQ^eKCa&Rq{d}^7-%=tozi-A|@GivS72wi`a9Y z(w_${t-ZV7Rwqxj-QRDk#h2a>?zh#;EA1Bf7JGIpy?|c`8}u37L$Ta{?K7H2+OdH} z^chu+yrq%l7tu^QDw^FaqVv2~K8#=TeAqbqbGn+)(>1Ja8;xm?<5nf=jkWTxEyj>9 z=x_>uk&SHnm$VqJq(-LMfhT>UfyDqj9%wMjHb-VY5jL&kEo;gS+LKIYi#f!xk2rK@ z`#Ct-1rFEPZ4Rec*RKFO*pRR2RfPMriv{cHGQK8IsHX`ux1OER(*whT>f^N*xyEUh zpRt?eW6pXkJzMZOk6C^ahi)zMA8@7FEhZCc*fsnFZ8WZvXu@yRC$b|u=|JCcZxP`? zw_L8HplY_TnD*^rcd9Y4>l*j}In z#WY}>62?3z>OgDQtX=dY zvA1oSv1J#XB8soKsMwQx=m^y_Ehpb(8}`s7aac<}JG+NIA$Ec;!T?9D)xZ`SXdiOk z__2YuBiLL0VlOp|zq^Xq2m9zig4gvvg!Yk3#kzlu5#W4R348f#`m;)OHRZ99WpszS z6l+Q;#@aGE1#?KJI8H3YfzOZYq z0osF}Y`~%u3_fpT5a@`6L8{vTpAg3xVX&}`!FBtI#YCuK3yrip&1zuzMjE0{1cmnyLJper^EX@le`4SGRkRe_eLAv+6vCOX+odj z;JYqnIl@sVZ(yNEX!k+Q_j-*Qxw1{KVUmacYnR?E+wFDo%f^?E&`^S7Q*8CObS8GM z|M`}FM5AihvZFLLWF&fB+~jH99;~qs`3pMS5oAsPa)7-2J*--H7fe6DNpp ze8GK!s1WJtX6#Zyy-C21TE0Jl)po7>FpNn~tYvZE(ZIyg93s$#xK3@q7tddfu-AH| z(-WO1zL}y+QCAh=;~$fpT_eQY!Z&UvIiNNPtMn#0q?RrFjz*1J2H&SZ%kc}waq|go zh49jPDaUP0a#PLS<2GR#Cb_vL220(Mu$=?qcJ0!h2wRp?uL(zZm(cZnM}yT(uMpuT zYj=$P2Zz4S9-}&K9u{o&LE0IO)9Rtk<6@j=-A}9<*LFe$RpXH!3kl!n8 z)AtmgO0z$|r`^U}m(Ml&j=zJ?GM=(VC#UR<%o=Tt4(F?5ToaCD#^A%GZ*f~svx%SA zyDpz-td%>suDwizYS3{|DI0d24oJK%x59%EksNs)A7b$`=I@UuT58clVo?}|iTh*6 z$ELlJvMi-X-mXJ@>+iZOHL|V8X<*!Sd2(a?*FG`bDzD2U8+$<~WL=k28r3-IbG4Em zPU@N3b1dI}xh`uP*|p=eUzh7RM$9!`m5|bqun$Ht%xjkE~YiWd{7Q(21pBf z%#O7h;N1fTr|_$~-?Eo~ps)GYG|-RJwLA{;!F7D>#+rYiQS?j$3qC<(`X6kl#R@?R z%nyQ+L0dt3P#u5TKnkjWdlP&41pQ-5zlOe9KZX9GA&*S8_DX+lZ@(<9wO4q!_PQK{ z59M->xNjP1DCcX~Z{q5k8+e^u#}`+%^79UTd%n;3+&VX z&?&UW%$om0CkG}p#OxhnZ5KbfDO~IgkP%*Hc^`3EQV| zm$WE%y)8Ii@Gq5&-V6jkwmQR-{B zJ@GR8;1unp{szu6w{ruW`EKVtI5XYOQE+0r2DV#3#0-RiGD>lnOV_k8W5Oo4ln+1cbxp$sZ9~B z$t8!-%F1flsnc|7h}QBLCXK1uC#-!8Xq%QS>nFNR_`z`hJ4~-O`qmDpqo~kNStA5q3EPi;kl!%sLH^9Y_~Eek z#H%}6YQ3NDZT}zlMqJT(H=%3VxYxF^UkP{HMD6%jq}Tq%hbes2{aoCH;BF*g$l-lA zoA(RtN39dtreEkh^}dPd6Pdb_zM#JLED;v4mn-RE+P>Dlq@fWyAhUKcqDijc5K#@exQ~J^S@Mo%ZZMa=*rJOr29-iRe78%lJHe!ShDS zKR8vXDO{Mf&7|7=euVlHvG5-`u<`4xcAIyZ4rl%0efWF{-sm|fh4n~eJRWJrEkRh> z9+#Q|(?AR0E@AIppz~G#$mxyDdVx-d>tG|B`YSDf3lp%qUuksc`847=bIng&CtE`v zG0V?m*uc+YXB!9nMt>seIpc{ijyW#Ur!@Pij!a3iu@@|Hvn8 zHS&0C#VA&Km9B2*g=Nwj%$~~Fh->tDa*lm^jXt6-!$2aB{dtYH&~m%+;@|WP336y@covuCK~OpYP~-}{adLTP3U_!Gv6DukLqtegh;$WqscT zLh@LrTL>hLJ;ouNEdZK@)hSl8RMXQ&1DQLD%L z?_X(9;fN(E#*Jz?^TaQ~6OLB0CvVdpsAw;9C}i&fx-9!24{KO|D14UQ^Os^_S8iiI zg|p_ZK(^*K?VOZ;Pu+xXy4sGa|CZw$)n>_?pVZ&$PX<}!M1GDp+kIC5Z+Rc~;BL@J z^;qk5`7(R=4rbA1Z08-?V|XD#dNA>&_hMQ0Kf0oOx(qXO-a!IW%q&>u2{p5!GF{+% z2A6f;?Yb_py)rfVwN~C2(X(uamFDry!0;AYNK4JeZ(68CsHKi2*)WGcSH~9F=p~x* zBb#8yYNwZRg`GY{$whX-N%yEX$D%(lzU!hcm7n37AozjKSK)%7c(VSJktOuHs~kpTg~{XSldvGPMM<&Vgba&OSXBDE8|9=)H5M?mM=^XZc5D z&blT)#NLD&+5J3Ftu}C08`wZB^IgEiLz3Rh8_;CxUH0B|-1lS}hMV z{t_X+O6a6omeNa{N^vxFOD}ObyD;KVR>>Ker0}DV2pi*3Rz8mFV=>}6LW}F!rhcertLmAhpSX-B*Ry&3#TniG z>wi&7>EjiFyZ^EZ0XLD*7;TlTVt@4)KcM9nwkQ^blx1PT1H^H3l*Kq_0BQx@fo=LY zF_;#b*}*t5Z1@`ULrSK{D48C8eazUv-HSY7Ej7QY6xhRxZpigVp}QMTwwd`46gNCS z5o@*8^6$34@lh~$orh~o%c#!;Aq-TFd*U-dqd<`$70B|bAWR3%1f9Y~^Ov>=!W>W{ zE}IVlsX(oeSAmW*5-+~qHKCQC1NM&y&JjM@H9JUao_$sB$KH<@yY~-m?VpXirc_+b z&yttCXnFCf+_`nv%W52yb9;(;DeI-HvWERPUhGY8x3JcDF`iy-VX=e65c)H29vdVE zCmd~gW`ckn&-ke2DIwY}IX_qv6ONmYdwZE5$LYksu*65bE6RyfrY$PEl)_nG{vFWH)YeUfY*d865>~U*tBb2Kd$qfy?DnDv_ zWUPSiaok*@EpaTl#|^^8JEHRCJ}=gy*1zRWR{rg^+3~mRVBBHwg)Ax8m?gS3N#!qK!2w7xVq zdhVSbG%f*i{TBJMqE|KIOrgkaf?%^HdK;0wh2 z4PLibyx{))et|U2sJzr-+lz= z7-!3~tK@%NU(fTxMS#2t^RFO=WG>FEk}tVf{BSX#>o2aaU-r6J!Q)@bd8tbNfem;V z6?~tINkhbVu}Usv?>sDqhP>v6%f7)F=Xv(jN=IK?opa+o-@-vYdPI!j-%C9rzSd8& z|2yp0?EhET*>)xDz*+YHEwrcYZ2EA#_NOO_2Qa$qG(zmkPhyP_$KvzUg(Jl0afopnYu^z?a3}Nk(#pk<^`&tmre1%>cuYe$s z{T)HL20G7HB#RG)R`UV&17Gu2%YBuPB88);*^Okei*FCG*W^I#o%tUr;i8@xWp#Q? z{GKMRVZS~mCU%Lg6_rmfd*CiIe!D845=D#>ANFg;XB5}u8LfP2dm4tnqw!!@juL~1 zpHmdW6-5BX&KbqI-PZj@q)_t`2 zuy39ss=}vP_#}%xH(ET@?brGTSIuR4o$adJo()J5U!>XwwlPKA8uSh}uVrivUX@p3 zQFkORJ-{_Ag63^DZj7kM{^qSQ;%INRGv9<)DjT5{pY;CS5f7%b@guFckZ3|3wDgL+ z&}H;X6-%jKu`51gV)`eODp@%yCPr2>A(qSfoIHY z?F6*QgJxDSL5%m`VdmeEHl2-`M|NJ3x0^Rj6o=Es2q<`^x+yT>8 zpZ_oZbS`8y~+lxGkUcFFx~MdS)mwsdE_%raJ@mAqu@@d+QVCbdU3DR>f!AQ>ZOqX zxb4Fg)Jy$5e5{8*=;6zOO2j8Tf|ClCNC79^0mlOk#qFeK;BL)cDd|UtE6}MisbH}bbjlsxU|Zu<}g4N{PY?+4`e=^lQQM_&R=gujfl+@C?pR1g`^ zc?3DY6d0@mrUEx9@)D^ExYK*D6mZTRVH7X{`fA{0VD^9UsDR<;-2wMgP%otbc|vkM za*n$YPRIp!#xj9iugim@7)7?_H+KMq3hJd&AU8<9=+H$Wf*fExuoB2~a9%;Zbj8D0 zdH6bDIP9!I?l1p$hb|3R4V(eYx#Z5sMqqXjexfMk5BD>@2{i2Sk^=q&!Z6{ALuUt0 zGdXls-BIMV?uh+?LBW_U0Qn=z=JHatR9?sR#nL4pPxvUaTfY>@>qLbG8AW9csCVe9 z5neywPK|D_ln93ff^;Ac;0%zrf{UErMI~I=sL1nyJmB-d^RPeP$mIs9QbE1s)8x?k zAYlPOZZ{do!&|1HL0Y9CS{bkj{!eor7Lwxdl_Wa^++)fOx5w>3&IjCdM-&Cz1Kz6e zrPAqJkR#_an%(;23ZnVlcJq^g+`k@Jf(T1IasyBg{x}fLi%3?k*wb0sZUydANmk%S z7zi!ki$y7lqoGJjP|zU7b41A$diX60>ZOaoEcgp=b?78u60iuE3gjh~qF}L9q##Pn z#uKpHN6NHw1HH5c$Wwe?;Zd|6c{7kdYk!ABmx};HfO)_~AP;y3umF69hhGKE2fxO{ z7bvKgihw*}CBRj{G6&i}51`Cru*Jps5=kRCl?bzd21BWIQ9-@b44ej!vBas%1g-+| z1YHL5028QFDY<;$cJS4}GGLO(!$AoE%fU|u3af%8Nyin%-KA+Nw}FD-Pb$1#s`1F( zSS$soVW%fjI!6SkARa{l=TR37UR+)*sk}LsNHq%TrC5zqDcLlj(rSRoNQh1k2QT_E zU1FI3PVZBejTssQpwdC|iM_;I^0 zBm>8tR66eFby7x0w;-3JVVe}>4@8ae7Lkzzkq|H}^A_g4{XX2s{Y6wYyVy8Mq}F2>=%Mcj_v7U~D?T9dSUMJ0q8YyLBj{ zs)1ZkA{~r(7j^j{H@|(b+i=T6?q?<>aK2c|0P>>E1M+8C1S~-WK0~Iq>_i7I*F$cxCNM%=nkL+$OGOu3`Gq*2y6yk2C72PKMZ&3 z0)R2VC}27;0hk9&0d4_K1|A3Ugk1*C03V*@)D;3#fI2-KS#TT#764BI4+1X&F9U0U zsu50|6&MTDU|^CCkml6I z^h6FPA{<~@I!Y)UmGmjp6=2j9$brY7=Kl0jlMW7ofHlvc$RhB%d=`pgwR94g4Svf^ zH-8z(?J}PSzo)%amVp4F518$)Gs!Qw^(TROkgv*yo!(nA04u>~FGk5kqJ)+>b*aG2 z*LXNSk}l|f8thD0=c5_Q>QK;0j}BVmK%VEJt0z45h@Mj)t|fNKHGqJRLMZD zPuh;w1AY9LZv8Z%p@c|Ldae(W3_G2=BIt{X!Rysh1xFon7Qc%d1WNi6yfk1?xZ7=T zkR#-=dw`IK7~JwCj*yq^#mfZpE&JT^a*jxdz6`C1%lCWa9E-iB8jgFyq$VROA@tP; zdHY97RELmay#Ed5Xm(JPAAunf7WJ)D*93mrQ67*e<#OERFU_dn=p&s3l0D$R2frs+ zivNM5my~}3hz>37Kfs+T={yjhR!P|>xjqQPad&)WKlApF2)3Vr0ulQE;?7Z0C3r+Q zjUysVKFiTZDgp8c6VG#ABb5Moi5V_%d$m*vb`5`I?L9FM9Do zsas$2J8E+x1cpnV0Du|bqb|FfRpOsc-7@gfb#z3)(hlfg@^l-c5H$ zQwikl+UJ&2mj%1bJE+XS8L~V4WxyivxmGv7Q3uCC2=ZIpf)ZdQ_#_949+==nj!_ab zfSTSIIJn&WGGI9PT*0O2w*YxF3nxIl4a+$0iIP@{9AhPw#-$5_{Xsw2@AQ#`jxOCQ z@VY2}x5s51;ZfBIxVycS+?jifk&**lx-~G=hk)02kg9;q;4g=QM;DwN#<5sh1Jp$0 zw^V@vz=EDGT>@}bIP~Z-lOwp@7m^;B3i-5N;CE7;6dwf#Ql8%1rJDxDvS@B-kS6zW z%j08QxVRie-Rj*}(0<9H1VU3*_M}^T;KSe3eI@ugKB<4T?Z7 zl`B{*mBqOOItb(el>V>kqd*}avueY zq#z)-Px8o96~s6Ks1y-*@MoB(pg}=CfGFfVJnDfw$EOuN#`y{sOU)j+-NOex>@devd}7OmO?JQ4k9c6S-Enz(3us_fb$U#dE~Cpz=vYu9Ge+ z4h*T>0!cN=?J@i*j(RBrn1Le8<2(Ys3{?8`$!>j;g4?7D1r5@1kG$H$*Le754{!DG zAyc@2ok0p$9GF-rh&h^v&++iN9)2UR8kMpHXaybz^2&J`=nrfL@*D?ELmgQ~r9_|# z@(Lg?;nP5Fm-CEE7schk6dfD^)6v5Lx6eR;c(#{;A;8S%U;r!!P6jpuGl99Y+z}K4 zc?lVSyhKuGyL9n=Q8$2GzEQzqNqE7nj{LG29|hB z%ieJ-)+qReq*=rHZBq8TTu&rvEjp}6F;rUz9tk`7o;$+W^(a!*p*$eZ5XVCB$36Uc z1@+R5_n}7#90&48p*vr|J(NhRHn@Aj%#Az(L0a>Xn=jhr?qX*Yx&w^bjIJ61&j9is zG4*rqzeq~sh!QFU@=Bbecgu4*LS6yn9aqvWcY+g3xV}UuCG2+Ta-k6Rpz8(N4R|>` z`luAL56uO&x#?>pfa8Aj;lRR!+@nF#D~L*Wi1Wo#KCt*vQ97;gdddGAm+m6$(|{J> z8Xzz75}*})4bZ0_-v3dD-HK$6SnXQI5k*wskrx7met0K%`13#&_>1LkI}0!zeBKds z-M}&+kEjBe0^aW7HQ%~)Y2Y)DLXR!qm* z8l()M62JyH_AJ^brTy&okP0k$^kHe6!lQ>%uvn_|=zf%f7gP|JMc;kTv z!%k_kho1v1@!cm~0zq#e- zf#HbwS6~#d3K#>t0*nP-2J-OqfAI)0^SS0OiOTD4`Izg0?=ItiPD z2?0`%zh_v)I`{xZ=S@FJlsFY8L}N^CW)y<9fi}P zYP+BCs~82hQ&g4s32Ri*aPL#8%KU_bst~xVReq=a1W8Sg`w6Sns&YReU#)_BgIWc7 zp*jgRm({BCenOL4brF_cDUh7>QdRj0XT1F3)?M>b)%XbwUMesvy>E(AN5R@&)dbrP zQE-=b;EF9i0dSZ3sH}cMxlbhA)jnKq@lmbmC~WlQ?(M#+!j3|Tuc`o+zO&&j^yBia zekg+-9q|um9(iVWddon&=ssMpkn_$pKkl(FJUf}&yfkFuIO>Vyj zx6}$_ND_PfJuw|$Q=WQHoEUM{U#-&<|^B;UVOSMyeX9pH7Q6n6m?h->Z_P@z1R(B699qq zNEM5F|33R(6`OgVW%=)mzFn*CWg69SurM5fjHqIzFdN2IdNnU({~*;QVW?_0>O2mO zf!f{m#rIr|BE@_$I;5aSa5*?Lkq+{gZ{doSbtRT4jI-Ucm#eL zAB@_Tmf{O7-i`#}xxd)@0`cJiZM@yhV<+y-oi3jM)hIlRG-0G4wpOmNn+0Nja)pI` zfb%m~*z6A!Zv6*1DtX0t-~;g|LN2qFABy9MxXn6k!Z!S$mzW<{USiQ7iK7)6nd??PdFlVv zcK%UWRp}nz=LZH}Y1GjIe}xJPg#{*smWDIheQjt4ODAozD|d7au8WiQ6Xt5K+~f|- z(g|+Th62;l8Bi(d>WFK^M4`c(8dTn7ZkkpWlsa;kHrBQAexCR218=Mx`=`CumuElE z{_bc0I%l7K_Ib}izr2PqndnJtq-TyY=B{=xxxHOK3GJH3_MQ&&TVC6)r#wrSw(q$A zS$=?$$^*gfxU~zdRuR*bZ$%I$?De4SBDNLnMKFD(?Z9a)VY(VuhuJ}Gx{IK zyLDXeQ2#S%4*YHq*=8gVHbN=dtsYUN7+-2K0G8xTdjHune4+x*0t(MFF0dkTczAk zmHQ^UTlj?GpXEZOmbU6&y@2ypz4is?T7CKj=T`fxH}x5$^`;)Pj)U?|{hM{pEp~QD zigmA859u@O_*L#9{m<*2+YoElqaD-(Uv$Q5>m`Py*b~_yVNX1$U-gsh&I5YVi_RFk z@qoTws0Z{tFFF5;IP?;p-_T!*_J)3ZgLA`Rp2+u}H`3nFf7n2_H}o+Wybj)XBieuI z@t(MUqw|cmeors<|D6*pv1_gEo~ZIfp(hrHggtw|e)f0Hb;I_DO@w_0C0fZnvqY?y z!SXV6w&*h(>Eh;)ym3gG{7k{SO7Vt^rxb|rl)L0drhz1ind!{UB?k~G$e=m>PF9e zP4VuYqNJX;P^ZUs>&NS;({BA@9cTJ(eXNcHB|0RpwHoy2b@XI|9`UMkht;s-!B?HN zmY%fDNzxbp)0wj4=i8j2eRp*2c6K{Ew(fO)7PsSjA3CMOgJ<7$)H!egTm;oX9dVQk zB0)dU9}EI9py-sNHh?|gIEXy$sALcT!$^+@$zTG=0GVJGSc%_Npd73NQqGolouJxA zWEW@xt>6gw2(0)NB4`5dfpft9j7orH5CBU+3D^eaQ^*3419HI<@F>UwM@a7g7eFMH z7GE*Q#8dMfl};o8=71cK2Xbl6GO!9%f-PVdH~=Dfg-pVNQLb787@F?De-cqX)(0$g zIH0FE?sXAFKM6e3b#BCnsl4O16g-g$ca;yUA74i2FgDEQOpz0R>?NXFKy?0EzLkG z-$J_ZP9Z-+`k{5KtJ1igJ^}cL5uRDve*{tihN|!c?8#)9iEVK&dnEStg^W1x9Z7*% z?=el0Ch-{J)x;&_pf82Hx)*-|9QK>N3@(Zv&j@q0%EZNyIEq+nq930E|`ymcq9gYu%^@z0g2wm;BR=6>V@Se8R zc_8V>@e`hY7C(bYOMRLH#qUBHyNeJ-W*+qpz#JS^tg+N~u&~Th6Tx}S@lehg0!Rvau?2GDY%%z%D{Ti0NTM( z(vBkcBc>_~TeS_a zRW?|TE@2nExp20Foqvb73f?$4C&A*jp0jEN_Q6ejYy*VZgK7>5N1M4g@D;X3953g4 z#9h(0DvYpIG&qkgAroF1oHS7PcX)%~MZxI;!xwpZC4VILk$++s!|aJ;g05@FP{v^yILpBwup(1H(ZFREBvj?!}V=u;jl21Vw zFl|e?9lM1+iUMjz+A1HMkGIw7vE=37cr1O|R#Sg#tKu6ec(tvXQ*AYuxF1rI8UI)u zB;g?YV`i+oZPk#8lN?(${sJ=k3G{*=@j+?2-Tj!QC8vwl>qpPgPM!2)OJ(@kRU#SC7n2w3BrVFIEsCZj9?=fmWwkSZNxz#SO_fA z#^Gdcn4?_$l&AIh*~-vVz-tCOrC`9vI8-dKKqo$9gB%VpU zNNzABjB`~)6HdTsdZrn45g$npH4v`?W#BQ;dny)R9UZLpeP6gsrlGY>K@L8gRDnex zA4~_mr&cL{7cH8&haLc_APLmal2VWl{7^zgJ8AV`(oZ1U!3@$*(sRu~f>dZ1jq3=8 zbyz#NRni61xJ+d)Ams8lpV zu^-t^>jx`uh@~>JdRqEE<-O1N%MxobXaEwVYu@8tMi!#Z-U_^|0U=-j7jkvCK{sXLX0=WVMr-B!|-AZPjul8 zGQ9qVmt%PS3{Q07MH-%KcqKtYREAh$h!<(KwB!O(3a&T2bLbL87l&sJ@08&kH@ptR z6J2;88QyWji%j(z9DL6Z#UR8ZhWL&lrWj(Y;fXH11BTaPcykP|$?!xM-X6o-Wq2zL zuioPYl^BG$%@DU5VznV|@rX)v;Z+;n2E%JLymf{ry6`FuuiWr17~UGg6FqP<^M8pU zt}?{9@m|*y8KUUoaHZj`FuZ`_Ei*jPg_mb|j~d<*!&_o_q6;rqcryPlFvN00oNtJt z3-JLV!kcAydkinj@I)70rr`w)ufy=B8J_6E%P_p#k)a!<{urfzbVC$fh!YGk1t|w% zy5S`op6J3$H2NIk3qRnR0kVOFM5#Cjx17#?D1ygVXVmr&IR8tD$Sqj-&F8XS8S2SU z1E&$le6bOE7)X!;63>49mMn(HDW^YXTJPk4QTU}|+mAjRbngR9VEh{}3;?o}%EFNZ zX{|VM&hd{fC?F5J+*C-s(!^!`w}-gjuK7|xhpoN>d{OR_Kx_@@T|oSw3iBT?{(}@C z1rFjm5b+6DGf;4nIU1CL8c++0X-yq67Dqdg3F!NgjbJ(OLnMBt|CJ>?sQZG3{U7l! zZIy=KMj(FLzw-Q~;w$JoD!af%<8)7#o~5QzDQRU)m)9$PO9R+v(__WJZ>iX3pf5K) zInCq=?@95MYwWUCSa^x?FSvB&tDSURrO7B&^q1!IapJeVgLoRgW`Z)Vl6=HP4Imy1 zhJ%qH6-W?&D?whtYzI5B zg|D#0Zy?NXu)8Zw!Qxn!Tr+UG5H#SR5%BMs)pC#xri0B5`SnLGSy^J0q__&d@tRO^g{~itI?Z50T?-p-U>^< zK>GBbVgp_G(}U!nJ+CLfJCT`jwxd!>?<74q8Rc$6kfSz-8cHQ3zJj5YNf2Wf+8BF~rPC52! zzi|_pNA_*-J3;S?78^f3o6!&T>_%HS^>?GCcH2x%W7%lV2BkoPbmrE{-q;pV_iM#? z8=v(?3@}K)ns2faZ{f!n-$%+t=*vr&9{Q248{%FYEV@^zzL>t?6DZR9m7U%t=LvKv zWQCEdj9h1At&uy7Y&7zak^hb4$-g>=GuXSpCc!1{hnTSVgs}Lmuy{Qi(&gxRqupof&Lmuwh`uI6;v<7gu*)8) zY`prr#i2)n6dIr|hNr8-o7MqQ8-t z14p(z*;?fa15t7DJ}wS`?EEF7SAz>+1r=NeD#0pH4K{!+pakTBm0%fo6chp3X)a~s zz~9b}Wa`V|3e+OENyO`kpCx{{0%F2$OOcl$)Eo(%nYCqgonA0c&C7GE4sr{S3>Yggzq>#c*Poiw-sRg zzuN+?;6L~+#^}4O;HWD*muHI4>^XCLR0hx8pR&M?U&gru?dvn{@upij>SRLd5179~ zQ?OiGWgZoLQKmPIaz{kTJSyO8o1@(8`pPUUXi3&zl005!X+aUbB>PoB+{)~H3y@;^ z0Kdk^`{=tyyVs@O$|TZ z3r!2n3i1+`CMFe@ei};)3v(<@TJVfh>7-m%udv{Di>gQbqr zdZ_ZvuVY7q2{w(_$3#9U0{FYe=RW8KLQL>c52?or$OW>s#I@+RiWez&lfL7o=7yikGZ@I8unWN77#soOr@LvFY{^(-4 zkU;yi$c29c2O^)Q7v(p*#P9cXG*16g{UzW?ADM!BiLC44xV-EBQ1+Mc@Ts8d&15zzf0mfN9A8xQmTC=?)yv3ke}!ck@*6+lUY5 z23CO8g?7Pa@Cl**Q5XIPd_kz+xq~Emk8vEJeT-P6`Jw~-A-F#h)HOD{@NMuo#N#lL zX$$*$tE)pSNwF^cqzi8o*hm!)2oB<3UAULe-5tb$Umoim;)lWh!eROXcn{)cRHGq( z+ok>&V9RCYlx9@UX+Og8@`KKE+F#%uV47sqKxbdXSIbf+n6`KX_$cD)2t5HVSs_a) z9Nz$55+h@xI_ht8;eFt>h@ZvzN9o`vIMjtk;HnFIb;Mc!B}ap_0z<$(z&KMYD>NHC zYCcAUcgd6B0!%@ggmjdw2lv8BSoN|2>+PACH(1?Mp*U`?h@lBGYH zmw9uuxB^5HnoS&T{yHG?|(|8gmEqj2`>Da3zxa@6&J2|;b7c#sS8c7 z1>GIqR5n%Ls?M&WS^slTy2i$w5{Odf^`GGGjm6fM@I;@6*uYu|E zOgxS9uWI?psiTwz?z+tR;Jpr9_>VJg0uL49pM%XtA>ju&rXqoclRCKKQbFpACmErE zd%&ea{h{EsLjB1u`Afi?g!)-vqea+)JUBiP8u-Yi!q?#ALi{(dxW!iRIiUm35J}1v z+V2T&6yn1}aQ!b765^5IyWBYfDJ~Tme zlg{%#Tyhat&+YxeQ=f8vKrs<~5S+;)^f-7^hV!QNb+8>9j0Y@SOFBx%LO2?QgyZ0N zA>kZ2THqRRroe4re>};gaEJZ+OHv+2MD1WKc!dyO1eTojjnZm3F7MDPw?zJux0DYy zI}@Z&z-JMs8wQFW2m1)|bKuR0(@{h5TCjenR=H9V)BSyfklz(tgnYVJ^_Ps^(qK3u zg$m=rWk{g295s*(ZWdNxDcA@3xI0(kFM;F1bhV@Wt>7e~!~I}!m;C~6-(~dt|1TWM z!yp=s6Ay-r?j4DTfz^e!@&WLmXJp9&o8k+=U2$Kp?(?c$yUT}m~t6R`f`WNhvCmr=f)Nz2b0_BH+`ys9#h7-Z#z}OCDg&qZ` z3%n7mL;H?h*im{9e9qCnQK?V@$0j)9xPfx8@5?ggr=!91V6j6RI1ml0lgxi09sbv2RCti9k}s%isSgFEh>Ox8}=dHm(xD{99#-^bl@$01CBw5Iwjsw z`Wbu~aW~HY2b?4DZLr%1&UnXgNvaa!Az&*pU4N*V^f zxdQJ5+XX%hwg_wnXM&Z_A87@u;W!{9xDAq|Y=L`&mkK-@yi(xV;7Wm)ftv)*0hk)*oxsI!7Q zks&0!0xl4ED>y-TT>liDo+T@DgyzsG@G608!0W*3QQ|WM*9L(HgAW_wpcSA765u#0 z@MGZPU^=l-JO_LZ9K!q|_?8ea2m7vd#{U5i1*`4L5%`1ztRB{V!NvqQe7M0FIA#kC zq=Hw2)h&1qT))oA8^MVKdE++4R-xfM3aj9Pp-Xp}TBXIm36&xLg;!FruPb9s- zW^{mhN(Y0$w}ku{m;6~^-xr)4^bEKM7^e$m1V02%0PC558H(d?2^?|kXhp(Qqw^z` zVZ$)w_=p8}VoC!~fKOrsRQ>=Qw99#(*bgqo3R4F(A}7G1dz|rKzFATsr@_0CPb;LX z09g3*lu_CR#~^g5?(@^&QTS+8owb+2tH5dlx4<*I zF0CVfJ=pzgj3~!{1`pk<+{8Mr|21%Uy^g0C+{AEEzkZ0s0^@366!0n)YkKv*2X{7l7aR(D~qTlp9d%{|1(E7-LE( zbEFmQE*#c9qtPK)z1FM%ul-0iwmZIu<250n*BD$(1bzm*L*Vbhp9tJ@EGDhMPl3M` z_yqWjz=0294t#`jy}Cxr;J79vd;`8IaQ7J8$M2D)hj_$Bf_WAzTRa^sZt+rZBWAgk z^K-!~K9MDSg0GDDF7PH}vGdvOYdEHU;rs)_AK+VvZ*zAHsmC}}5c2il*XlIw7q2nk z(*n;0pL{^u{((gXctn_1%HhLy1K8+a?`&WX9J2-f4!m}>vw zMdFUnHOimisDV*ncY&V*pWp9{?*@+%_z&38Pu!K;M!ja6{?3LV@4rwa)k3^+9l@xI{1 z2Inps3(gdH4tV>g8tFbB(KX-+m@qiHm0hqKyujJMQThrFccFuy!Fn_pfeJKfYQW}t ztrWwonTRJD#KW2UgO^#IyJ#ZV3!I8L?V=Un)k1tDcq&e80ZJU#|ATM@!=c_Jo&~=h z?3^T{;*rSA-YPm<3)cun8QvS1b7{ac`*zEP=Z-p8!`0`G0~#KX$~8 zbn&Tz~>xs$MwG) z4lg003Vc#%paJYI#I=+0q$I=x!LksK0G9~y3E&p6x`GS9yOlV`pVl}7j$1;)E8y8+ z58k5pz*7Z21fC%9Y48|EH*F?d>C=+?z1o{Iy$aqbX4>N-xOA06vc)7hrwQZoGb7Oc$v__Hn6`C{}G%n#4pXl z@z(JYaf;g+xhU6XK_A>NsXd^lLlp8=kOxO%RC73}-1bB=5UuRt8Mk=5gk#jl&Jmae?pp1fWY2(?Ag+$UR+sz};MIt$ld={(L8$NjFg_6xF4qy@ zx1H@7rDQn72C~6>kkF0Sct5xVYn;V=0(=~Cb(dMdzSo>9a1&hb>_Fm?z~kB*&`D)3`4_;m5!Z8jo^x>OE_V)jAb1tx z$}XVK|Hs0yR;Z8$b{F>1YVdZo0`lJn?*^;)2fu?yp@VYn@EZ6u;_3+Yo{JAK!0HB# z0{egB7y;$;|0I`$r@;M?(1#n`0v;-C!5(k|;vG5u6L^l0e+wKY@fh$RoH~0mCxS;Ea!#^r@HxcQUGg?~h7kW2oG$QfaQ%0<{;L)I zQZVE~!UXUop}~3JEkb-F__z@N5L_a}e+8cu*n1(`6F3HZ>kzL0>S6K>90!F4*Mt4P zaK^s^hk-F`l}UL8yh6zT4?IW64_<^hAjF4&R|xSr;I&2};W4TpbdU!=4E~2ZJO-YM z{2*pCSY7DI`3-!f)Oq6ZS&T`I8yay!70KDct3{Ec7=F9u%A%>L2wn?@6Pq-8sWH%yI!?}Rp1mMArD+Ctl-DsBZ&9n z22O!1h5Geioe=N%IR4Bg)E@%gCd7@2a4fyKP_ zVDVJjDNQ}qI*ytlVBySal;*-Ao?4#=i>KCYVDZ#?0<4@mF#>c8RRb2!jQ;6&pZTJQ zaYGWw`E$T|_z+63j37S$d*#RYMqzM67Y6`tH8bjdp?0Pp}@nyW%y9b z(LqOPI(S@-v%NLoWh&G4e>WUcgcT?S7q_n={@4u80;?-{8SE#-I!D~79JgM}aGx*iqXFPvUplW|lfmo2p}YmpgD;dhZ?kuTFA01ad_~}U zmgA#cfu97|D~#ixwzvR}Mj_#U;G5t8*%AK(tS)q_{o93WUHD%YzT?8$r?@rrj}^cR zC8~otz=earUiiR3qr`R60I)Auy?BiR_rM(y?Ni#ISuXYGx$t6U>R(xbr7j7pT=)eS ze$|EZTzHEMf8fIV9IW)OtiVB+gs)xrdl&x6g?|MP{oXkOjo=Xi`()sT1nkEn)EB&v zp8r)xG#o30gjwKq0xtz`0{d_SS>WvgzYg9bZ~^$Bz@LDR3tR?1Z4?|o!Es*TKfzbP ze%#@I;F|*bt-$rX!Wj<*cNI7m+z+g-@J#Sfffs>|W8m=M4xWZ%0$817FM$)l>ZHmC zn{h3m6`~I!w}EvB9p8(j&k=Wnt%%c!hT{9c79sxt*bVvA9_1fdf$P5nhn5{DkYE=o zoFYEp?BEyW32kuWxQjE}n4>&@o z5CFa`bPxo#2p#kV#|!!4;7XzW5#ThT{b(Z`$wGxV@L8dQDPXhE!7OlwkUtN6O2}Uf z&J#LF2WJcU8Q=<`J>zq5l*2*$oc76DaDh>%r{D(!Er$7;0v%t=-?>W?5rS_gNua@egy9mIyeKa7V^)7i-h(sfpv}Q9K!Yg zDjas9LIZf0(7{b`q0qq{upb&wC!O{g+)@c0c!ML_JLo9+gY`mwAhDaJJCF z5^#pl!BUC~9Xtch5;|B7&K2_4fis2nUjr98+IM{a?@c%ggbMF~R|*|$2WJQ!d;l&M z@;?SI6*|}tHaj{{PDF>nWkP-#I8A9E$3M;b@8L)lIyeok6e^qprwAQf0NaHQ{svbI z`8DAAN(YYi8^Os!`!=w219OP3f3yqQ;7AfW@LY*Wg9PI?Rx3Y;GRP82%m37#T! z5DX3#^25OKLi-tW8?gnOOuD94h1+z)i?kcfnM!6|7!sX01a1F+zoTNT@@C+QDLQq7Z)q zT#dNe;0o|%u-f2rV0GyX!w8=73m(0YKzGGEz*cuR37^p7xuc7;cNLDm0>N zXr&%#fId>$3yv1}dvGour`1VT1r9~rANh3ZZUn!94)DQ;vI0S?@i84fu2)xRC|Laa zfB`(GJ&yC=JUGP9_cOrDkT8H7+zQ?Tp2GYM_zHL?^EL2FtWZZVZNMFHj=;Wau#50? ztd7`d@EDcp`9B?wEvf_jHh8!G*NEx*Pb)w#A}_q| zT*F7fYXyD-yhY%{;DZ8R1)mYPYc{r6;BnvzOv-M`hB)v*c=w^C=qo8VnS zg+1USV8@BbTdDwC1ilI`7uaK+gd2Znen0Txj*e41ZSWNE(T@E7KRKR(Jp@Cjacn^jH6YY41aFVTnUdpQgT?p#eg}*1hPmb73Mn?&2M+ONu_<7&!6(4t z`+u*1%j}L3qnp?*;6j1-fyEaPzX9LG3yE>qINAk&=ivCWa0UAOz7+}L>v)4-#!-OR z@xr-69C!~{ZD0vly5)TPEgLMpzE=$1f*%!9cj@ooUSply`xP8Er{Pc=jD7{@@CTif zXf9ZcXM+17uI9f3P8aeIxWs=3pB%51Ja_}#U&Uc6aFh{_K?Y~SBj6DN=YT`;(^K8i z08Og*!Fp^leWpVr_9Zw*h@S(83vnwr86&JmKJ6lHE^f(waDJb_*bRE`JCjEF zJ-Rq^;iF5Ir#`xP>5_%ZS7qdHnjJ>DibVzd))K0=grK&I`?DGg|j9k&KmmY z{$umH%K29obn+SX^peF-EnmK5@yZF$=F7A1&A&dsTYkfAUH;AmVfptb`Q@Kj@LK-z zM;^|<`DoAmUqAA@SN?a4?#X{>L9hJz?G-LXG2~P$F{OghwlN@$wZ;0n;J*G9`Nm8 zKgI5FTfNvf1|Q!_Z?cmTXjzBgy(oB7T3J4Xy_+lGSwixMjUz-#fZ{Dk2^TG8!C%Rw zKTyu0#G>7wpeIqrA@5b_VQ4FKC}JPOz66^_UFrsS66FLOM^V}T0eu^I5G%U7^_pk5;4gYoBkDFVg}IB4m~4U_!~ z?4c<4acn8;c?x1Vjo38k2Goy3%mciDbKZb27WPIcEn5)#PgsfN@XO#y^!0@TB#c4w zZRmqY#KViSJcfUN1=I2~v^Pqr10@UW8=Myo8~2}*3Hlg!_$PQZY`W#fI|#~x8(w93 zk#h*1#pV01e!<{7Xrpq+T+ zCBdd6?HKql%0p=5QRFH6e*;$-h(uhR+Ls-L@(BDw< z5T^yFdg)t^IXsvX;2@5Z??rCgq9#E76rZDi#eEZwzNmPBw}_lQxFXqj442NJbVGa{ zG#nk|Pyowbu=?YH&%vMRa4Y|=0rx{Wgz^m9Uxr*-s!%4-{$GT$KyhKlvufd!IFVh_ zzvvjZU&_)~b+V2??of2_0rW@Y9fbXkP=6uv9s~c0*u!Y!EpQ;z_$Crhb0S@%P2k^< z6oaBJ!(oR29!Ct{ijoRB)*bac*>;1jLW2SDE$8-zqs}VS>4aiK>@$=-C$vjFydlo;gQqVxY$7)zA3L8q*6Nn;Tk2{l7M z6IN^#SY4(eKM^oqs22=7O5jJ(=_b_4K;9FA|0I0IhtcqRFs7h9!@-TP|3slL`p|;g zIq46FDTN{D2>k1zi%~AZkDvIGx^OPtyDxzM1r%ClL0{z<-anI)(bhdEA&$6F>J29? zzdJ;l3|@^A0e%-rEwG5dh@3!p6Y zTb^H{3`3zMklIC2mk;14d=xr{oyO5HoHhf8s>Gk=7}9!EpoDC%N{F`Sv+eAoegAEgkvwB)mHgWVH(A4?A^{`PEFl$l7T z&r))z0(c9`Zj@`(I67;CEiO}#mk(b6oN3T6kW-H0&VAINtqxo#o9=9Bd6U=rRZb$` ze@I-9!~uv^qgcVGpo^jVP?jS1D=01XtZ%Yrq27JS-AN1^AJHkxGT77E_8_JHi_p+2 zB%0vRf%Qnb13n1*N%)SSJdK>GCPuiADJmzR#e~qK)&yN+hAfzrlE? ztbK_P?32p)BlHbBXQGip*sr6~Y}mBCh?0#C777iw!NwQYrH46(@;+y~AM9ps&mFoO zY(@Q!i2n!u6r~8|b?`pA0|`W_gyUzFawMOEeuvT@{$IiBvK9P1{ItB3f2Q%N{EEhv z`6)Ma@(|F-{Nn$DEj8bjR&A?x9M|9|&`0&%dPY3wUcz`w)g2lFr0c9Ff6 ze@DP$%&+=4Kz;_+!2GP60lxPtJvjb(lAyX}_4a7P0(P+HjkBx((m zqv-nLwS;~5<;%@ojFUk0ryX@Uts10gfffy`gK)6GmZFl)74aK;zLhgIqWT4>d%)WP^wQN(kJKJZl>fQZ^36Ua1qw*VXcj2eoknrnmzMJu?C7ijx2eSM7Y z3#~4u6fDb8lHvD6?ak0^=w&5>n`_o-@S9+Fg#H8dMe%`+zmH4LL22m+t%gRSY=r$0 z^c|GB9G_3kEn^r3{Ru&F`4aF1Z$cgCy+DIu9M3d}qrJfA*k?ek1MH{PJ{RnN!DZmV zoJ(<9-UfdQy`d0J<T(NAOMm!c9i}uIb@#LX5Vups9L_l;zjBQ1neA=z9pVdc zF5yaZpii;=6Dl>szKM7w`>26Oxq-Ea`=hL3-U53X?7xuv0Bl-%wRh%Vx_GQ)-*P%@ z?nB~-oa_zWhSCQK7ooJIm=>Pbb}^0y&OzF2g!aI$;3|}|26ipVS@_)%-wt~(SJy$O zBPW&nqc$pisg0=9|@+~Xb z^{@+&^8j*bxq@;BWh8v>p*+g|AZ~|pUPql+_J?y@!w{cKL7FK$*tu45IR9CWq-Pnk zpvTe33FP*JpW5$&f8OKxZf;{Be8I4fvA+#=3?*Z^%`5Q|cr*AR=m#`Y9^(WrPKbb( zz`qQImICUOJ4i=vD|`cy6Aaq||1GeA>ry@~gHh~?<@o0<qychxUqL&qL`9Ru>)D_g0_f zTDf8q2X;Zr*!~>aiS20U1mu=5FGQnL!4C_KQzw6Ooa`=G2{-0qu!c9XH*_UEVb4eK zB{a~P0|$^43VQ&`8;IoyjZuTN^yFM`XfF6DR^mh62#WuK_U5AAdS0={|3@1~koO9m zd1;x9glOf`Ne|c~Kw*e{h{ze(GMYZXO|0ausa7gVE;s8YZa@7^)hQUYaOeVwTacv+RRFy zK`Oue??wjJRLAPW>c<+u8ps;Ns%H&h4P^~yjbM#rjbe>vje#1e<2ZK2vrb`6WKCjC zW}VNP!kWsO#=4X>gLNfqCTkXJ_Fs7OhE^bl9l5L4?3YZ2={)?(HJtfj0+Sj$+;Su0pi zv6@-WvQ|3OC{?k;!dlH*$J)#)U3LtmA8P<>2x};76l*jq{cj$WNzNM2Iz>@BDYGMm zHG_2}YYuBJ>ju_5*3GO3SW8*ye zg^&Moc2uyQVl}f?v07L!vsSZOS({kxtZw+@1?>VIs}HLmYv4b8{0Ff^&l=7e!5YaL z#Tv~T!#agEku`}mnRPyE3TqncQu^h6TEh(1EY@t+9M)Xc4Xk;rn^_B3cd-_+?qe-x zJ;GYXYAk1?g7qwGC2JL{g|&{=%G$(gXQk^lZIBzQj+K5ao&0{R0S?74FR??<8p0aN zO23*;6(d=rSn22B$sfZS$4WmNPyQ*aiLCTv=;Tjkov$d4zf^Xlu`XrJV5Q%gr;1su z*{mB_^H?{t7O?JOEn?lrTFiQcl#c&0c9gSLu$o!VvR1NQX02weW3{r{S({nu51zCE zKCFJM0Z`@mrynt=gdkQuYdC8JYb0wFEBzKZ)r(`LpA06R!kWaI%sQVng*COBkN-4w zEM?7LUCElsn#G#Un!}pQx`CB`+?ZBmGixDh5o&P4Pgys4QGvHjbe>vjbV*rjc1+0n#h{OI-k{; z!bU1<8tYQl4AzybnXFl?Ijp&?8(8yLx3Lzo?qV%+D8Bi_j#AbmtYxg_tQD-MSk0_w zS*utrte07tWApI__MR4nbi#suC$MItUj!MtU;`L))3ZE)(F-})+p9!))>|) zq;&izv12|f{mLS(KpHFk$|7+F>q^#4)-2X+)*RM6)&kZ-)*{w@Q04e9X2${6Qr2?T zQ>>sYO>_}r>%9_Etk~Nbxi#3~d18W}ZX4V4MZLEc?yI6~iZ0ut#W<9`q zgtd&doV9}W6zf^mO4ce?3+rXpI#w&Iv55^kYcngoBSQPijaA3$!|KNxz#7OJ#Hwcv zXN_QuWQ}sDQHo|q3~L-~JnIzJMAjtMWY+ntDXgiiX{<|GGgw!$W-5x~FN+=7tU0W? ztQ%PKSU0m4ux?{5WZlJD#JZ2QnDqeb5mM#)&yI4|3f5DsX4Xp9Dpm{YW!7reI@Tsu zJ8LtmRL{E>svQ41cKERRu?DaPvIep0S?NcOXpV%lMzBV+#<0e*#!kWaI%sQVng*BBmjdiI*jZy|XvRJcOb69g(H?ZchZe}fD zEo9xrTEu#QwUqS;Ynh@r{>s@=!Fr0-%zBo!lJzocHESKKm9>f0&f3gMFGMS6R8}1+ z9sdFB2xJXn)w71MhO&mUMzBV*MzKb-#<0>4XHmyfSQA<4H_MdcKbal#SyNb3S<_hQ z7rLmS4AzybS*+QtIjp&?8(8yLx3Lyp=i`4DJBnEMu@ps>4 ztfj0+Sj$+;Sx>RjkEl>TXC2x{s$z$Q^)hQUYn|zun|!ay&s`2R#kk9XrWCUB$SNkw z0_z|gQpc{_P={GHCB|=!~H!6t3O$nazz3Fj`^wSjN zp2C{Qn#4Mvm3~oz@={rsvSzTZWThXHpu8;B9Md{axx1;*Qw}xmV_z}r0oEg|^cxUV zx15!J(}DOD>seO%=?3ywv0i4aX02njvNk!iv((HE`fUbkz|C~YQyyXp)L{gpbh6$n zjssInGjv$%3<~5SU@C=W+|1De)@`hXth-o?Sc_Q?u$HoxvsSR4Vl}g#WvyhjIMmeL zOZGQ5vD41l%&Nm*`)HedSp8UoSoN$Stf8#otWm5ntZ}UItWz91OiE-&5^FN+eAYD9 zrK}mIEnf1y#$3h?tOcyQSc_Qqu@|FE2o-DkSk}KE)i`u z-J*teacYst-&-CTW@fBpz06w8TE}WNt@f5Ddg<}LBJI{t(jtPsgJ5u6U<5}rf9jR&}YmzCr6ZQlKpcDGZV{d_JQzvKLu8O{{j-W>)$>2(679tIl-TA8Ts&m;LUE zU|%F_6l?Tt(+^$b`+_s?IO=AzZeT57-DOG$kninaVZ40DR1+ZIZwl=yXUZw2EnVf2 za+c{NNrCBBSNU=Ilxa>k3`JG5qg{(>MK^c@OlQa&f-fG?nueOLk$1i+p*w13npSt0 zjm9**j=_sCq-oLM~Zh+r?lceyxU@&qR5eoAtc4Cg~_B(VF*bx@Fp24-t$T& zeFh(ql5WOPL;5zJOi16sNuJb%ucVL`;Es!QizH=}zKf%ZbSsW3(rx&fmywL^IJ`*T z!{J5xK3<3-EyQ6)ig%C;Nk7JWOr)5-MWmRd`$#bn-{Ex{VwUN%7^wX3~Q= zKUxM|akIRCrK9Cdi_ZG>70WO5a@u!q{x#@_4S!kwJ#t00D+Svu*cF0ZCfKEdT`br| zf?X)s1?{$R!(Vyru;H&@>kn5$t5aP895T!Hyx@$Xg#J1R?}GRIv4e z9Vpm-f~^y5NwDoVoTF6B?p@vYF73^ZcE)wiQ!7hMpR1dj4A&@KB*@B%Z*cpPICfF&0 zoh;aif*tR)jeo^B;jbvcju7ln!PX0QpkVt6wob4m!M0n4U7*-T$H}K!2v`KWQn1Z} zT_M2ZH`?)wzchuQ90)mR0{!%U{?yZS+FYvyG*c41-n?V ziv+u{-NyO9pdD~65bRvR&KB%U!Ono~chF6*v6i>G8MM})?zkoB4Q`WG$9bi#iR+xE zu~xTc|A_x<$|?L%xsq3`)8QT-jwk9J{*PggdN&HAnY|krejX<6S#nE7{l9&H~ z^7ggrkW-4{CcTf_m^Up0TH9*M@il$#c%KB_!OXbTacwsFca!gfa(APA#4|oKPHVko zmyT`3mp5+WZhQ^&8uaTQ@c$md*Jb<;>ZWAH=?(W-e{S_i@SLPKsGE7T+Ak*9dhsji zSUKvvjy~6*j^9Bk*i)&|W{Yg_Nbpc<(6Bi2zej!tvqtKgD|eSBp@L4274<9pTcdx| zVsB}y(f!Z#<%4pw_Y1XpgWu7!$S5`)kCA(7mb9AwjFJ2FcC(hYQ78wY11)WB7!gC8 ztp+}gbwaDD_c%E)Xv1yFn1YPb_KZ3uV_>Uk<~aF2_dvvsI2!hBHN87den9@ubZ(qH z#;2-AQ|x!t?;-rppdK>yj+MiQl+}c$0ttn0mL!V#P^q%CQ4>qic z>ri~OIs>B-_GO#xkZE-)rHY#7`K5Gh%1Mn>hLx+Et&w`6v#}_1 zQ65EE|B$IBR*uj-QDX`kFYA-stmUPC2LsUM+?uG8=#pSq^J}Dtz+@sdKeB)8e3Ydj6^hET&e)Q+t&xf$eP)7)yj zEpp_7AZ>Wn8IO;(wXb+|tJikuV9|!#%pDRu^c^s(X_Kwjjx|UfJh7S9m!xAp_%=;B z);%RjBkjccM?v3*nqC|)FLKjbwQZ*A@p8P6)@o~YH$>nVv9*|@fbhI&{$)_dHbdd>RGxEG7HY3DtC&uXpZ_QVod-)76cHgNLuaVM@x@&IMB z*4V?Q^$va^E+S2ih)8L(J$p?Gi#{XkFWNU}x7nUBc}7>*; zZr4~}yQL{UTBli$ZCDrjHp`)R@ zK?*q#>-qa^dx$g&BN%kew9SCe(i2MCY(Cfe84A;+V6tZ0b)DL59j|?mHooK@Op}>* zAD=*spwBg_?*}O#qz%8zi?8m(8+BAVc4LM{+B!=kWnen%(mEPK5BJ9S_g2PVXKAzD zsCGBR9PSBUPsQh$a2<@L5ov9t%9q8w~MEuVt z(ar(rVCYWh0;u&MO^26@GpCKO3mkYFgVf3JLfo^H+zg`)TK!NQaVw{`*)-KlhOCWy z*c?zL59wicAJX3}8HdDJPi5=VHG8ys+iWwdTN)~!*QaaW?cR`g&*^&2nl6^dhpaZw z`y*|LWX;b$WKlE6a;9brG6$Tl*RE-^Jy89LWnO|lolcn#RL@OV9p`S)r{lC%tu-7i zDK4S5Df`7(&p-CYx>wCau91=lRBy5*Vrvs8NpI8P(`x(ldah*}Jkylz&$e*Y2iykw zS5BIwPv4t7)802De)0o`YdBD6wCG94HHS~`X&KJ>ddo1j!rE(U2ll8O)Lt{3Yu;{- zC>b#MTJi%J9b>EQ^XpwK{kiIBL#u7rb#F@uvzw)Fg1f%2G77D>kn8Ts0cky&hW$Pr z`+YCIh(_}&5Tzr^f$8|xCUh4x5?X!$xrk^{R$T<@zK#ld`Rx7wObwb;Hr5{YlulNi1ji{hchPjNb|ZUJ4`;WvFXZaqh9xX9EQWwtx@OU)|lwNHCfx}qlq4_NzpEm(i0Ek z6k>hZ-Y20CR@AYjdG#6#4R7Psc&zI8Z87+_ye$g)^?TZ?1j#wYVWtUU8RZ}q2B+e>a=>Jl%XlWuw2gbd1RXXOlS=#8h6*3*2CimA|X*T^cO^(;J)|n!v%Y!2(-H{`5 zVx`KU!#d^CdC2Y;t~;+c$a~sskKd8ErY#Iz7#J6tqAiZVW$W4u)5hs?kg;u|)QF#r zHw>B@VaPRX!mfI{e&FP_ak%~HP@63ETaq%vuseme_)1Fj@GA@58ujk9<)Mahdq8%% zJut7$W^Tivd(OZ-YP0>&7L=gX2TdApIBl2m9OJsVZrqJPNn<^5C);2xX|);Zds-;> zyVkZu%#JqOHy9u6D(vS&E!bVq-7UV8BV301u{zn>*sMp#e%WqxNAs$5On=ldcG(FU z=^jEI_zLGi)4>^X{~>90mM2?nsdZA{#fv{! z{P*I%sdT#WHH=SpOTTT4P_Qy!tI zzhz3DDUX$3G<`5rHW|xngAIKGL$U5rxc2{e44)1k>}XhqEA29j|C%^DdY4XZwOy`R zGI(vAWL=-#vr04AVD_n!1`jvOgJZ0vxZKKnG<$KTuf2dv>gj?e!Y(v6kW7O!7pTi_7S}d>IX_!M(Znj5OxT0YyNy|-LXUhX8PsZsn1f@U90F-bPx_Z);lrD~Rp`;5UT^vJN+uCyDG}4ba zZQ_aQYdTqsTQ;;rAF*?p#`>6P{cL%nrlHl8d0i7>a(hS)(R|Tn8t{ zjZfM?U22ber(}3qgkh9n>yrf&gYNfjbn_Z&h{vOdM+Edt2mBW$WBKVTL}+gUbYZV6nb($Ja8{phx~t)Ye+{EjUhbyZ;3)Lz#Cl9pUSS zEs4Da%kh*{c+m9a!*Xx^<97M8G=x8E4#tV?2^`kja4FDQ|7|9(wb^8USnkvHPn=dd z+{!p8HRiax8G26(MXa}JNU}UmPB5)VmIrpbiHwtYP~UI>|F^QOj=?H^*YtU^94a@N z{z#U4$Tv+lljVd#&)y!GCI{2aM<{MaEv>S3$89NipmIAB8i(`UxHenym$LPp+p;y) z^yD0QvAo9g(;T^9|LwQ^v9W=7)qk-SPfe(UQxWQnMI9eg&$;-MvflL4T)A)9&K9Yk zZ)1S>5Q8>PyLEf)EHhog{BMsB@;uWwO{1)b9_w-2^wV5

1L5%rUs<;dJOK6QvaBB>ebbVIiH1@+CDRi!RyFE2R8aTo%f9ClK z-KJoEn)c7bYaGS5ewg4>;AT!R#2Q*`?=-~3eH!bXH{B{}wHc$&&{g3lJ6$ABnYzrE z`xz(PvR)-T$mdx97RROa6FdGtZmqss-P%_;;?}mS@^J6B*T?$2{rUM0$|<$=7By(H zU%=(qXN&i{ZMH#ojw+X)H|)P$l}8s`U4%pLJdPne(oR2Ce9>O^a3_O%{zdzdk!#~T z-@3=R_xU)FJZ)p3N1h=tO*ed&-7RQ;Y=A*q-pBCYnZUF@dwZ_VH|SIPuDEF5Fp_Q& z0zLj;c>|EQiSyF_fAWUy-J1Ir@;=DEXpcjlQQH{$|7>tgP|wxWZM1pu5dE2p_Mq-s zJW>bs5BPL-oD{MquEl1lZ?PR|$cgp(U2hnQp+3?Ou+_Unj{NuP;_$wx(bUZYHLUm1 zwK~MIXhN@E9<##(GU z>!to9|Mq;38r#(kJ^N0j9O!TYanVQphgsG6r+ZZQK{m? zRiaQO993{z-Ck)$YdktjY8{QLGf*|C;Uz=je&5E#4vCn0v8@;F=B_jj=6Y5MoMa}Ped0Z+d7~NqKo$2uC(uR z(Bzu9r*M3<*lyJ8wvNWotyCf_mB^y2$$Hr;H+yXLGo8)u+XP!v`$w*Ch0XIpJOTRn}qD;o;4t;Kz7R!YFWp8GM$y1JqB zK&6Wo+oyG%K5^fICbL7a8pG;iaIm-7BI}9nulGajH{7=og>Y;yVjC~%4Z1BYw!PSx zvjNneIb?NQfHFR>)J3HSBmW)5jAa2)>8r6$o9i&i0?|do*&dIryJ)m$AYry$n@tmsDx@k& zDeXxS@FjC2s9;Z2;#1n=didfvJ`8rW5|3(+`@t8%@jkFam3RopjV(3_&LB?c3_Czc z@M~|tT6@v1%i0eLj9Z`9sN&>HTvM}Mxpg(!{R)(JI$7#>C+_(;_xw$U9(MWT zFVUEr`OC)ePO^EDq3LSugf8ZaT8&SP!F|gjJfHZLwb-7my8uloiNP6S5msS&ofN7& zw!lDjPns(Xe_eIo9+e(uMCh?P-^O^IW9{j1{HE4%*p%0sb3kSo=e~_6M={ z2NioDGW4}OuXb^4zj7q(taThEyD)CF{U6qrqT3GUJ!oN%Qme)0Q5#UyVlx)hx?4U( zV;?H+f3J?i^Sx~CdE2wm$35GiKTIDFx7r?V_OPf=`#2VA|Hbo2n1K$;R$EGQjDZfP z>{@&rhTO-R`yJL5xCi4@RjadXLYJE+4Kz5$`BY8g)s5(FBddtUQEA9+YwEPY|EaRF|+jf;s zYv$&@IIT(6td@H%bkezUr>BL+B&fDK6!Sl@wu|BjsP#lbi_NcAtFR9m(1Ueg+O9ij zm{wr(9m!gAJIe4N-3GmRU$I6yIY}dZiSilBZj``ijZ_q;k*Y`I!zAd>(2dY-&S93^uQ>5BnC}|wv5+EGVBLn zH^Yv=jq^RQZ@`X(eLG4cHNe)v{vCE5>?qiWqW(X+t_3ctV*j6+vphsVR76BT1VmIM zR5Ua+MB4C0WM<|?Ln8yzLNh~C_h@QnYG~@9S&^Boh=_)+8a}fwcFoYMUMy2Y;n5TY0oD^-aTm5<<#_kdbfZzPrM}?!85PJa*MNsmtFCI>K-B zFRbfK@+O^M#}>~dOUV>wnu+=7^K8J|WGtP%i!FVd%%DG8S;gBVnXF}4F#DWjv!ByR zh{saP$?n1Bce>MHyalkk>11f_!IZ zYG-ntBi!E|V4FMb}GrmMe3%%Lq-!1Kbz33$DCB%YLmU0ZZ;Xvt+YvK zzHczg=YYLh|Ed=H^&2(n)ub0w84~W%^C(}b#LB~(@38wf*6Scvt<@a>wLU_7a-qHl4{ru(3J;*Fi0XKQSh-HbMYSe7M_|z$>+-ePy zjyWb`3M@4LViZoqAdAUt?;O&5tSlrFN3ZUkF5k96(k1yS3&#&(sJ*R_EigL+E& z@~745in;{ywk1076d(T-KjSIhZ8?j4pZF$R(R(BcJ+l(ba+F@BPT$`iPfN2rL@%m? z_O~1D64V#NaL$WCYO_2-FEqbu7ET<)4ONG7q$7igsqm~ z=F}i{H+9Fo!e+CaqVM=+kh)WTNHcNcoNmT^)VtH#E!Z7mdl!%%p%L}ZVwIT$hpXGG zaaJ-j%fa+WN?XD_N-^k3y4poXT1|vY+VnUG3W~6?k8M>+6B2D%S4ZLRSP{= z6m~%h9>HRPu*EFv>sa)MB*72gg{w(+X9MZ3HmHV2sePL78NzWzXX@C-56KubkiS2K zBYO?I{~_r|idfGq(v@0k*|01U=J7mw&jqY5EX8HdVso`{h=uURh;12 zcTU2FA`*?OW5=^dkS4k=B>hj9yO-Oc37O^SIw2_Ym`mbI_oVkjQn{pW9f4#K!w3pW z1PuYXIeMKhQu0I!Bse&AtCM)yNlC@0P6gz<;DODm!@jUz3NoS|+s13D4M`V55i#dc zL}Ts4hyl$tC(02)jfkh&vW28SJzC2O7m{2$t(Hw#MDnQXN6fm2OzU+%8yn}K!yuIP z#kQ@qOY;P!8SZ4uJ|d%4W_el-JO2?$B5^EWF?lvXwF!@ogEqO^CcS8ruiM%-)$45T zV$#*~+(K>=mp(e(B$qd`EsIHPhXjlgHu*bc>s>ez%Wf_v-HAVk&dh5Gaiyxyncor; z3IG1lOUN@MpDkQMMv>Xf!VM>~t6Uh)+ARf`*-#FpEMqB|8a1i$1%GGt!TXZNvka4t zfHMXa8Hhz3ldNvKWKazdf`imkUd7{iSvX|5jqJfv5=_*rn}!684g8;x|6@>fG+|%n zadZRLUQKu>R8hPD z#icc9m7LfTu2`cexAtD17~%b(5DtD>D5PiLawa#hOUua`>f69lKPGXsMbCD8OoFLi&wk~6 zsh+v6AbqJ;&!Sgg#%=i5?c6Ft;HsUS6s+E7RoNKB8>!)NWzSDU5Qxf2rVCp=&eXvu` z!UPj`f!X3uNlcf`27b$eOb^h4j`qYv4}G{Gw*z||DAVUs{7cLx4-3z!qkV3}onR*T(NbR&w5E}5TSxkm686hFd^F_4Zm%P6)3PR(w4Q`f|E0PG>&ax% z#b1e9$S!Xn0|I87vEE_k>)Nhx)B401ga@71F-*@&E%G!LvXS%)UC`j7G;+W6WPjh( z;M6E&mDNDDR>4;#^O$xi+=3Rdc^k3n8qB`jNcxlZ?CeJJYOmSW$GzJqPpE&gcbnw3 z7K?nIjrxLoLPHzaxi7EVwyZ1!#4g*t*T+yN)~Rus z?lyQ|fwTzcg1ix44U|B>2+szlfhK{HKx)tkwlIe+Khq11fCikG>ag)QBRasC_j?N-t?=G^z_5L>U5?RlF-bVUNI@oHKWo+AF&9U`CwX@bF=eNq} z-fK~Wx{i1)0yTmpy#DM2X+bSs=ns$ufil5|qJk*Gm5?t2&G%yQUy>A(!oK;E1PmOH zEIzmKq!X3<(5v-swGmldglRb_5tNyU*F^{I?7$koBqQj~CKkD!_;kA38j`^ui+-7N zGX`duNxifDC^&U_0sDslf1LZhl6V|20|UKC$6p z0?7^b1jc+r!lI)Zf-;1VpI^OX@Xij&xY4cm^x(Z`>s?%q`1hY4uAVa;!@l9k;(gu9 z8hQT3-(Z-m(A&!xkxL?Jd@D=IC7E<$13RBfd^&z=d$K6l6v-tYwU5$2EJ>MPQX zZTc3Ygqxlfe@lWodf1-KZXs*G%YX^DPDM~*eBaU6jC7nCI zWo?_AQNF;2e}~-M>mTOk%m#de+^&6x+^XPow-a?=YiXOCQGV5Czqq8GxVW4;p658y z${Kc}lHKbEWK6KZkNjXx{cMaGD&@TmJ{C+Wfbe!#@- zUu^UbWbWW=wS6+u^54k_oqpCYZ8{l%=QSodM!A#uVF5ET`evXLTUxqpi5Hr8FAK?F zjC@PFuxZ~BFXpW!iJmAx4KMfrw5}pND*4@At|g&?t@5Utr<=!QtfKRWl&3{^MoWIB znwhP9Tz<3Fgh|qPOsg&O9b-5oQ_xwA@@uV4)rpF<3bRq8{E}il4%X{!qZIj{iuEYP zI!@6JhgM@7u4w|pq zt3>OFWcn$5uEMud?3`hjXbV&1o0L>6@BqMr+0axStVlmqq%DfH$?!GSri^mE;aGJ^ z^|ETVI-ht=xnZcs-jh-O%Wy=&{}{@u|D}X38rCUz-Y~EFo9f>&ZZxVeM%xHJKqA6C z&=gQCC<5dSdVsU4t3c;Lhpnt7AMN$)M&`Gd%#WVYSaO6fFdF1(jkyTDjL_u9EQDT1 zXkueBLM~eka61Y|$Q7Y6jqLPZk~}u3Q3(I@LZTAG58+D)^EloJpGTO-@+bItyqr8<(Eg&y@ZS^B=ft z`_^QY`MvNu7S8^L+K>P2+>`1*6}2#yc@`3%u+0C`pH}o-&L<$MC9 z%OTRYe=gLV@VF09Va3~k)$I_as3EX&SBm;@^=B#Dpd-(Xp7Q$R1)(u*!s<5R5pBXl z+Jqz9gu~eHI-*e-aZBB zSPV3p=aXe9(Be8a)U}35xtmtx0~~;H6@Xc-e~BDQ;!53MW=@tIk`F5kIlQI++C=Bh|sJa=5{sNhpwCOAwG> zi@$*vvYUa09VgNKtSC;Lm1_*L!DcV4LB5L+FD$bdP9nq_%O=+G1d3N`DdHx*oqnOLT4*rHRx7T6y>XIsqo*6$qLXA`w}M8a+!d}Z zHhHayH-+D=cdKhKQq5$)oP>|y8a-<~Nqp$yM&^8q45QN;S^O!y)yFon6{qm_9@@wb zogzWBQzI)og|~Xz$P64?8kp~C$SWGyu+x~V{no%{ohA|VKm*G;4gHP=c9`SF23B?& zqu)H({|vh+4J`3z$j3CWbdJLs*lLb_8<_TIr03Vbe&cquff;{BymNJI*cmdyC%^9f zS%G<*Tl5)weAI%X~* zNnNMa8RZfK-^d$oOGe9Hih)r$@f(|d7S3!tZ?e3zB&c%*7I)W2 z_gTCU`>}4nkrz9aHpR7&PVT!Wt4rW~@IWqXV)K3@*E*Egc%Og8*ed^wv1cBe`Y$q` z`-$iOi;VNrH@=g8roJ8hvYXKNomAD|r|VsXp6Um3eiQ3-j+FU~Xj-0du6lNQW%vJ- zCSx@d9zb$*)0W?fH{Eta=kq%`Pl$!xJ`W$TYpnMlB!Fz!z3>MaN=YHpTp-`z+1}$K z>Crja>^lPY6<@JOgCano_&qSPfv#;}l^5~O$9vVk;nud6{qx_Xr}IZ9;e_fr*7$Ey zNDJ^Pb%_k28}+R05<2oCJ#)JZOx3g4%cP26QRE8A7iJ?R4S@wTOE_sa&C?kC$;#;+_(W8T0 z0+oVFKq+X?sUW_Zz*iAY;%9pDFR@i+L`!GZv8b!KqH%RB?J6;2n{N7_WNtfWL#rH( zn?TuLe_}RR!`l5tdN}7?MDM()i~Ng}iXECQE_jzd(Q1(EF=)2vJZ_Lr2)U`-Tn_9M zU^U2Zn4Mq|X)wrB%z^!Nkrm{gNUzkg&?+*~J-;?FVIa1>@5{StS+1WL#CAeVB6Y1* zjw0~qI)8C53U38EDJ%;Ma^n;jIXqv?rUdib#nRJK#~2Q>^pb5uFHR{ye!#@Xr1A{{D-x*`n>K1 z5BeIRYqqnmJ?Rj7phe{G2Ysi~dekmrUL! z-LTGdjEYXF*RASG7tyeOMj=G#UwlCoaZvRvyD_xF?4z?=VO4Yi{%OkFr#guXXJM=~$vm3Z{Xi7iI!aM4w}6 zr+pwxHZ%wmFY#&o=FuXyA%uQNJ2mLsLa`njdern}oC78v=NHR8`A%zV^@J)SsH*H4 zhWDnc>6m)mf!=gG4N*N&J1w%gmB;H~z9&D2+Nr7_LXK{3U;4bLx`UapuBbl^r(wh4 zE&cfV?#P2}JW^uoU3tE8eao*A!TE2N6hr&6h$xyziyCxgQ8bW-7Cv!lcVsOt?Y{hz z?XFynOPh6-2>Po$UL;E#M5Ab$UbkovRy@PrG(VZ+Kg>MdyVkq%HY2Z+^H+#4;XiF+ z`qVST^wUKRp$5{c>l3weNA7^yxi1G>?#fB19pS_f3`vM+9G?P zxg7nS2r;_fN6_6Wbes=I(E(k)G`VV<<%t%)r*Pmb5w?STb;m~0ABfX2be?cs#tYQu zM329rn>CisAXruWeH{HK-8faZWjw8*v|!2)i;}5|=E3b@BArA|vwu&d&v-W)UA0Z} z59T{^EmE0?AGBSR&W?}bmGUZGL&Q!-v+md=dP3zDuRIYu?M}vU&>#mlv9uF#s zOP)%7*uWI(-#HO}&P_7G3Tb=oUAZ$J&X?Hq6#9~vwvi7d596+GWG7STda{DOG?fnW zF0k@gZyW5f7GliG-N)WdMWXprX)=jqmZ@~K-?avh`>Usad&gZB*P@Dd-|cb#^VHC^ z2Kg|ypQh1!9>2ihT$bxB&GJdhL^k~m+S@C(p>3}In1Q}Q*V1k_USeN1B9;1e8D)u4 zH_B%0eDM-{V&O(OagNPNMVWW#+s0n5XXjE8TVu7yo;Mw_cbj?a8IIWV4Lo)Z`*u2g zFVIkr;?CHCPjTIM^8)kYo;Ac}yAN)VFV?fj8MMyhmMM`>vCPf#b<-Nw>rMIr^{Z#w z-=rhljdh9m=4+t3L4Hujs@|kiXpNdxy-TBX^U~-*;ul$$=1BIZRFC@y-c$|x-Eav> zyVdEAzeSq~nW)?MHvPn@eYT;Swgp?XP4XY`20>SDkmuL1^f@%BowJq*ZlDKj!yMYr zI~ey!6~A$J|1^*L7gNXP>t&&lmCm8TUe1kfyOWj2TIh7WT+_hlyR@{kGsdeH`7#zz z?#t^9e64z%?)JNMD)GCn|6hgE%SZLPluX)4sIyf!ZXR9b)IQ$SO?yXv)zTy{!=^s% zMZ@ZuDhp+s@f8tff+pztXVH%cl?Jf9h18!W)G_Qs`1=j1dvkWL+5GF}g7|x-{8Jnf zT+m&QZF**1NR#NbD3-K{PNG|y*seurM1@RVL|bWdqpsy6T0~qY8ye+p))oC(!4f*g zOVy~_9j83^LZ{cul?}{wDc#Z`2wUd&k_rf(aeSkER)NZWwv=Uw?@?9pa_Mub_+B2h*I^=!*B zI*|^s>h#N~8={Kt0d%`#ZyMUj-I34%+ zu6!5!nQ<$Lki-I3(_{3CiCtSwb7)ad-GWbP1PQ!W`MuiFoLIlo>HGMm(w*bPKc5)5%re|t(SJu#_E|gexlQz-{k#;b%VO#J#v$5B=(Cz_)jh;Cz@&r>u zwH^x=4b@HPQS%lPVH#)z+pvY+r!i)>n!(Qs3j>V4?m7o+wDoeBiMi*{7~0On)HxI@ zM$D2!pC!}T;H~uiPOsr=+bdtP55S^wog7-jj&7xXsyf-bMpw3#rmNfx?l{~ERO8OZ zd`;_k%x~y!&sbagoH}`^%?+|$%t?E=YF^WzKE&mlq?sF@wv zN#7>#u%6%3g*4K_wttUQ$FURN(;huyG3Ep)*FpxlfAI%an(E|%XiatUGiJR!ms!52 zzYmyL_i!JvPR=$Td*p;ri;w4@+(&GXmm^vWGwq_6$tUc>4|F(5a6#EjYie0e9&M)MYT24SG~8{A%{AX? zQ?0zns4Lz>eF!4|R-?O;kL#d2nwW7f9RiVG4T~#uWn)`zz##2>Sd#4 z#hXMpG=m6R*!=?917ECk*++Y@`TM9hOWa4@*(M%JM+oKl04liJZ3fV~>Fm%xG^t5 z#~*1QW<5ZiJpv(r1G3jZE4cg_k1G6@YCo_cpoxlU=N(EK1yI1(!PW%wR}|hW6vYB4 zeunTTP|Z{}?EnpDjXxswVNiSqp$4R7q=;@7LrvRtTZ`zcqL|g1$nNOqaMk2i_gC4# z!!%ZmX)R@Q57Y6Y7j&n1pvG{Ibv#0QlYi@m9--|BNn)dp(t5GXR>=nZM4usemj8s* zHrW!{k)Pgh8m?z!#ro!yq!V zjX{;!4F+d$;+rs#e~*oWGJ*xHhI*)HqzXN&x$i*4N$T%3mcI+K@h8!9e`6jeXg9X} zB=zkQ+$O0U^YU>-2+|AerIWN9*=9GZ;ASo6$7N18cY;|_y~Avl-7NkT_3eDRjaiKO z&{!f&WOGi@m%3~)s~%mm3!L+|LFLIVoT7up+2(<)-D&!g&!{#wM=<6a$KX8xelDkJ zv>0gK$iC-B_f3xzdIv^RV1zeUx1V8DYHDF4e@1RNRpwD{0Wdl`nh3+#_dg@I<)#U` zzkjAL5|Y7s{X$21y=YOtz+IL209h?Z)Um8zXhgR@$_AugW=nOQELxf{*wo8CEp_q+ zcI+40ZNT|Q!%U6r*2Z0-8mEUmIn30{W^sF0-E~K3XKPtF#*!`$-P$VDS zk0sQFc!$;T6?E(qsO=6w)qLCY{8{P~bN)qa2;sLt4fwLYS`Mle_8X3M9N+1sB?+1Y zr}A8UH&ZR+guw8-_=c=n-c%cl{e^0IdoA<-jfRfdj@Wge(<5;^;t3AIa8^4j$KF)S znY9mHi~>`u<@vSYSdfp0?J5wrYd3Cu;NpY^*C3=f1ta8d)X&Kax=w8OZ**^WM5!TP zMvYmN;A#>E#H4miZLB7JNNKICV{`vSH7|UKrKXE&47P}K4#?>!$PIi2a5?BCh}%pC zjQ|CMTJRII*Fcv*k!V~%x!Z514&YvpWq;&&P_@Hk2| zF^&i+zccyQ2i)B|meD&2E-r&()D5mxved{%lw#%x-?~jepL31j z`v)7^MU83>5_Aly$h@4EBbV7d5$)ODPeZ)G95?@Fps=~mo|8SMqZ(Qnxc!3D{(!}Y<*bMYY>iv z$8rSdp=<(lme&h*$%v1cTr}!4|jwBHfrWH*r z=Q^FDs*;my*n{gd8zJW!w&n&63-Avmg43h#W#SC}&(+IsD2^b)i6Y(aH|W2JQ$a8W zBKFly`iiTuC)R#JZ1znW%KR&+tFv1O-miPIuWwR6mQX=M;nJQ_L7#C-g4rj>OiXbW2YIS%<)sD{y7)*7i>#)R zdIxk0sU7RqdRxf?FeBX*ICF z>*yNHlT_AO?NdguV(7oaa%(p z9&lEymsVpTNH|fO_~;>E3;Sg+@}&EHd6;cC!8k`cHUp-#38MvRkAB+{9m@KAKAvT=~lcx1+gU@RBS6Csix%VjFTTl zI0s$Z$^0$3q{*pXa^asz?DrxA^l}V;d6;egP~sLIR=l!pynfK4fW7?sD%@f2b&ntT$i>~iwY9eNF z$Ly0t%%Q9GYzh@u`R>9R!BFm|6$>{lXSZM{1DSJ6-qyejRIH%C*0XD(7)|r*StphF zCvt93iGyg4UKi{nPN1~tJGQ_@EO5Fm5@EfrkE>`?d1T|fox0;V!5u#t5TzUJA@*=0 zak^JKi9foa$nE^Z9&W{WgNf`}As??}1O3Dq?q4_AcOq}fIZb>gavYu4#2Wp?A%PWg zn8WGWhROEt)%+v7DmmB`xEYyzu8Z$3rcv+m#!CiY5|R<$ZCiZRh5G87a#I|ehqmH@v5@*u`E7_u6VjOj=W5vD1neJDx$J+-lyf@{G zwJb7BoJH5K&}|D7-z8XlYZor|Ca>uRgo{5A@-e&G2kd){^c9~QbQABO4?AUre8u>< zQwdbot`U%Zn zE%PbBp%LE3^o965?WP=G%cA>>>s2@5SH^zrFYZKWR}FhNQXGfS(i+|INHK;?DR25I zyTcV4F{RTD=06bw_6D3>obJ*ViB6A4J7 z#Enz*BdXMhyT}o@sEH*<;m+-9VzZ;fEvb!I8LN~R+HT3UN@zYpmFCQk@$3b8fz~X? z^BFV-6an%EEng-Gt3WMFF-rlik?_+CI1)Y<6bkYK;U_|b%B8v)1H_Aj#y7GdgT#r{ zzmcsSBrc|94a_ZCO!3n;{Grs+)@43>`7s48C}z02T;ATmq-ZgldxUoyEbgL013Nlc z97F%q>zs#((S(kGbHlT^jwmd@KPv_f3(^l#uK5M!nnzW=FxqGDJV#=k^zSS6^{k>B zT=hJ34>MBfS>dzd#?&M%I#ug@OozL>IeS>~A0w)R*jIfLc-DzYr)*4#nYl{AQ6C5%{ZsQA^N)y+dRWzm0L_N~{ zN6}p38jXAgszj(#qwUeoD$0`&yNaE_U(hVfgQob+MNW zqcg?X1J8>C;hfYvP7LUN)po_;8;uG{wRg{74N(dujE^An8ym-oe zqluU7C6sI(Mv@mqe^xO{4Ci0AC5RvPJ!*M6pZ%8qmCr5(nGS?xW-oY;*7u{(2pQQSe(>RJAa zsNHe(?D~tMpYI49ov5mpXdJdf|7{qhtp48MKI&eHqVLcjEwPV=H59=z^wF?Zj#DWg z4{Nt@!bt@l7kpSFh6))jZHc(U-P!I$@eRMe*@9580uK&62=0N((r`38s4$HMj}`|G z4?ly6mh$r2JsktvAThO4?t}e5KEwBd&iN@_cjzi)9}~A|W*bI}J+P6pf3!G?4y$7i zMvF^{H~V0WIJEPwT2c8((u@-q(PN5^z6u3 z@mY@#6;V07NQ4twW*I9U>AJS@$t8bT{>*e!ZU+|^@huwE#G=QGU;D1Ye!VPcR7_`e<3%kAV_zhRqg+(hQp~>d*xyOw%PwV>`Culo!7qs`>7*uB{E}Gb z>TjV1H)M30@ zz$CE?J)>udlSKb+hx9?}>vE#<**y=9vfh*j!Nn$@Etw>C#pfBDCyD&@f>V>k=R7m@ z@%}0`E$uVwx||7z%-7I`XX;ts*U+Vt^(^%@G0JO%o_`?Rd?9=m*?nD(g&XH<;xKB& zJIHI|>=<`E{eCUPlkeblxv^dd_8808iIs43H-oc16x?p?b)3^gap(g7zT~=GSI?x$ zVp{M$915BB;z_k|@|)Won%9;$KgFk3ut~3rf$Y-jqL*gvttX8)J;j@!;wR&bnYM|C zKE)?L#XoI7`N_g)%ENCzmEcqS+Nb!{Pw|yc@%~j$rdJAmVwFWxSg4iCfdtdj8sOsY zSZAu%*cDQ>U9lF(4Yw;;DD6^kw-j2#<%LoNP%G}2hB^3H1+`L&gHLtvvmE?v2XAoj zW(V(FYfsNrqXhD$i9nukCg=0oNzru{&0g32(qbUbI7>mTl+AIkvlLTr(YSZTkDmea zJM5Qof!ywE1@ojTAWsjcW^0;#@RMJ_JxI^J!J^p>oDD22%#$=yqeY{KL1i-+XeGUZ zg;I@!_r7C~Fbv4`;~e}v2cHW(jQH1D>;*6YFM&UK*Uq0&P%E8x@TI^?o*%Hr2QLZ_ z6h*!icMlo4?3d;Pc}6RMJfY;+wz)8w(55&DH0P=$RxZCwfKz{Exc~~`hxYsp6-nyHCg?p%!>S>Rs1@d^!Krf`< z+=0srB|T6nVYru7lL$o=kQ-(Kd4@R(7D~AaYNeCF2-wv)o16ncMPVV)?(aV*T0k`*kJ#&JZ=6gl|A-89@lE8T-&CnCoB zSvAGL$-ryCG$604R0Z>-Vg*=1ZYL_6%15c~#$2 zP%C-$v}!gXULr6Tmf6x5qzzN8B0sFf0d zylT^dyjQFSE=EDlIP|4J34AzC$K-Y?z}4W-0r?0zuCG14@Cc5Dl6!xS-%8;MqW>2u zfkNr9f_c(4AW!I?gO7^j5x$eoaokO%atFWo89SfNv2ceJ9R)<=O6CZA-vOLgNzoi} zAt^vUWX}f%0atUm2CevE4yoXsezUbeFfib|Mu~v<_ z8}>Jo>;;KZP%9aLylTxaae2OUDcR1Ky=>=CPT+_}`HKCP`A_70p0pUq^V3(ttcdmP0R0vM21%v4BV=uc24)0#3GS%780?Jbnp~r(5_s zs@e}fkO_Rx!ovm$ zhb}~oL9YD>@;oQ05~u}#c&VK?0J)vSN7{XEQmKUWppROvv>A<*^0D2Z5?BO9?phdX zU8HkB_aGEtGinAHw8g4f0hAa|$X!a^%I%1BjU&mE#%;qbguWO!9~ko$xAT#NZ!qG4 zPXrbLvv(lB{C1M}cfdUwH)#a|JOMpNB$&RFM|79Uz6YW|7w&>#fheW_fNq2Y3|g*N zNr`zJeWc<&K*&}3xJAHo1>liE+&Aj0Z{$UrMf zg&g;|O5um>2KRJ8=qnG~_3lUP@=Hh2>LEY#lU=R{@&t>H;n@NC&f|9ZIbh*Ff64t6 z+6?5vX}dg}BW_g+P%)T%2Hgh+<9@Ll%m)_c6Dh8QC*UicJBz0w^u@n{*E&hpIO592 z{fp~;q%-I6%z(b=cf0-)N5~WZuxj*>$CTRTlQ}|Oaskg0$PZuS1wevj2=J1gxrA=i z6N=0B2xT1eTqM;Mt`C&l%g_j+7p~g%K|q4%|G8`Ec956-4LJ%HcO4TI@bhnQJ5kE! zxW`M%D(C1fRRYOA@V7J&?DLbx-R9^lX{&%3(bB7dyH!#%5Wid?t*+sEUrfvG8J0Gn z|KkcyHbRaJBbw}2G`Sf(GMvv58K&If=q{B2d4?13ao$xb0hS~FIn8|@!Aa5s`IR+4 zu=8HBedJ37hC{y7fB^%jZMEx5fb+qhGdkh}w}X!}+lS(b7OUnk`0dU%O=vKlDK0k6 zWMFtl8}f6Jk~yMLYc_SVDMO|n$oqA8XPagx3?(0%<_s{aE05qL7BB&PW)C}`155#*9i;FY=`aGko5l77;%QjQabKvE z8^SR{3JSMrCL+S6NJQA}F8M!W)0_k!7iEu^!x8a<1_1ZENht$)yl^RH2rdA2XJWx? z+e>C(R4BUdaPSy{Q$}#qM8RjjVAE`ZJV(v#3MHJErO3x6q9!4)8O?c>v|_AXF9FLS=lnGd0;>@y2d)KH z0<(cUp&W;NyF;GqkZT?Ca|*AO$`s6#N|WsATmtfR%78UMGmzg}*OzRXX7CX}&c^^X z1_)9df^-FO1wby}WPKr(A4?b(EO%n?&0v2jJNcq$3 zdQBk$e2R4m$g3{u4X((ORse$#!F4)#bgx8U4EXJwN8{ue2fhrL3_Lu;rpW>pzG=5N zb3_eBr`gk=2%Hc7P9V=G^erVFjTEf}3Z%H1_Jq^ZIp#^B8FoIIV?ht81h`K)AjQtI zCzuK31xcRGQ7g??Fi%>mAf{MAeqo0>kH@a>9B%imG@s)>SIPA~&T9%Kl@icOsT}h~ zsaWCjrHD*!P$-2fh?NhHm>1~h+T{iXF{PSk=Ytf?mtx=NyjEHa+|F+y=aH@f$P1J> z->#p`QG*wUYl;AG!48G+0XIOw6vVrmgZFmuF%CY~!KXO*R0qG-!Dl=8LSPUIQUZ(y zmIHa?GypZ@5b#>SGt8Hwv(TScP-!AC4)SY2UXU6fw_Cf=rb*>;pahIsgb@ySaxoIb zy)^(Q1EnR<1IvKfK(D1XO)fBdnLYg?Ag`fwK&493mfJM5d!umxxuQ_PJjwrKdzHlj zxqK~0+`HTrc3uzURXTemcnrlg98uMqJ^|vLGIzDz&g)Z-c>h;$hjh}xU;9+)|7fLa z>;?%6ekbj8@I?w@w)>eqqbOh*u4F#25_l5G6IL*nN?vR2yf;ViX%2q2gD-aQCmp<( zW*v{9l}dp8N=nz;tIGd#$T1m>$VL?-BMHd)pbgx9hqPG1LTRmn-$_9mxjauwP_R%+ z=ZK-W@C)ExDwS>m?)H-O9I-Co&+Oe$vlam^NYAkgytks8p&-87ApfDOE>g}9cKJ>Pzmr0>oZlg>-p%zy+Mb62>v>Go_JBvh zD)%b+X{5vgR4E$KCLpg$j+elfJNRY=wNlnT=urdZKweYLh1@=0$~|Bo38f;QfgtTX zXy=O$*@xJy!}j#zj$)`rO=bc4h?sVY$JgXa={$fcDgyFWytafZa;0pJkY5Axk!$k5 z>@_s;9M|Vd$-e_3_x}S!FVOdbO_Trp^HR)3^cFN`_e&@M$151ZfkkCJUZHeGLA1H6 z;4!vJS_JZ*7o{35K-EV4Y14Rz3qm?D9Jmvxv=Lx5c-3DhC@>DlHov zE&+2O53S&Kc~YW+7?L^SxgUNDhnx3sf@9cL)lBi;-Y4kQbm_ zk)yHQwnyN|6PV0-T=8l}j^%oVN851deXH#D(LipWuJEX7Ai?W{>wdDVuuxbb2%;dY zWN*zAdrzL~f;VoL{esO#0=y={??r`!Ugt-`!GoyQ;1m>+hyjeM5L*xiz!pzmZrd}? zZK;r?T7~ZwRO@jrn`#Tb8&G`>cTboeAS!{KTp;@Qs&%$%3OXn;x^{vlLA8bm$*SdW zjQ3uI#Cf{Eux0Oy-RW*;_VxRspU*l(!QJ4QxO%BVg}$&^=*-T)4`-@ZomtEKVx(U$ z*fR6II7Og)3qx!d6lBtEaG96^8HumFm2wa9HJ!aHYzt%2QbGM6W~Zq`KlM ztanl&yva!g`8KCm*j#r~HF^s7oKz1yg%!>tAoQ{k*y)j?=wV< zxY*(j_$RnLx~GCLRmCq5r_%~Akl0{o!&Gr(AaIy-B1vFL3&ar=&V=h1h)Hz6$gVFC zecW8P@H;CA8$@PZ0I#C*&2~OR#JU3-3>qxb^Wf)TyApR-#mA}GVe_~>3Bpj3P5Mxr zq`66z6&&UE`KpEpvB>^+$O?BmbD6uhDqiqcjT1(A;uz-tNB-6SBVYOd$mcwkcX%R$ zS1Aru7lR`QaDzu}YM?L-g$m%ZJ*X@ciZ{&&v?0D5;6&M)EYWXREpf!*7q4>jCcgHI z=hgFjTb;AYi+DfQ?I-Ly;?vE98MDN&fpcJsnV(W2UaCkT8hO3WFf@C-X zuPhRKiCqM%?xRKGSwcr!nR>A}#>axKn1|I6rb7>lX|AZ83Iizqhcu z#b_sQ!4rEaTo%VWaIgadENmK=JJ}IkZSE3m1z%<(IUG|s`n{ReEfM4K0Wz1exFup3 zTe?JaW0^dZ#6!6}RDcjU!ul^2yAJ#o`$!M#>EZRRdo1(f{X7tbj&YxWfkzPLnsk90 z5f1wujclnT`rzo%C6d^c-fU$Bk{C(%x3cS!=;yb&RoUlK?z1!Ed16fQ?<5FIT3M%M zVis zC!K{$^Z|xpVgEgLo!fojuzQ_v1nzU=c5czC(@sLN8KoA4k@r~AD%_}mdu+@nVlXau z{3m=?Cx2)NFSoD}tHofy{!i%PpqPTQMDW+8g)Lew4k3TDg{#G9>GyY7-DA-e(*s4z<|GSwT_*9%nGn!f08eDh(W;SCD_#;j1${O5{4Nc6-F~fl) z9oVgjE%;0fBX^i(4aWAfcKB8Sy0DS?tQ8kgO9R`u7MWaVV8=QCDo$`)C-(K}gMHtp z8&{VGwrCwPYQUNAu%V~)>^$eU>e&O1bM-86y||J7UC#}q zkZYe8x!jA7_u+o=0-PoBz>OD1*0H2)3^KhO*v^jK8nBO!C%=-GH;wAkGd z9$iJSDq0z`Z&$Otjp*73tJ$9$QShzR>;clEA5=5HFTlTUN0$5rZdI>pHVeYQc094& z$~f;8rOGCPL{!`GK|UXC8>-ljFL0}WsbarmO)1Hb2bdz$X9ko&483ga-Qta~b6xGG8*0{sWKncrryZo;RPJYDa`bAICs8w31EQf^vIQvgKPa7M;Dteg*ohy!ANE zhhyp7TP%>lrvEKAgJW$4+r{8%zPW-KIgYGgNjc&)dh;eL$N|6ZCZk)y_rJ+zYz2R{ zoHcGmB_DI(w+>usN1u%H$9eKH^Xq=KoDJKC^7ScaGq;Js1D#;=xOom#=61YZ8*cn> z`Q;nz=r-J+y*F6JHgQC!Ik0%m5gjQRaQgN*bX1c)IPUy62lQw%;Y(c@os;#&h_xWgtuUD-oUsJm3iKI2FlI~4QsYpvt38yzZv#;|qmAm*i zx!|+T{P16!ou~Id+~O=t+B$MNuzy##lXcVn#{K+PU}$%PV_IP!bii_W1v=p{bir%T z1IJ+gpBz&N>tH(^h5-odbR(;8TeGgJa?$lXMO&hGn33N*bJyDI-w)R zK_kp?;2d&Tv$6x>gZH~DMa-j^S(?}A`gdp4nDUb%+DBlVD;4sM7G2;HVLdTpX z5nu%0gqe^AK}M4fIgk$}PyrhuC3XDHU_L!TBkxgH_X!)S3w*}o-Mf7z;hyjVC!AX+ z#qeFc+wa-hcJbyA%3^X)ffr_zUIcrn@gf|ATi_q?&-;BQk@zC5&LAE{H+v3t(l+pZO&}H_`rc{NC#`M?ronsTY!?JE9zAJmNDAKeR()IPv`)v?#CjH26B4 z=L=#&MTf}$3pRX)ZXFsCty_lAnULP^tTJUJqAM<-#|I(0VjKCRkQdc}H?NA_xxI4q zlIojmLg~wM{;i)5sY%!e(@#2AxSf~gGpjRvrii%ZJ`M~Mb#;h#yO#3s{T#|~hw^Y$ zKyS+JQCGFR_c=Z5I8%td(21_;QJ*;k?cjwP>?_HSLZ!8m@JlzPogc6@gh8R##(ed{}4!SKk;1zLKjC@h!X^I<*5kzb2C4r4Hd z@>G}uyoAaufi6zEV2kU=PouGej!~S0PsJ*q9@_c&0yL%-aWBrspp=HnVLdd!0XT^L zAaM(^I-W*@a$I5?9zV@!*jwS%iD5b)_oRCQhDJ^~rtf*5Dc+5fXIPsZ-ku0;7x+aB zC15pTjm|&lUENsiNTE3qG^sMZj^vCqC2r zF&#SNGsDA7F?oeG=*rO~!j>=4%|$nezg~0~7rC8R{S@rJRt{s7J@5SxH)p0wl{9UK z?X>Bjc*kowWpcAZF?#`;=BdxQ=ZPWK2^J*QK;&ZuX@xKHp*qdz_JwSvp)aWP4jQlF z;PY;SnZ!DDYH$PT&uh@DtMc7LtdNbIylkw^uI2k{ypL`C`fH>hnSvGy)(&!lMcgUh zhP|7qUeLs0N%EUHu<&-j8Jy)e>w|uiy4r8zcu~xuJN>5b34RFw`>d9vy|9t`ZPZVu ze$g8&%Q=2C`T#FF%!_5IP#|YG zdI~4SkPUs5Pr*q>l%pViI?qk`d25K36CX`buZAIEzu%1Es}H(ico)Y%>l6zPD5yt; zILc*IO2?9J9p8lElk%`*PBJ42dl)5g6ZDeyF+&ZcE1?{gz|~8!eC>RJ2Y%~IZ7pV? zoA+@4KZuh`SO8057F@lwszN^_n#O0!Y)F7OsAfc~VJUc_gN}AH>T_@i4nQ*HN0_-L zP*8^|7+icPsz+s1T>Cti1{8n5NMIo>fNV&GEbv0(8J1*eVb606gbuAG&W1Ufa`H>T z3y1NaL1&6#3+1H{YU4Q6!+I!%Y>Z7Dj$TkuPmeKmJ)gLT=2zAh88%$=+6yIbVN^2i@Ip9i{r0HtcB133UXYxmj<}+k2hk|DcED%S;Ntc z;6V8Rc?IRmSP2bz+0XBDbyG*&{8{n}%1bvwUb=yOT>o;IX@&h(sJw&`D}0Msx)Q59 zW_8L-*JE|BSzV3Qby=PA(jB(CPOIw(S>Y>I*kOeoR=Cd!BUaaHb;`@(ZmVmyy4X>7 zWIL@+dFdLhZoAc`SY4>j3T2RRn-$hrVZIe^vO49Z+h}zgtgg!Hs;o|V>DF0Yh1E4% z-5OUHGBQY5W`!%Pu*V8ZT%l23y5&|^Xm#hUZkg37FI~RXEw;L(f4ei2XLZV#eZ=w4 zwZa@L%(24xR;aujW?J1`t1Gj*bgNTdx-_dxvAQ~|yUXg7mo6xs*8e0c?6kt^R;av$ zQzb+fZ*>D!H`(fxmoC=o0#+A~P4$e`DKFipdtLi^;*iejbc_<7#h{?Pgd^l-A0n2n z5S#J?hZi4{~K{i+HP zDpbG5Eg7_4JVo3Np1vP_^hdJHvyOTFD9idAyc};_#r*?Y3;Bz^y!nBT*CKe9QEYXeW*}6-=_5(xQ?{9cd}6p;OAZ7r{FFL*&4|ATK~;a z{&VF&L<8#J+;iOB=&`SdhmF6pM#E~ThRsk)*%sn4%Ik?^$hQ#hfCBJB3VvoqxTC_B z6AbJ<(vV2K9Uwmk-go^Z(5aB;sJxGx#+wsUx|^P=QyS$l+iP#6W!UF1Yo*|gRJLUD z1)!NU`~P<)k;44&cX2-=_)>aj&XVaacx zW5RFf@>JS}<+zn}GETFh0S7x^EzSxc3ueJZY|+mNs;B$^*lA8S>iLLcAP(*Dhg<>B z4sqC`o*l6x*}MI$P2}JOK6Ik* z{tQ2**3ZOdH1|KxQ6G-I-Dvf0jqPa`o6Xg502I{Sj*ITGtzb#y3rZ$$7Oy)bPO#LB z8N;8OOy`}(+(@jO(1lBvR?UmyyYr-TaP>9fcpZOi=6tR(*AqWo?QYdny~*!Jkq?kp zJjKS-Y&_e>Kd|w98~@nGzp(LR#QYT3xH*lmBIc2fke3PzZBh8U8dhtFpb;>zPZ zMEr&25;j9I%!5Q2p`4ae@Q==j#X7pJifY^6M=8|zt{S(yRwcidYo$TvD&O5^wD85?@vd{vp>eqoDU$ySt3u;CS@#P^+ z3P0pfuZABJ6&=%5%MIQqh%B^fkpQ5=*t$kd=z2UD10^f<#(j0k%bt&wN3EUXY4Fo2~4PYCyYy#N3J delta 84745 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 bqXyO6wN%pLMA$rY`nIU~5M8Uw@!|gfd9{_E diff --git a/3rdparty/lib/armeabi-v7a/libnative_camera_r4.0.3.so b/3rdparty/lib/armeabi-v7a/libnative_camera_r4.0.3.so index d3cf3b12422c124678a1b7aec9f16532ea0b7f5c..d5298d3aa81a4fb4dda0211fee2ac1e81e15a266 100755 GIT binary patch delta 81241 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 hgv(>SfMM7%Zva3 delta 85579 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%0A1t%(F;=>$=Aquj?LZh>#1rdEPNM@fphq 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 P3$ey=F58)wG4=le(j2NE delta 86172 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 diff --git a/3rdparty/lib/armeabi-v7a/libnative_camera_r4.2.0.so b/3rdparty/lib/armeabi-v7a/libnative_camera_r4.2.0.so index 58bef34553025ae5318aa41e3a819214207a1180..874ecd143c3f983897e424ed48806a69be208a20 100755 GIT binary patch delta 82258 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 Mp3gox@$=jMANl?aCIA2c diff --git a/3rdparty/lib/armeabi-v7a/libnative_camera_r4.3.0.so b/3rdparty/lib/armeabi-v7a/libnative_camera_r4.3.0.so index ce69b52eacc90967bfe810e879295245a61fc7ea..51f31d3a6d496958219ac683b8de51e9a25118ca 100755 GIT binary patch delta 82490 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%0D({&$$K%LA}E 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�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 delta 86434 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
{?l z(%7jf#ye5Ff3#=82sBu!jsbX)pGDqFV4ny3K-E6bZC?WWIPU@4dp;g_1j5G%_*e%Y zrMs@^Eam`_i@GRRLh|7y9$rZJJx@IyiHPi`eJH$+f!7?`)HDp?4b@^9WKg2E+@18Bb`j=JcAYSqW=a9m-|2%0 z1b4-f6(F8nrkbd1j5q8&)#S7BNfca~s!3Bdv#RlxfcYObuMHY)mrQTe{*IQUoqt)P zmC=^6XCe_bp(d}2h|DL{Ia(+ZH`&;XH%>&3A(&3`T<_rD+GnQ+?)<(9bjkWW9V^`?TW0)qm;0;J zztHQ{*Dn~tVz)so+*?(Ht#Lp4lxK`0h(ZkOUuDD`R{KW$dtd*k8 zs67kRaL`)D8}ZoY)jnJ@W6pVtcb=#r^J`Po+Owc`8Tx7rl4^AaQ0ctjEyZ8d_~b}Y z={yl=qQ7`8hpD_BqskwurP#q|)8|ZV34Lo~i+R4C$JRavyU?wow1Ok0C@Xw=tzEC} zZXw@`s;nvhzA5G*Qa(=GQay51m+~@`EGKHc)(2@lK1EAY>#;F?SE3HhM-WnS2&wlz zIz=lyo+>ZXR#tm$cIA0rZKtMGZ&w}?Vc8XV5GCM`JP1CZR%F4Wyc*N-YIX3Zsi?vz zy-IZtg2lX=ud2JbN3%r&lesJTYb>O?WL)a*wPKIMNRh(F!q$H_H;dONSF@u>JO z0{gEjy;&{R6)^0uCY4ALm`HV0v|3B)Q=tdakR&X|waFOt*!j7d+vpD+ytZvbbFf6r znN~5I_QV4lSnk>6-$4os4!83mH7Q!Vj-Rjj7iM6lG)w}?26#@c^~B7~rzx5U_xIyO zZdENEh>2n;oj*fvN}#EO=BIy`Zs!AQI#k4Iec;!|jg4aNY~vRjH&#T7>wew*$x;mt^FPhu3(PD-ChqeUmi`uWTWbvQ2XtniP zP~)Mle4K6TeZZ%{BMeoq#;by%q?lSJHh!$Jx%xAd(PwUcf1^(U-m03^U7x_}6SuSk zE9(yK-&$U|2DWS5(k;41&jJVU*p^Zu+GDS_r&W~Oo>b9keO$#ht5^lF^EEXhhYtRd ztv{M-$^5>(59YZJ-nT6RrGUCo(@Vw9H9b`HK~hB>@vMjBJ)TPQ_hIe}^Z>PC9(>^`Dow-4Mh_eb zTnkJBP6I{)lYp4FVlAFZzHko!Rt=+49B>~n9GI(vqbnSV!1_^G55#T7Wx(Hof?ohU z4vYlu0`3J_hhn=17=uy&MYy-Y9S8S8xVOM9CN&%2E`&QC?uBp{z?}g16u8&HJq+$4 zaO;FZEK&xz6^T&Xegb7#_(`LcED?mHofFGW6343HE>C