diff --git a/CSV.pro b/CSV.pro
new file mode 100644
index 0000000..c139a74
--- /dev/null
+++ b/CSV.pro
@@ -0,0 +1,35 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2014-07-10T12:35:18
+#
+#-------------------------------------------------
+
+QT += core qml
+TEMPLATE = app
+
+TARGET = CSV
+CONFIG += c++11
+CONFIG -= console
+
+SOURCES += main.cpp \
+ svimage.cpp \
+ svworker.cpp \
+ svprocessor.cpp \
+ svkernelv1.cpp \
+ svkernelv2.cpp \
+ svimageprovider.cpp
+
+HEADERS += \
+ svimage.h \
+ svworker.h \
+ svprocessor.h \
+ svabstractkernel.h \
+ svkernelv1.h \
+ svkernelv2.h \
+ svimageprovider.h
+
+RESOURCES += \
+ resource.qrc
+
+OTHER_FILES += \
+ Main.qml
diff --git a/CSV.pro.user b/CSV.pro.user
new file mode 100644
index 0000000..9213812
--- /dev/null
+++ b/CSV.pro.user
@@ -0,0 +1,260 @@
+
+
+
+
+
+ ProjectExplorer.Project.ActiveTarget
+ 0
+
+
+ ProjectExplorer.Project.EditorSettings
+
+ true
+ false
+ true
+
+ Cpp
+
+ CppGlobal
+
+
+
+ QmlJS
+
+ QmlJSGlobal
+
+
+ 2
+ UTF-8
+ false
+ 4
+ false
+ true
+ 1
+ true
+ 0
+ true
+ 0
+ 8
+ true
+ 1
+ true
+ true
+ true
+ false
+
+
+
+ ProjectExplorer.Project.PluginSettings
+
+
+
+ ProjectExplorer.Project.Target.0
+
+ Desktop
+ Desktop
+ {7246c6ab-7a87-4118-a487-ab344a31d36b}
+ 0
+ 0
+ 0
+
+ /home/andrey/workspace/Qt/build-CSV-Desktop-Debug
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ false
+ true
+
+ false
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ -w
+ -r
+
+ false
+
+
+
+ 2
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ -w
+ -r
+
+ true
+ clean
+
+
+ 1
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Debug
+
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 2
+ true
+
+
+ /home/andrey/workspace/Qt/build-CSV-Desktop-Release
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ false
+ true
+
+ false
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ -w
+ -r
+
+ false
+
+
+
+ 2
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ -w
+ -r
+
+ true
+ clean
+
+
+ 1
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Release
+
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ true
+
+ 2
+
+
+ 0
+ Deploy
+
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+ Deploy locally
+
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+
+
+ false
+ false
+ false
+ false
+ true
+ 0.01
+ 10
+ true
+ 1
+ 25
+
+ 1
+ true
+ false
+ true
+ valgrind
+
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+
+ 2
+
+ CSV
+
+ Qt4ProjectManager.Qt4RunConfiguration:/home/andrey/workspace/Qt/CSV/CSV.pro
+
+ CSV.pro
+ false
+ true
+
+ 3768
+ true
+ false
+ false
+ true
+ false
+
+ 1
+
+
+
+ ProjectExplorer.Project.TargetCount
+ 1
+
+
+ ProjectExplorer.Project.Updater.EnvironmentId
+ {35059b80-6449-4cca-8333-a4525005f807}
+
+
+ ProjectExplorer.Project.Updater.FileVersion
+ 15
+
+
diff --git a/Main.qml b/Main.qml
new file mode 100644
index 0000000..1afdd1f
--- /dev/null
+++ b/Main.qml
@@ -0,0 +1,157 @@
+import QtQuick 2.2
+import QtQuick.Window 2.1
+import QtQuick.Controls 1.1
+
+Window {
+ id: mainWindow
+ visible: true
+ width: 800
+ height: 600
+
+ Item {
+ id: leftColumn
+ width: 200
+
+ anchors.bottom: parent.bottom
+ anchors.top: parent.top
+ anchors.right: rightColumn.left
+ anchors.left: parent.left
+
+ Component {
+ id: slider
+
+ Item {
+ property alias title: sliderTitle.text
+ property alias from: sliderSlider.minimumValue
+ property alias to: sliderSlider.maximumValue
+ property alias step: sliderSlider.stepSize
+ property string name: ''
+
+ height: 50
+
+ Text {
+ id: sliderTitle
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.leftMargin: 15
+ anchors.rightMargin: 10
+ anchors.topMargin: 10
+ text: ""
+ }
+
+ Text {
+ id: sliderValue
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: sliderSlider.top
+ text: sliderSlider.value
+ }
+
+ Slider {
+ id: sliderSlider
+ anchors.left: parent.left
+ anchors.bottom: parent.bottom
+ anchors.right: parent.right
+ anchors.leftMargin: 10
+ anchors.rightMargin: 10
+ stepSize: 1
+ }
+ }
+ }
+
+ Column {
+ anchors.bottom: renderButton.top
+ anchors.top: parent.top
+ anchors.right: parent.right
+ anchors.left: parent.left
+
+ Loader {
+ id: windowSize
+ sourceComponent: slider
+ anchors.left: parent.left
+ anchors.right: parent.right
+ onLoaded: {
+ windowSize.item.title = "Window Size"
+ windowSize.item.from = 0;
+ windowSize.item.to = 10;
+ windowSize.item.step = 1;
+ }
+ }
+
+ Loader {
+ id: matchSize
+ sourceComponent: slider
+ anchors.left: parent.left
+ anchors.right: parent.right
+ onLoaded: {
+ matchSize.item.title = "Match Size"
+ matchSize.item.from = 0;
+ matchSize.item.to = 10;
+ matchSize.item.step = 1;
+ }
+ }
+
+ Loader {
+ id: errorLevel
+ sourceComponent: slider
+ anchors.left: parent.left
+ anchors.right: parent.right
+ onLoaded: {
+ errorLevel.item.title = "Error Level"
+ errorLevel.item.from = 0;
+ errorLevel.item.to = 10;
+ errorLevel.item.step = 1;
+ }
+ }
+ }
+
+ Button {
+ id: renderButton
+ //anchors.bottom: parent.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 10
+ Text {
+ anchors.centerIn: parent
+ text: "Render"
+ }
+ }
+ }
+
+ Item {
+ id: rightColumn
+ anchors.bottom: parent.bottom
+ anchors.top: parent.top
+ anchors.right: parent.right
+ anchors.left: leftColumn.right
+ TabView {
+ anchors.fill: parent
+ Tab {
+ id: imageView
+ title: "Image View"
+ Item {
+ Flickable {
+ anchors.fill: parent
+ contentWidth: image.width
+ contentHeight: image.height
+ interactive: true
+ anchors.margins: 2
+ clip: true
+
+ Item {
+ Image {
+ id: image
+ source: "img/left4.png"
+ smooth: false
+ }
+ }
+ }
+ }
+ }
+ Tab {
+ id: pclView
+ title: "PCL View"
+ }
+ }
+ }
+}
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..3dc8461
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,874 @@
+#############################################################################
+# Makefile for building: CSV
+# Generated by qmake (3.0) (Qt 5.2.1)
+# Project: CSV.pro
+# Template: app
+# Command: /usr/lib/i386-linux-gnu/qt5/bin/qmake -o Makefile CSV.pro
+#############################################################################
+
+MAKEFILE = Makefile
+
+####### Compiler, tools and options
+
+CC = gcc
+CXX = g++
+DEFINES = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB
+CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT -fPIE $(DEFINES)
+CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT -fPIE $(DEFINES)
+INCPATH = -I/usr/lib/i386-linux-gnu/qt5/mkspecs/linux-g++ -I. -I/usr/include/qt5 -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I.
+LINK = g++
+LFLAGS = -Wl,-O1
+LIBS = $(SUBLIBS) -lQt5Gui -L/usr/lib/i386-linux-gnu -lQt5Core -lGL -lpthread
+AR = ar cqs
+RANLIB =
+QMAKE = /usr/lib/i386-linux-gnu/qt5/bin/qmake
+TAR = tar -cf
+COMPRESS = gzip -9f
+COPY = cp -f
+SED = sed
+COPY_FILE = cp -f
+COPY_DIR = cp -f -R
+STRIP = strip
+INSTALL_FILE = install -m 644 -p
+INSTALL_DIR = $(COPY_DIR)
+INSTALL_PROGRAM = install -m 755 -p
+DEL_FILE = rm -f
+SYMLINK = ln -f -s
+DEL_DIR = rmdir
+MOVE = mv -f
+CHK_DIR_EXISTS= test -d
+MKDIR = mkdir -p
+
+####### Output directory
+
+OBJECTS_DIR = ./
+
+####### Files
+
+SOURCES = main.cpp \
+ svimage.cpp \
+ svmultithreadprocessor.cpp \
+ svprocessorv1.cpp \
+ svprocessorv2.cpp moc_svmultithreadprocessor.cpp \
+ moc_svprocessorv1.cpp \
+ moc_svprocessorv2.cpp
+OBJECTS = main.o \
+ svimage.o \
+ svmultithreadprocessor.o \
+ svprocessorv1.o \
+ svprocessorv2.o \
+ moc_svmultithreadprocessor.o \
+ moc_svprocessorv1.o \
+ moc_svprocessorv2.o
+DIST = /usr/lib/i386-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/common/shell-unix.conf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/common/unix.conf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/common/linux.conf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/common/gcc-base.conf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/common/g++-base.conf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/common/g++-unix.conf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/qconfig.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/qt_functions.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/qt_config.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/spec_post.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/default_pre.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/resolve_config.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/default_post.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/unix/gdb_dwarf_index.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/warn_on.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/qt.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/resources.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/moc.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/unix/thread.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/exceptions.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/yacc.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/lex.prf \
+ CSV.pro \
+ CSV.pro
+QMAKE_TARGET = CSV
+DESTDIR = #avoid trailing-slash linebreak
+TARGET = CSV
+
+
+first: all
+####### Implicit rules
+
+.SUFFIXES: .o .c .cpp .cc .cxx .C
+
+.cpp.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.cc.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.cxx.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.C.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.c.o:
+ $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
+
+####### Build rules
+
+all: Makefile $(TARGET)
+
+$(TARGET): $(OBJECTS)
+ $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
+
+Makefile: CSV.pro /usr/lib/i386-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf /usr/lib/i386-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/common/shell-unix.conf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/common/unix.conf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/common/linux.conf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/common/gcc-base.conf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/common/g++-base.conf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/common/g++-unix.conf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/qconfig.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/qt_functions.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/qt_config.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/spec_post.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/default_pre.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/resolve_config.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/default_post.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/unix/gdb_dwarf_index.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/warn_on.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/qt.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/resources.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/moc.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/unix/thread.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/exceptions.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/yacc.prf \
+ /usr/lib/i386-linux-gnu/qt5/mkspecs/features/lex.prf \
+ CSV.pro \
+ /usr/lib/i386-linux-gnu/libQt5Gui.prl \
+ /usr/lib/i386-linux-gnu/libQt5Core.prl
+ $(QMAKE) -o Makefile CSV.pro
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/spec_pre.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/common/shell-unix.conf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/common/unix.conf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/common/linux.conf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/common/gcc-base.conf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/common/g++-base.conf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/common/g++-unix.conf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/qconfig.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/qt_functions.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/qt_config.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/spec_post.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/default_pre.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/resolve_config.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/default_post.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/unix/gdb_dwarf_index.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/warn_on.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/qt.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/resources.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/moc.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/unix/opengl.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/unix/thread.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/testcase_targets.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/exceptions.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/yacc.prf:
+/usr/lib/i386-linux-gnu/qt5/mkspecs/features/lex.prf:
+CSV.pro:
+/usr/lib/i386-linux-gnu/libQt5Gui.prl:
+/usr/lib/i386-linux-gnu/libQt5Core.prl:
+qmake: FORCE
+ @$(QMAKE) -o Makefile CSV.pro
+
+qmake_all: FORCE
+
+dist:
+ @test -d .tmp/CSV1.0.0 || mkdir -p .tmp/CSV1.0.0
+ $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/CSV1.0.0/ && $(COPY_FILE) --parents svimage.h svmultithreadprocessor.h svprocessorv1.h svprocessorv2.h .tmp/CSV1.0.0/ && $(COPY_FILE) --parents main.cpp svimage.cpp svmultithreadprocessor.cpp svprocessorv1.cpp svprocessorv2.cpp .tmp/CSV1.0.0/ && (cd `dirname .tmp/CSV1.0.0` && $(TAR) CSV1.0.0.tar CSV1.0.0 && $(COMPRESS) CSV1.0.0.tar) && $(MOVE) `dirname .tmp/CSV1.0.0`/CSV1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/CSV1.0.0
+
+
+clean:compiler_clean
+ -$(DEL_FILE) $(OBJECTS)
+ -$(DEL_FILE) *~ core *.core
+
+
+####### Sub-libraries
+
+distclean: clean
+ -$(DEL_FILE) $(TARGET)
+ -$(DEL_FILE) Makefile
+
+
+mocclean: compiler_moc_header_clean compiler_moc_source_clean
+
+mocables: compiler_moc_header_make_all compiler_moc_source_make_all
+
+check: first
+
+compiler_rcc_make_all:
+compiler_rcc_clean:
+compiler_moc_header_make_all: moc_svmultithreadprocessor.cpp moc_svprocessorv1.cpp moc_svprocessorv2.cpp
+compiler_moc_header_clean:
+ -$(DEL_FILE) moc_svmultithreadprocessor.cpp moc_svprocessorv1.cpp moc_svprocessorv2.cpp
+moc_svmultithreadprocessor.cpp: /usr/include/qt5/QtCore/QThread \
+ /usr/include/qt5/QtCore/qthread.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ svimage.h \
+ /usr/include/qt5/QtGui/QImage \
+ /usr/include/qt5/QtGui/qimage.h \
+ /usr/include/qt5/QtGui/qtransform.h \
+ /usr/include/qt5/QtGui/qmatrix.h \
+ /usr/include/qt5/QtGui/qpolygon.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtGui/qpainterpath.h \
+ /usr/include/qt5/QtGui/qpaintdevice.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtGui/QRgb \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h \
+ svmultithreadprocessor.h
+ /usr/lib/i386-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/i386-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/i686-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/i686-linux-gnu/4.8/include-fixed -I/usr/include/i386-linux-gnu -I/usr/include svmultithreadprocessor.h -o moc_svmultithreadprocessor.cpp
+
+moc_svprocessorv1.cpp: svmultithreadprocessor.h \
+ /usr/include/qt5/QtCore/QThread \
+ /usr/include/qt5/QtCore/qthread.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ svimage.h \
+ /usr/include/qt5/QtGui/QImage \
+ /usr/include/qt5/QtGui/qimage.h \
+ /usr/include/qt5/QtGui/qtransform.h \
+ /usr/include/qt5/QtGui/qmatrix.h \
+ /usr/include/qt5/QtGui/qpolygon.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtGui/qpainterpath.h \
+ /usr/include/qt5/QtGui/qpaintdevice.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtGui/QRgb \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h \
+ svprocessorv1.h
+ /usr/lib/i386-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/i386-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/i686-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/i686-linux-gnu/4.8/include-fixed -I/usr/include/i386-linux-gnu -I/usr/include svprocessorv1.h -o moc_svprocessorv1.cpp
+
+moc_svprocessorv2.cpp: svprocessorv2.h
+ /usr/lib/i386-linux-gnu/qt5/bin/moc $(DEFINES) $(INCPATH) -I/usr/include/c++/4.8 -I/usr/include/i386-linux-gnu/c++/4.8 -I/usr/include/c++/4.8/backward -I/usr/lib/gcc/i686-linux-gnu/4.8/include -I/usr/local/include -I/usr/lib/gcc/i686-linux-gnu/4.8/include-fixed -I/usr/include/i386-linux-gnu -I/usr/include svprocessorv2.h -o moc_svprocessorv2.cpp
+
+compiler_moc_source_make_all:
+compiler_moc_source_clean:
+compiler_yacc_decl_make_all:
+compiler_yacc_decl_clean:
+compiler_yacc_impl_make_all:
+compiler_yacc_impl_clean:
+compiler_lex_make_all:
+compiler_lex_clean:
+compiler_clean: compiler_moc_header_clean
+
+####### Compile
+
+main.o: main.cpp /usr/include/qt5/QtCore/QCoreApplication \
+ /usr/include/qt5/QtCore/qcoreapplication.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qeventloop.h \
+ /usr/include/qt5/QtGui/QPixmap \
+ /usr/include/qt5/QtGui/qpixmap.h \
+ /usr/include/qt5/QtGui/qpaintdevice.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtGui/qcolor.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtCore/qsharedpointer.h \
+ /usr/include/qt5/QtCore/qshareddata.h \
+ /usr/include/qt5/QtCore/qsharedpointer_impl.h \
+ /usr/include/qt5/QtCore/qhash.h \
+ /usr/include/qt5/QtGui/qimage.h \
+ /usr/include/qt5/QtGui/qtransform.h \
+ /usr/include/qt5/QtGui/qmatrix.h \
+ /usr/include/qt5/QtGui/qpolygon.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtGui/qpainterpath.h \
+ svimage.h \
+ /usr/include/qt5/QtGui/QImage \
+ /usr/include/qt5/QtGui/QRgb \
+ /usr/include/qt5/QtGui/QColor \
+ svprocessorv1.h \
+ svmultithreadprocessor.h \
+ /usr/include/qt5/QtCore/QThread \
+ /usr/include/qt5/QtCore/qthread.h \
+ svprocessorv2.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
+
+svimage.o: svimage.cpp svimage.h \
+ /usr/include/qt5/QtGui/QImage \
+ /usr/include/qt5/QtGui/qimage.h \
+ /usr/include/qt5/QtGui/qtransform.h \
+ /usr/include/qt5/QtGui/qmatrix.h \
+ /usr/include/qt5/QtGui/qpolygon.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtGui/qpainterpath.h \
+ /usr/include/qt5/QtGui/qpaintdevice.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtGui/QRgb \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o svimage.o svimage.cpp
+
+svmultithreadprocessor.o: svmultithreadprocessor.cpp svmultithreadprocessor.h \
+ /usr/include/qt5/QtCore/QThread \
+ /usr/include/qt5/QtCore/qthread.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ svimage.h \
+ /usr/include/qt5/QtGui/QImage \
+ /usr/include/qt5/QtGui/qimage.h \
+ /usr/include/qt5/QtGui/qtransform.h \
+ /usr/include/qt5/QtGui/qmatrix.h \
+ /usr/include/qt5/QtGui/qpolygon.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtGui/qpainterpath.h \
+ /usr/include/qt5/QtGui/qpaintdevice.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtGui/QRgb \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o svmultithreadprocessor.o svmultithreadprocessor.cpp
+
+svprocessorv1.o: svprocessorv1.cpp svprocessorv1.h \
+ svmultithreadprocessor.h \
+ /usr/include/qt5/QtCore/QThread \
+ /usr/include/qt5/QtCore/qthread.h \
+ /usr/include/qt5/QtCore/qobject.h \
+ /usr/include/qt5/QtCore/qobjectdefs.h \
+ /usr/include/qt5/QtCore/qnamespace.h \
+ /usr/include/qt5/QtCore/qglobal.h \
+ /usr/include/qt5/QtCore/qconfig.h \
+ /usr/include/qt5/QtCore/qfeatures.h \
+ /usr/include/qt5/QtCore/qsystemdetection.h \
+ /usr/include/qt5/QtCore/qprocessordetection.h \
+ /usr/include/qt5/QtCore/qcompilerdetection.h \
+ /usr/include/qt5/QtCore/qglobalstatic.h \
+ /usr/include/qt5/QtCore/qatomic.h \
+ /usr/include/qt5/QtCore/qbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_bootstrap.h \
+ /usr/include/qt5/QtCore/qgenericatomic.h \
+ /usr/include/qt5/QtCore/qatomic_msvc.h \
+ /usr/include/qt5/QtCore/qatomic_integrity.h \
+ /usr/include/qt5/QtCore/qoldbasicatomic.h \
+ /usr/include/qt5/QtCore/qatomic_vxworks.h \
+ /usr/include/qt5/QtCore/qatomic_power.h \
+ /usr/include/qt5/QtCore/qatomic_alpha.h \
+ /usr/include/qt5/QtCore/qatomic_armv7.h \
+ /usr/include/qt5/QtCore/qatomic_armv6.h \
+ /usr/include/qt5/QtCore/qatomic_armv5.h \
+ /usr/include/qt5/QtCore/qatomic_bfin.h \
+ /usr/include/qt5/QtCore/qatomic_ia64.h \
+ /usr/include/qt5/QtCore/qatomic_mips.h \
+ /usr/include/qt5/QtCore/qatomic_s390.h \
+ /usr/include/qt5/QtCore/qatomic_sh4a.h \
+ /usr/include/qt5/QtCore/qatomic_sparc.h \
+ /usr/include/qt5/QtCore/qatomic_gcc.h \
+ /usr/include/qt5/QtCore/qatomic_x86.h \
+ /usr/include/qt5/QtCore/qatomic_cxx11.h \
+ /usr/include/qt5/QtCore/qatomic_unix.h \
+ /usr/include/qt5/QtCore/qmutex.h \
+ /usr/include/qt5/QtCore/qlogging.h \
+ /usr/include/qt5/QtCore/qflags.h \
+ /usr/include/qt5/QtCore/qtypeinfo.h \
+ /usr/include/qt5/QtCore/qtypetraits.h \
+ /usr/include/qt5/QtCore/qsysinfo.h \
+ /usr/include/qt5/QtCore/qobjectdefs_impl.h \
+ /usr/include/qt5/QtCore/qstring.h \
+ /usr/include/qt5/QtCore/qchar.h \
+ /usr/include/qt5/QtCore/qbytearray.h \
+ /usr/include/qt5/QtCore/qrefcount.h \
+ /usr/include/qt5/QtCore/qarraydata.h \
+ /usr/include/qt5/QtCore/qstringbuilder.h \
+ /usr/include/qt5/QtCore/qlist.h \
+ /usr/include/qt5/QtCore/qalgorithms.h \
+ /usr/include/qt5/QtCore/qiterator.h \
+ /usr/include/qt5/QtCore/qcoreevent.h \
+ /usr/include/qt5/QtCore/qscopedpointer.h \
+ /usr/include/qt5/QtCore/qmetatype.h \
+ /usr/include/qt5/QtCore/qvarlengtharray.h \
+ /usr/include/qt5/QtCore/qcontainerfwd.h \
+ /usr/include/qt5/QtCore/qisenum.h \
+ /usr/include/qt5/QtCore/qobject_impl.h \
+ svimage.h \
+ /usr/include/qt5/QtGui/QImage \
+ /usr/include/qt5/QtGui/qimage.h \
+ /usr/include/qt5/QtGui/qtransform.h \
+ /usr/include/qt5/QtGui/qmatrix.h \
+ /usr/include/qt5/QtGui/qpolygon.h \
+ /usr/include/qt5/QtCore/qvector.h \
+ /usr/include/qt5/QtCore/qpoint.h \
+ /usr/include/qt5/QtCore/qrect.h \
+ /usr/include/qt5/QtCore/qsize.h \
+ /usr/include/qt5/QtGui/qregion.h \
+ /usr/include/qt5/QtGui/qwindowdefs.h \
+ /usr/include/qt5/QtGui/qwindowdefs_win.h \
+ /usr/include/qt5/QtCore/qdatastream.h \
+ /usr/include/qt5/QtCore/qiodevice.h \
+ /usr/include/qt5/QtCore/qpair.h \
+ /usr/include/qt5/QtCore/qline.h \
+ /usr/include/qt5/QtGui/qpainterpath.h \
+ /usr/include/qt5/QtGui/qpaintdevice.h \
+ /usr/include/qt5/QtGui/qrgb.h \
+ /usr/include/qt5/QtCore/qstringlist.h \
+ /usr/include/qt5/QtCore/qregexp.h \
+ /usr/include/qt5/QtCore/qstringmatcher.h \
+ /usr/include/qt5/QtGui/QRgb \
+ /usr/include/qt5/QtGui/QColor \
+ /usr/include/qt5/QtGui/qcolor.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o svprocessorv1.o svprocessorv1.cpp
+
+svprocessorv2.o: svprocessorv2.cpp svprocessorv2.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o svprocessorv2.o svprocessorv2.cpp
+
+moc_svmultithreadprocessor.o: moc_svmultithreadprocessor.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_svmultithreadprocessor.o moc_svmultithreadprocessor.cpp
+
+moc_svprocessorv1.o: moc_svprocessorv1.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_svprocessorv1.o moc_svprocessorv1.cpp
+
+moc_svprocessorv2.o: moc_svprocessorv2.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_svprocessorv2.o moc_svprocessorv2.cpp
+
+####### Install
+
+install: FORCE
+
+uninstall: FORCE
+
+FORCE:
+
diff --git a/Release/makefile b/Release/makefile
deleted file mode 100644
index 0a3be5d..0000000
--- a/Release/makefile
+++ /dev/null
@@ -1,59 +0,0 @@
-################################################################################
-# Automatically-generated file. Do not edit!
-################################################################################
-
--include ../makefile.init
-
-RM := rm -rf
-
-# All of the sources participating in the build are defined here
--include sources.mk
--include src/subdir.mk
--include subdir.mk
--include objects.mk
-
-ifneq ($(MAKECMDGOALS),clean)
-ifneq ($(strip $(C++_DEPS)),)
--include $(C++_DEPS)
-endif
-ifneq ($(strip $(C_DEPS)),)
--include $(C_DEPS)
-endif
-ifneq ($(strip $(CC_DEPS)),)
--include $(CC_DEPS)
-endif
-ifneq ($(strip $(CPP_DEPS)),)
--include $(CPP_DEPS)
-endif
-ifneq ($(strip $(CXX_DEPS)),)
--include $(CXX_DEPS)
-endif
-ifneq ($(strip $(C_UPPER_DEPS)),)
--include $(C_UPPER_DEPS)
-endif
-endif
-
--include ../makefile.defs
-
-# Add inputs and outputs from these tool invocations to the build variables
-
-# All Target
-all: CSV
-
-# Tool invocations
-CSV: $(OBJS) $(USER_OBJS)
- @echo 'Building target: $@'
- @echo 'Invoking: GCC C++ Linker'
- g++ -o "CSV" $(OBJS) $(USER_OBJS) $(LIBS)
- @echo 'Finished building target: $@'
- @echo ' '
-
-# Other Targets
-clean:
- -$(RM) $(OBJS)$(C++_DEPS)$(C_DEPS)$(CC_DEPS)$(CPP_DEPS)$(EXECUTABLES)$(CXX_DEPS)$(C_UPPER_DEPS) CSV
- -@echo ' '
-
-.PHONY: all clean dependents
-.SECONDARY:
-
--include ../makefile.targets
diff --git a/Release/objects.mk b/Release/objects.mk
deleted file mode 100644
index ce28c03..0000000
--- a/Release/objects.mk
+++ /dev/null
@@ -1,8 +0,0 @@
-################################################################################
-# Automatically-generated file. Do not edit!
-################################################################################
-
-USER_OBJS :=
-
-LIBS := -lopencv_core -lpthread -lboost_system -lpcl -lpcl_visualization -lopencv_imgproc -lopencv_highgui -lopencv_legacy
-
diff --git a/Release/sources.mk b/Release/sources.mk
deleted file mode 100644
index e7f4bf1..0000000
--- a/Release/sources.mk
+++ /dev/null
@@ -1,27 +0,0 @@
-################################################################################
-# Automatically-generated file. Do not edit!
-################################################################################
-
-O_SRCS :=
-CPP_SRCS :=
-C_UPPER_SRCS :=
-C_SRCS :=
-S_UPPER_SRCS :=
-OBJ_SRCS :=
-ASM_SRCS :=
-CXX_SRCS :=
-C++_SRCS :=
-CC_SRCS :=
-OBJS :=
-C++_DEPS :=
-C_DEPS :=
-CC_DEPS :=
-CPP_DEPS :=
-EXECUTABLES :=
-CXX_DEPS :=
-C_UPPER_DEPS :=
-
-# Every subdirectory with source files must be described here
-SUBDIRS := \
-src \
-
diff --git a/Release/src/subdir.mk b/Release/src/subdir.mk
deleted file mode 100644
index afc74e1..0000000
--- a/Release/src/subdir.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-################################################################################
-# Automatically-generated file. Do not edit!
-################################################################################
-
-# Add inputs and outputs from these tool invocations to the build variables
-CPP_SRCS += \
-../src/SvImage.cpp \
-../src/SvMain.cpp \
-../src/SvMultithreadProcessor.cpp \
-../src/SvProcessorV1.cpp \
-../src/SvProcessorV2.cpp
-
-OBJS += \
-./src/SvImage.o \
-./src/SvMain.o \
-./src/SvMultithreadProcessor.o \
-./src/SvProcessorV1.o \
-./src/SvProcessorV2.o
-
-CPP_DEPS += \
-./src/SvImage.d \
-./src/SvMain.d \
-./src/SvMultithreadProcessor.d \
-./src/SvProcessorV1.d \
-./src/SvProcessorV2.d
-
-
-# Each subdirectory must supply rules for building sources it contributes
-src/%.o: ../src/%.cpp
- @echo 'Building file: $<'
- @echo 'Invoking: GCC C++ Compiler'
- g++ -std=c++11 -I/usr/include/pcl-1.7 -I/usr/include/vtk-5.8/ -I/usr/include/eigen3 -O3 -Wall -c -fmessage-length=0 -pthread -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
- @echo 'Finished building: $<'
- @echo ' '
-
-
diff --git a/cl/kernel.cl b/cl/kernel.cl
new file mode 100644
index 0000000..e8e7bd1
--- /dev/null
+++ b/cl/kernel.cl
@@ -0,0 +1,14 @@
+__kernel void ProcessLine(__global const float* a, __global const float* b, __global float* c, int iNumElements)
+{
+ // get index into global data array
+ int iGID = get_global_id(0);
+
+ // bound check (equivalent to the limit on a 'for' loop for standard/serial C code
+ if (iGID >= iNumElements)
+ {
+ return;
+ }
+
+ // add the vector elements
+ c[iGID] = a[iGID] + b[iGID];
+}
\ No newline at end of file
diff --git a/main.cpp b/main.cpp
new file mode 100644
index 0000000..3a6d384
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,46 @@
+#include
+#include
+#include
+#include
+
+
+#include
+
+#include "svimage.h"
+#include "svprocessor.h"
+#include "svimageprovider.h"
+
+int main(int argc, char *argv[])
+{
+ QGuiApplication a(argc, argv);
+ QQmlApplicationEngine engine;
+ SvImageProvider* imageProvider = new SvImageProvider();
+
+ QImage imgLeft = QPixmap("img/left8.png").toImage();
+ QImage imgRight = QPixmap("img/right8.png").toImage();
+ QImage imgStereo(imgLeft.width(), imgRight.height(), QImage::Format_RGB32);
+
+ SvImage left(imgLeft);
+ SvImage right(imgRight);
+ SvImage stereo(imgStereo);
+
+
+
+ imageProvider->addImage("left", &left);
+ imageProvider->addImage("right", &right);
+ imageProvider->addImage("result", &stereo);
+
+ engine.addImageProvider("image", imageProvider);
+ engine.load(QUrl(QStringLiteral("qrc:///Main.qml")));
+
+ /*SvProcessor proc(&left, &right, &stereo, 4);
+ proc.start();*/
+
+
+ //
+
+ //QObject *object = component.create();
+
+
+ return a.exec();
+}
diff --git a/resource.qrc b/resource.qrc
new file mode 100644
index 0000000..4e2e941
--- /dev/null
+++ b/resource.qrc
@@ -0,0 +1,6 @@
+
+
+ Main.qml
+ img/left4.png
+
+
diff --git a/src/SvImage.cpp b/src/SvImage.cpp
deleted file mode 100644
index 5f01ef6..0000000
--- a/src/SvImage.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * SvImage.cpp
- *
- * Created on: 27 июня 2014 г.
- * Author: andrey
- */
-
-#include "SvImage.h"
-
-int SvImage::getPixel(int x, int y, int channel = -1) {
- if (y >= this->image->rows || y < 0 || x >= this->image->cols || x < 0) {
- return 0;
- }
-
- uchar* pixel = this->image->ptr(y, x);
- uchar value;
-
- if (channel == -1 || channel > 2) {
- value = 0.299 * pixel[0] + 0.587 * pixel[1] + 0.114 * pixel[2];
- } else {
- value = pixel[channel];
- }
-
- return value;
-}
-
-int SvImage::getPixelHue(int x, int y) {
- uchar* pixel = this->image->ptr(y, x);
- if (x >= 0 && x < this->image->cols && y >= 0 && y < this->image->rows) {
- return abs(pixel[1] - pixel[0]) + abs(pixel[2] - pixel[1]);
- }
-
- return 0;
-}
-
-int SvImage::getPixelValue(int x, int y) {
- uchar* pixel = this->image->ptr(y, x);
- if (x >= 0 && x < this->image->cols && y >= 0 && y < this->image->rows) {
- return (pixel[0] + pixel[1] + pixel[2])/3;
- }
-
- return 0;
-}
-
-void SvImage::putPixel(int x, int y, int value)
-{
- uchar* data;
-
- if (x >= 0 && x < this->image->cols && y >= 0 && y < this->image->rows) {
- data = this->image->ptr(y, x);
- data[0] = value;
- }
-}
-
-int SvImage::getHeight() {
- return this->image->rows;
-}
-
-int SvImage::getWidth() {
- return this->image->cols;
-}
-
-Mat& SvImage::getCvMatrix() {
- return *this->image;
-}
-
-SvImage::SvImage(Mat& image) {
- this->image = ℑ
-}
-
-SvImage::~SvImage() {
-
-}
-
diff --git a/src/SvImage.h b/src/SvImage.h
deleted file mode 100644
index 1166f0b..0000000
--- a/src/SvImage.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * SvImage.h
- *
- * Created on: 27 июня 2014 г.
- * Author: andrey
- */
-
-#ifndef SVIMAGE_H_
-#define SVIMAGE_H_
-
-#include
-
-using namespace cv;
-
-class SvImage {
-
-protected:
- Mat* image;
-
-public:
- int getPixel(int x, int y, int channel);
- int getPixelHue(int x, int y);
- int getPixelValue(int x, int y);
- void putPixel(int x, int y, int val);
-
- int getHeight();
- int getWidth();
- Mat& getCvMatrix();
-
- SvImage(Mat& image);
- virtual ~SvImage();
-};
-
-#endif /* SVIMAGE_H_ */
diff --git a/src/SvMain.cpp b/src/SvMain.cpp
deleted file mode 100644
index 0f0cf9c..0000000
--- a/src/SvMain.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-//============================================================================
-// Name : CSV.cpp
-// Author : Andrey
-// Version :
-// Copyright : Your copyright notice
-// Description : Computer Stereo Vision in C++, Ansi-style
-//============================================================================
-
-#include
-#include "SvImage.h"
-#include "SvProcessorV1.h"
-#include "SvProcessorV2.h"
-
-#include
-#include
-#include
-
-//#include
-//#include
-//#include
-//#include
-//#include
-//#include
-
-using namespace cv;
-
-void CallBackFunc(int event, int x, int y, int flags, void* userdata)
-{
- if (event == EVENT_LBUTTONDOWN ) {
-
- } else if ( event == EVENT_RBUTTONDOWN ) {
-
- } else if ( event == EVENT_MBUTTONDOWN ) {
-
- } else if ( event == EVENT_MOUSEMOVE ) {
-
- }
-}
-
-int main(int argc, char** argv) {
- Mat matLeft = imread("img/left8.png", 1);
- Mat matRight = imread("img/right8.png", 1);
- Mat matStereo(Mat::zeros(matLeft.rows, matLeft.cols, CV_8U));
-
- SvImage left(matLeft);
- SvImage right(matRight);
- SvImage stereo(matStereo);
-
- int line = 0;
-
- SvProcessorV2 proc[4];
-
- for (int i = 0; i < 4; i++) {
- proc[i].setLeftImage(left);
- proc[i].setRightImage(right);
- }
-
- while (line < stereo.getHeight()) {
- for (int i = 0; i < 4; i++) {
- if (line < stereo.getHeight() && !proc[i].isActive()) {
- proc[i].run(stereo, line++);
- }
- }
- }
-
- //pcl::PointXYZRGB point;
- //pcl::PointCloud::Ptr cloud(new pcl::PointCloud);
- //pcl::PointCloud::Ptr cloud_filtered (new pcl::PointCloud);
-
- /*cloud->resize(stereo.getHeight() * stereo.getWidth());
-
- for (int y = 0; y < stereo.getHeight(); y++) {
- for (int x = 0; x < stereo.getWidth(); x++) {
- int i = stereo.getWidth() * y + x;
- int value = stereo.getPixel(x, y, 0);
- if (value) {
- cloud->points[i].x = (x - (stereo.getWidth() / 2.0))/100.0;
- cloud->points[i].y = (-y + (stereo.getHeight() / 2.0))/100.0;
- cloud->points[i].z = (-stereo.getPixel(x, y, 0) * 6.0)/100.0;
-
- cloud->points[i].r = left.getPixel(x, y, 2);
- cloud->points[i].g = left.getPixel(x, y, 1);
- cloud->points[i].b = left.getPixel(x, y, 0);
- }
- }
- }*/
-/*
- pcl::StatisticalOutlierRemoval sor;
- sor.setInputCloud(cloud);
- sor.setMeanK(50);
- sor.setStddevMulThresh(1.0);
- sor.filter(*cloud_filtered);
-*/
-
- /*pcl::visualization::CloudViewer viewer("Simple Cloud Viewer");
- viewer.showCloud(cloud);
- while (!viewer.wasStopped ())
- {
- }*/
-
- imshow("Display Image", stereo.getCvMatrix());
- //setMouseCallback("Display Image", CallBackFunc, NULL);
- waitKey();
-
- return 0;
-}
diff --git a/src/SvMultithreadProcessor.cpp b/src/SvMultithreadProcessor.cpp
deleted file mode 100644
index 273bff9..0000000
--- a/src/SvMultithreadProcessor.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * SvMultithreadProcessor.cpp
- *
- * Created on: 09 июля 2014 г.
- * Author: andrey
- */
-
-#include "SvMultithreadProcessor.h"
-
-SvMultithreadProcessor::SvMultithreadProcessor(SvImage& left, SvImage& right) {
- m_left = &left;
- m_right = &right;
- m_stereo = NULL;
- m_line = 0;
-}
-
-SvMultithreadProcessor::SvMultithreadProcessor() {
-
-}
-
-int SvMultithreadProcessor::run(SvImage& stereo, int line) {
- m_stereo = &stereo;
- m_line = line;
- m_thread = std::thread(&SvMultithreadProcessor::process, this);
-
- return 0;
-}
-
-void SvMultithreadProcessor::process() {
- exec();
- m_thread.detach();
-}
-
-void SvMultithreadProcessor::exec() {
-
-}
-
-SvMultithreadProcessor::~SvMultithreadProcessor() {
- if (m_thread.joinable()) {
- m_thread.detach();
- }
-}
-
diff --git a/src/SvMultithreadProcessor.h b/src/SvMultithreadProcessor.h
deleted file mode 100644
index 6295f98..0000000
--- a/src/SvMultithreadProcessor.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * SvMultithreadProcessor.h
- *
- * Created on: 09 июля 2014 г.
- * Author: andrey
- */
-
-#ifndef SVMULTITHREADPROCESSOR_H_
-#define SVMULTITHREADPROCESSOR_H_
-
-#include
-#include "SvImage.h"
-
-class SvMultithreadProcessor {
-
-protected:
- SvImage* m_left;
- SvImage* m_right;
- SvImage* m_stereo;
-
- std::thread m_thread;
- int m_line;
-
-public:
-
- void setLeftImage(SvImage& image) { m_left = ℑ}
- void setRightImage(SvImage& image) { m_right = ℑ}
- bool isActive() { return m_thread.joinable(); }
- void join() { m_thread.join(); }
- void detach() { m_thread.detach(); }
-
- int run(SvImage& stereo, int line);
- void process();
- virtual void exec();
-
- SvMultithreadProcessor(SvImage& left, SvImage& right);
- SvMultithreadProcessor();
-
- virtual ~SvMultithreadProcessor();
-};
-
-#endif /* SVMULTITHREADPROCESSOR_H_ */
diff --git a/src/SvProcessorV1.cpp b/src/SvProcessorV1.cpp
deleted file mode 100644
index 73a1928..0000000
--- a/src/SvProcessorV1.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * SvProcessor.cpp
- *
- * Created on: 27 июня 2014 г.
- * Author: andrey
- */
-
-#include "SvProcessorV1.h"
-
-int SvProcessorV1::getPixelColor(int cursor) {
- if (cursor == 0) {
- return 0;
- }
-
- return ((10 * m_left->getWidth()) / (2.0 * 0.9 * cursor ));
-}
-/*
-int SvProcessorV1::match(int x, int y, int j) {
- int error = 0;
-
- for (int i = 0; i <= 1; i++) {
- for (int g = 0; g <= 2; g++) {
- error += diff(x + i, y + g, x + i + j, y + g);
- }
- }
-
- return error;
-}*/
-
-int SvProcessorV1::diff(int lx, int ly, int rx, int ry) {
- int Rvalue, Gvalue, Bvalue, color;
-
- Rvalue = abs(m_left->getPixel(lx, ly, 0) - m_right->getPixel(rx, ry, 0));
- Gvalue = abs(m_left->getPixel(lx, ly, 1) - m_right->getPixel(rx, ry, 1));
- Bvalue = abs(m_left->getPixel(lx, ly, 2) - m_right->getPixel(rx, ry, 2));
- color = abs(Gvalue - Rvalue) + abs(Bvalue - Gvalue);
-
- return (Gvalue + Rvalue + Bvalue) +
- color * 4;
-}
-
-int SvProcessorV1::match(int x, int y, int j) {
- int error = 0;
- int ms = 4;
- int c = diff(x, y, x + j, y),
- l = 0, r = 0, t = 0, b = 0;
-
- error = c;
-
- for (int i = 1; i <= ms; i++) {
- l += diff(x - i, y, x + j - i, y);
- r += diff(x + i, y, x + j + i, y);
- t += diff(x, y - i, x + j, y - i);
- b += diff(x, y + i, x + j, y + i);
- }
-
- error += l > r ? r : l;
- error += t > b ? b : t;
- //error += l + r + b + t;
-
- return error;
-}
-
-void SvProcessorV1::exec() {
-
-}
-
diff --git a/src/SvProcessorV1.h b/src/SvProcessorV1.h
deleted file mode 100644
index b045389..0000000
--- a/src/SvProcessorV1.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * SvProcessor.h
- *
- * Created on: 27 июня 2014 г.
- * Author: andrey
- */
-
-#ifndef SVPROCESSORV1_H_
-#define SVPROCESSORV1_H_
-
-#include
-#include
-#include "SvImage.h"
-#include "SvMultithreadProcessor.h"
-
-using namespace std;
-
-class SvProcessorV1 : public SvMultithreadProcessor {
-
-protected:
- const int windowSize = 90;
-
-public:
- int diff(int lx, int ly, int rx, int ry);
- int match(int x, int y, int i);
- void exec();
-
- int getPixelColor(int cursor);
-};
-
-#endif /* SVPROCESSORV1_H_ */
diff --git a/src/SvProcessorV2.cpp b/src/SvProcessorV2.cpp
deleted file mode 100644
index cc9c0f0..0000000
--- a/src/SvProcessorV2.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * SvProcessor.cpp
- *
- * Created on: 27 июня 2014 г.
- * Author: andrey
- */
-
-#include "SvProcessorV2.h"
-
-void SvProcessorV2::exec() {
-
-}
diff --git a/src/SvProcessorV2.h b/src/SvProcessorV2.h
deleted file mode 100644
index b92fd5c..0000000
--- a/src/SvProcessorV2.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * SvProcessor.h
- *
- * Created on: 27 июня 2014 г.
- * Author: andrey
- */
-
-#ifndef SVPROCESSOR_H_
-#define SVPROCESSOR_H_
-
-#include
-#include "SvImage.h"
-#include "SvMultithreadProcessor.h"
-
-class SvProcessorV2 : public SvMultithreadProcessor {
-
-protected:
-
-public:
- void exec();
-};
-
-#endif /* SVPROCESSOR_H_ */
diff --git a/svabstractkernel.h b/svabstractkernel.h
new file mode 100644
index 0000000..fa71161
--- /dev/null
+++ b/svabstractkernel.h
@@ -0,0 +1,22 @@
+#ifndef SVABSTRACTKERNEL_H
+#define SVABSTRACTKERNEL_H
+
+#include "svimage.h"
+
+class SvAbstractKernel
+{
+
+protected:
+ SvImage* m_left;
+ SvImage* m_right;
+ SvImage* m_result;
+
+public:
+ void setLeftImage(SvImage* image) {m_left = image;}
+ void setRightImage(SvImage* image) {m_right = image;}
+ void setResultImage(SvImage* image) {m_result = image;}
+ virtual void exec(int line) = 0;
+ virtual ~SvAbstractKernel() {}
+};
+
+#endif // SVABSTRACTKERNEL_H
diff --git a/svimage.cpp b/svimage.cpp
new file mode 100644
index 0000000..fbac61d
--- /dev/null
+++ b/svimage.cpp
@@ -0,0 +1,89 @@
+#include "svimage.h"
+
+int SvImage::getPixel(int x, int y, int channel = -1) {
+ if (y >= m_image->height() ||
+ y < 0 ||
+ x >= m_image->width()
+ || x < 0) {
+
+ return 0;
+ }
+
+ QRgb rgb = m_image->pixel(x, y);
+
+ switch (channel) {
+ case 0:
+ return qRed(rgb);
+ case 1:
+ return qGreen(rgb);
+ case 2:
+ return qBlue(rgb);
+ default:
+ return qGray(rgb);
+ }
+}
+
+int SvImage::getPixelHue(int x, int y) {
+ if (y >= m_image->height() ||
+ y < 0 ||
+ x >= m_image->width()
+ || x < 0) {
+
+ return 0;
+ }
+
+ QRgb rgb = m_image->pixel(x, y);
+ QColor color(rgb);
+
+ return color.hue();
+}
+
+int SvImage::getPixelValue(int x, int y) {
+ if (y >= m_image->height() ||
+ y < 0 ||
+ x >= m_image->width()
+ || x < 0) {
+
+ return 0;
+ }
+
+ QRgb rgb = m_image->pixel(x, y);
+ QColor color(rgb);
+
+ return color.value();
+}
+
+void SvImage::putPixel(int x, int y, int value)
+{
+ if (y >= m_image->height() ||
+ y < 0 ||
+ x >= m_image->width()
+ || x < 0) {
+
+ return;
+ }
+
+ QColor color(value, value, value);
+
+ m_image->setPixel(x, y, color.rgb());
+}
+
+unsigned int SvImage::getHeight() {
+ return m_image->height();
+}
+
+unsigned int SvImage::getWidth() {
+ return m_image->width();
+}
+
+QImage& SvImage::getImage() {
+ return *m_image;
+}
+
+SvImage::SvImage(QImage& image) {
+ m_image = ℑ
+}
+
+SvImage::~SvImage() {
+
+}
diff --git a/svimage.h b/svimage.h
new file mode 100644
index 0000000..20847f1
--- /dev/null
+++ b/svimage.h
@@ -0,0 +1,28 @@
+#ifndef SVIMAGE_H
+#define SVIMAGE_H
+
+#include
+#include
+#include
+
+class SvImage
+{
+protected:
+ QImage* m_image;
+
+public:
+ int getPixel(int x, int y, int channel);
+ int getPixelHue(int x, int y);
+ int getPixelValue(int x, int y);
+ void putPixel(int x, int y, int val);
+
+ unsigned int getHeight();
+ unsigned int getWidth();
+
+ QImage& getImage();
+
+ SvImage(QImage& image);
+ virtual ~SvImage();
+};
+
+#endif // SVIMAGE_H
diff --git a/svimageprovider.cpp b/svimageprovider.cpp
new file mode 100644
index 0000000..9df38fb
--- /dev/null
+++ b/svimageprovider.cpp
@@ -0,0 +1,27 @@
+#include "svimageprovider.h"
+
+SvImageProvider::SvImageProvider():
+ QQuickImageProvider(QQuickImageProvider::Image)
+{
+
+}
+
+QImage SvImageProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize)
+{
+ Q_UNUSED(requestedSize)
+
+ SvImage* image = m_images[id];
+
+ if (image) {
+ *size = QSize(image->getWidth(), image->getHeight());
+
+ return image->getImage();
+ }
+
+ return QImage(0, 0, QImage::Format_RGB32);
+}
+
+void SvImageProvider::addImage(const QString &name, SvImage *image)
+{
+ m_images[name] = image;
+}
diff --git a/svimageprovider.h b/svimageprovider.h
new file mode 100644
index 0000000..9f0f0b7
--- /dev/null
+++ b/svimageprovider.h
@@ -0,0 +1,20 @@
+#ifndef SVIMAGEPROVIDER_H
+#define SVIMAGEPROVIDER_H
+
+#include
+#include
+
+#include "svimage.h"
+
+class SvImageProvider : public QQuickImageProvider
+{
+protected:
+ QHash m_images;
+
+public:
+ SvImageProvider();
+ virtual QImage requestImage(const QString &id, QSize *size, const QSize& requestedSize);
+ void addImage(const QString &name, SvImage* image);
+};
+
+#endif // SVIMAGEPROVIDER_H
diff --git a/svkernelv1.cpp b/svkernelv1.cpp
new file mode 100644
index 0000000..e078d85
--- /dev/null
+++ b/svkernelv1.cpp
@@ -0,0 +1,97 @@
+#include "svkernelv1.h"
+
+SvKernelV1::SvKernelV1()
+{
+
+}
+
+SvKernelV1::~SvKernelV1()
+{
+
+}
+
+
+int SvKernelV1::getPixelColor(int cursor)
+{
+ if (cursor == 0) {
+ return 0;
+ }
+
+ return ((10 * m_left->getWidth()) / (2.0 * 0.9 * cursor ));
+}
+
+int SvKernelV1::diff(int lx, int ly, int rx, int ry)
+{
+ int Rvalue, Gvalue, Bvalue, color;
+
+ Rvalue = abs(m_left->getPixel(lx, ly, 0) - m_right->getPixel(rx, ry, 0));
+ Gvalue = abs(m_left->getPixel(lx, ly, 1) - m_right->getPixel(rx, ry, 1));
+ Bvalue = abs(m_left->getPixel(lx, ly, 2) - m_right->getPixel(rx, ry, 2));
+ color = abs(Gvalue - Rvalue) + abs(Bvalue - Gvalue);
+
+ return (Gvalue + Rvalue + Bvalue) +
+ color * 4;
+}
+
+int SvKernelV1::match(int x, int y, int j)
+{
+ int error = 0;
+ int ms = 4;
+ int c = diff(x, y, x + j, y),
+ l = 0, r = 0, t = 0, b = 0;
+
+ error = c;
+
+ for (int i = 1; i <= ms; i++) {
+ l += diff(x - i, y, x + j - i, y);
+ r += diff(x + i, y, x + j + i, y);
+ t += diff(x, y - i, x + j, y - i);
+ b += diff(x, y + i, x + j, y + i);
+ }
+
+ error += l > r ? r : l;
+ error += t > b ? b : t;
+ //error += l + r + b + t;
+
+ return error;
+}
+
+void SvKernelV1::exec(int line)
+{
+ unsigned int x;
+ int cursor, closest, tmp;
+ int minErrorValue, tmpSmoothed, matched;
+ //int dist;
+
+ cursor = 0;
+
+ for (x = 0; x < m_result->getWidth(); x++) {
+ closest = -1; minErrorValue = -1;matched=0;
+ minErrorValue=-1;
+
+ for (int i = 1; i < m_windowSize; i++) {
+ //dist = (abs(cursor - i));
+
+ tmp = match(x, line, i);
+
+ tmpSmoothed = tmp;// + (dist) * (1.0/diff);
+
+ if (tmpSmoothed < minErrorValue || minErrorValue == -1) {
+ minErrorValue = tmpSmoothed;
+ closest = i;
+ matched = 1;
+ } else if (tmpSmoothed == minErrorValue) {
+ if (abs(cursor - i) < abs(cursor - closest)) {
+ closest = i;
+ matched++;
+ }
+ }
+ }
+
+ if (matched == 1) {
+ cursor = closest;
+ }
+
+ m_result->putPixel(x, line, getPixelColor(cursor));
+ }
+}
diff --git a/svkernelv1.h b/svkernelv1.h
new file mode 100644
index 0000000..4a11ca8
--- /dev/null
+++ b/svkernelv1.h
@@ -0,0 +1,23 @@
+#ifndef SVKERNELV1_H
+#define SVKERNELV1_H
+
+#include "svabstractkernel.h"
+
+class SvKernelV1: public SvAbstractKernel
+{
+
+protected:
+ int m_windowSize = 90;
+
+public:
+ void exec(int line) override;
+ SvKernelV1();
+ virtual ~SvKernelV1();
+
+protected:
+ int getPixelColor(int cursor);
+ int diff(int lx, int ly, int rx, int ry);
+ int match(int x, int y, int i);
+};
+
+#endif // SVKERNELV1_H
diff --git a/svkernelv2.cpp b/svkernelv2.cpp
new file mode 100644
index 0000000..1995176
--- /dev/null
+++ b/svkernelv2.cpp
@@ -0,0 +1,16 @@
+#include "svkernelv2.h"
+
+SvKernelV2::SvKernelV2()
+{
+
+}
+
+SvKernelV2::~SvKernelV2()
+{
+
+}
+
+void SvKernelV2::exec(int line)
+{
+
+}
diff --git a/svkernelv2.h b/svkernelv2.h
new file mode 100644
index 0000000..6411f26
--- /dev/null
+++ b/svkernelv2.h
@@ -0,0 +1,14 @@
+#ifndef SVKERNELV2_H
+#define SVKERNELV2_H
+
+#include "svabstractkernel.h"
+
+class SvKernelV2: public SvAbstractKernel
+{
+public:
+ SvKernelV2();
+ virtual ~SvKernelV2();
+ void exec(int line) override;
+};
+
+#endif // SVKERNELV2_H
diff --git a/svprocessor.cpp b/svprocessor.cpp
new file mode 100644
index 0000000..8a774e6
--- /dev/null
+++ b/svprocessor.cpp
@@ -0,0 +1,74 @@
+#include "svprocessor.h"
+
+SvProcessor::SvProcessor(QObject *parent):
+ QObject(parent)
+{
+
+}
+
+SvProcessor::SvProcessor(SvImage* left, SvImage* right, SvImage* result, int numberOfWorkers, int version)
+{
+ unsigned int i;
+
+ if (version == 1) {
+ m_kernel = new SvKernelV1();
+ } else if (version == 2) {
+ m_kernel = new SvKernelV2();
+ }
+
+ m_kernel->setLeftImage(left);
+ m_kernel->setRightImage(right);
+ m_kernel->setResultImage(result);
+
+ m_numberOfWorkers = numberOfWorkers;
+ m_workers = new SvWorker[m_numberOfWorkers];
+ m_threads = new QThread[m_numberOfWorkers];
+
+ for (i = 0; i < m_numberOfWorkers; i++) {
+ m_workers[i].setId(i);
+ m_workers[i].setKernel(m_kernel);
+ m_workers[i].moveToThread(&m_threads[i]);
+
+ connect(this, &SvProcessor::stopped, &m_workers[i], &SvWorker::stop);
+ connect(this, &SvProcessor::started, &m_workers[i], &SvWorker::start);
+ connect(&m_workers[i], &SvWorker::finished, this, &SvProcessor::workerFinished);
+ }
+
+ for (i = 0; i < result->getHeight(); i++) {
+ m_workers[i].addTask(i % m_numberOfWorkers);
+ }
+}
+SvProcessor::~SvProcessor()
+{
+ delete m_kernel;
+ delete[] m_workers;
+}
+
+void SvProcessor::workerFinished(int workerId)
+{
+ Q_UNUSED(workerId)
+
+ m_workersFinished++;
+ if (m_workersFinished == m_numberOfWorkers) {
+ emit finished(m_startTime - 0);
+ }
+}
+
+void SvProcessor::start()
+{
+ unsigned int i;
+
+ m_startTime = 0;
+ m_workersFinished = 0;
+
+ for (i = 0; i < m_numberOfWorkers; i++) {
+ m_threads[i].start();
+ }
+
+ emit started();
+}
+
+void SvProcessor::stop()
+{
+ emit stopped(m_startTime - 0);
+}
diff --git a/svprocessor.h b/svprocessor.h
new file mode 100644
index 0000000..dc45214
--- /dev/null
+++ b/svprocessor.h
@@ -0,0 +1,44 @@
+#ifndef SVPROCESSOR_H
+#define SVPROCESSOR_H
+
+#include
+#include
+
+#include "svimage.h"
+#include "svworker.h"
+#include "svabstractkernel.h"
+#include "svkernelv1.h"
+#include "svkernelv2.h"
+
+class SvProcessor: public QObject
+{
+ Q_OBJECT
+
+protected:
+ QThread* m_threads;
+ SvWorker* m_workers;
+ SvAbstractKernel* m_kernel;
+ unsigned int m_numberOfWorkers;
+ unsigned int m_workersFinished;
+ int m_startTime;
+
+public:
+ explicit SvProcessor(QObject *parent = 0);
+ SvProcessor(SvImage *left, SvImage *right, SvImage *result, int numberOfWorkers = 1, int version = 1);
+ ~SvProcessor();
+ void execute();
+
+protected slots:
+ void workerFinished(int workerId);
+
+public slots:
+ void start();
+ void stop();
+
+signals:
+ void started();
+ void finished(int elapsedTime);
+ void stopped(int elapsedTime);
+};
+
+#endif // SVPROCESSOR_H
diff --git a/svworker.cpp b/svworker.cpp
new file mode 100644
index 0000000..1e3f0b0
--- /dev/null
+++ b/svworker.cpp
@@ -0,0 +1,26 @@
+#include "svworker.h"
+
+SvWorker::SvWorker(QObject *parent) :
+ QObject(parent)
+{
+
+}
+
+SvWorker::SvWorker(SvAbstractKernel* kernel)
+{
+ m_kernel = kernel;
+}
+
+void SvWorker::stop()
+{
+
+}
+
+void SvWorker::start()
+{
+ for (int i: m_tasks) {
+ m_kernel->exec(i);
+ }
+
+ emit finished(m_id);
+}
diff --git a/svworker.h b/svworker.h
new file mode 100644
index 0000000..87a10d8
--- /dev/null
+++ b/svworker.h
@@ -0,0 +1,36 @@
+#ifndef SVWORKER_H
+#define SVWORKER_H
+
+#include
+#include
+
+#include "svabstractkernel.h"
+#include "svimage.h"
+
+class SvWorker : public QObject
+{
+ Q_OBJECT
+
+protected:
+ int m_id;
+ SvAbstractKernel* m_kernel;
+ QList m_tasks;
+
+public:
+ explicit SvWorker(QObject *parent = 0);
+ SvWorker(SvAbstractKernel* kernel);
+
+ void setId(int id) {m_id = id;}
+ void addTask(int line) {m_tasks << line;}
+ void setKernel(SvAbstractKernel* kernel) {m_kernel = kernel;}
+
+signals:
+ void finished(int id);
+
+public slots:
+ void stop();
+ void start();
+
+};
+
+#endif // SVWORKER_H