Fix error in starfit model, preparation for angled version

This commit is contained in:
2019-10-11 13:16:25 +02:00
parent 702d2111cc
commit 9dacf62226
4 changed files with 198 additions and 23 deletions
+22 -3
View File
@@ -34,8 +34,9 @@ class RawImageAbs
public:
virtual ~RawImageAbs(){}
virtual bool imageStats(uint64_t *mean, double *stdDev, uint64_t *median, uint64_t *min, uint64_t *max) const = 0;
virtual void rect(int &x, int &y, int w, int h, std::vector<double> &r) const = 0;
virtual int findPeaks(uint64_t background, double distance, std::vector<Peak> &peaks) const = 0;
virtual void medianFilter() = 0;
virtual RawImageAbs* medianFilter() const = 0;
virtual void quarter() = 0;
};
@@ -125,6 +126,20 @@ public:
if(y>=m_height)y=0;
return m_img[y*m_width+x];
}
void rect(int &x, int &y, int w, int h, std::vector<double> &r) const
{
r.resize(w*h);
x -= w/2;
y -= h/2;
if(x<0)x = 0;
if(y<0)y = 0;
if(x+w >= m_width)x = m_width-w;
if(y+h >= m_height)y = m_height-h;
uint32_t d = 0;
for(int i=y;i<y+h;i++)
for(int o=x;o<x+w;o++)
r[d++] = pixel(o, i);
}
int findPeaks(uint64_t background, double distance, std::vector<Peak> &peaks) const
{
std::vector<Peak> tmpPeaks;
@@ -165,8 +180,9 @@ public:
}
return num;
}
void medianFilter()
RawImageAbs* medianFilter() const
{
RawImage<T> *ret = new RawImage<T>;
std::vector<T> tmp;
tmp.resize(m_width*m_height);
#pragma omp parallel for
@@ -181,7 +197,10 @@ public:
tmp[y*m_width+x] = array[4];
}
}
m_img = std::move(tmp);
ret->m_width = m_width;
ret->m_height = m_height;
ret->m_img = std::move(tmp);
return ret;
}
void quarter()
{