diff --git a/core/include/aare/Frame.hpp b/core/include/aare/Frame.hpp index 27e1709..af7b111 100644 --- a/core/include/aare/Frame.hpp +++ b/core/include/aare/Frame.hpp @@ -1,5 +1,5 @@ #pragma once -#include "aare/View.hpp" +#include "aare/NDView.hpp" #include "aare/defs.hpp" #include #include @@ -40,10 +40,10 @@ class Frame { } template - View view() { + NDView view() { std::vector shape = {m_rows, m_cols}; T* data = reinterpret_cast(m_data); - return View(data, shape); + return NDView(data, shape); } ~Frame() { delete[] m_data; } diff --git a/core/include/aare/View.hpp b/core/include/aare/NDView.hpp similarity index 74% rename from core/include/aare/View.hpp rename to core/include/aare/NDView.hpp index 7f32302..a08396d 100644 --- a/core/include/aare/View.hpp +++ b/core/include/aare/NDView.hpp @@ -30,18 +30,18 @@ template std::array make_array(const std::vector class View { +template class NDView { public: - View(){}; + NDView(){}; - View(T* buffer, std::array shape) { + NDView(T* buffer, std::array shape) { buffer_ = buffer; strides_ = c_strides(shape); shape_ = shape; size_ = std::accumulate(std::begin(shape), std::end(shape), 1, std::multiplies()); } - View(T *buffer, const std::vector &shape) { + NDView(T *buffer, const std::vector &shape) { buffer_ = buffer; strides_ = c_strides(make_array(shape)); shape_ = make_array(shape); @@ -59,28 +59,28 @@ template class View { ssize_t size() const { return size_; } - View(const View &) = default; - View(View &&) = default; + NDView(const NDView &) = default; + NDView(NDView &&) = default; T *begin() { return buffer_; } T *end() { return buffer_ + size_; } T &operator()(ssize_t i) { return buffer_[i]; } T &operator[](ssize_t i) { return buffer_[i]; } - View &operator+=(const T val) { return elemenwise(val, std::plus()); } - View &operator-=(const T val) { return elemenwise(val, std::minus()); } - View &operator*=(const T val) { return elemenwise(val, std::multiplies()); } - View &operator/=(const T val) { return elemenwise(val, std::divides()); } + NDView &operator+=(const T val) { return elemenwise(val, std::plus()); } + NDView &operator-=(const T val) { return elemenwise(val, std::minus()); } + NDView &operator*=(const T val) { return elemenwise(val, std::multiplies()); } + NDView &operator/=(const T val) { return elemenwise(val, std::divides()); } - View &operator/=(const View &other) { return elemenwise(other, std::divides()); } + NDView &operator/=(const NDView &other) { return elemenwise(other, std::divides()); } - View &operator=(const T val) { + NDView &operator=(const T val) { for (auto it = begin(); it != end(); ++it) *it = val; return *this; } - View &operator=(const View &other) { + NDView &operator=(const NDView &other) { shape_ = other.shape_; strides_ = other.strides_; size_ = other.size_; @@ -98,13 +98,13 @@ template class View { std::array shape_{}; ssize_t size_{}; - template View &elemenwise(T val, BinaryOperation op) { + template NDView &elemenwise(T val, BinaryOperation op) { for (ssize_t i = 0; i != size_; ++i) { buffer_[i] = op(buffer_[i], val); } return *this; } - template View &elemenwise(const View &other, BinaryOperation op) { + template NDView &elemenwise(const NDView &other, BinaryOperation op) { for (ssize_t i = 0; i != size_; ++i) { buffer_[i] = op(buffer_[i], other.buffer_[i]); } @@ -112,5 +112,5 @@ template class View { } }; -template class View; +template class NDView; diff --git a/core/include/aare/VariableSizeClusterFinder.hpp b/core/include/aare/VariableSizeClusterFinder.hpp index af3fd7a..fcd2fc5 100644 --- a/core/include/aare/VariableSizeClusterFinder.hpp +++ b/core/include/aare/VariableSizeClusterFinder.hpp @@ -30,12 +30,12 @@ template class ClusterFinder { private: const std::array shape_; - View original_; + NDView original_; ImageData labeled_; ImageData peripheral_labeled_; ImageData binary_; // over threshold flag T threshold_; - View noiseMap; + NDView noiseMap; bool use_noise_map = false; int peripheralThresholdFactor_ = 5; int current_label; @@ -58,12 +58,12 @@ template class ClusterFinder { ImageData labeled() { return labeled_; } - void set_noiseMap(View noise_map) { noiseMap = noise_map; use_noise_map = true; } + void set_noiseMap(NDView noise_map) { noiseMap = noise_map; use_noise_map = true; } void set_peripheralThresholdFactor(int factor) { peripheralThresholdFactor_ = factor; } - void find_clusters(View img); - void find_clusters_X(View img); + void find_clusters(NDView img); + void find_clusters_X(NDView img); void rec_FillHit(int clusterIndex, int i, int j); - void single_pass(View img); + void single_pass(NDView img); void first_pass(); void second_pass(); void store_clusters(); @@ -144,7 +144,7 @@ template int ClusterFinder::check_neighbours(int i, int j) { } } -template void ClusterFinder::find_clusters(View img) { +template void ClusterFinder::find_clusters(NDView img) { original_ = img; labeled_ = 0; peripheral_labeled_ = 0; @@ -156,7 +156,7 @@ template void ClusterFinder::find_clusters(View img) { store_clusters(); } -template void ClusterFinder::find_clusters_X(View img) { +template void ClusterFinder::find_clusters_X(NDView img) { original_ = img; int clusterIndex = 0; for (int i = 0; i < shape_[0]; ++i) { @@ -214,7 +214,7 @@ template void ClusterFinder::rec_FillHit(int clusterIndex, int i } } -template void ClusterFinder::single_pass(View img) { +template void ClusterFinder::single_pass(NDView img) { original_ = img; labeled_ = 0; current_label = 0; diff --git a/core/test/wrappers.test.cpp b/core/test/wrappers.test.cpp index e2983c3..32f3046 100644 --- a/core/test/wrappers.test.cpp +++ b/core/test/wrappers.test.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include #include @@ -22,20 +22,20 @@ TEST_CASE("Frame") { delete[] data; } -TEST_CASE("View") { +TEST_CASE("NDView") { auto data = new uint16_t[100]; for (int i = 0; i < 100; i++) { data[i] = i; } SECTION("constructors") { - View ds(data, std::vector({10, 10})); + NDView ds(data, std::vector({10, 10})); for (int i = 0; i < 100; i++) { REQUIRE(ds(i / 10, i % 10) == data[i]); } } SECTION("from Frame") { Frame f(reinterpret_cast(data), 10, 10, 16); - View ds = f.view(); + NDView ds = f.view(); for (int i = 0; i < 100; i++) { REQUIRE(ds(i / 10, i % 10) == data[i]); }