[TASK] Parametrize threshold for pixel matchin in hough machine.

This commit is contained in:
Jan Philipp Timme 2016-01-07 18:45:22 +01:00
parent c3d7dfb593
commit 229aaf8d5d
2 changed files with 24 additions and 2 deletions

View File

@ -24,6 +24,8 @@ class HoughMachine {
int n_rad; int n_rad;
double d_rad; double d_rad;
int* hough_arr; int* hough_arr;
int matching_threshold;
public: public:
HoughMachine(LazyImage* original, LazyImage* working_copy) { HoughMachine(LazyImage* original, LazyImage* working_copy) {
@ -47,6 +49,13 @@ class HoughMachine {
free(this->hough_arr); free(this->hough_arr);
this->hough_arr = NULL; this->hough_arr = NULL;
} }
this->matching_threshold = 0;
};
void setMatchingThreshold(int matching_threshold) {
// If negative, pixels greater than the absolute value match.
// If positive, pixels less than the absolute value match.
this->matching_threshold = matching_threshold;
}; };
void run(int a_steps, int r_steps) { void run(int a_steps, int r_steps) {
@ -73,8 +82,12 @@ class HoughMachine {
QColor pixel = QColor::fromRgb(this->original->getPixel(u, v, LazyImage::DEFAULT)); QColor pixel = QColor::fromRgb(this->original->getPixel(u, v, LazyImage::DEFAULT));
int h, s, l; int h, s, l;
pixel.getHsl(&h, &s, &l); pixel.getHsl(&h, &s, &l);
if(l < 15) { // TODO: parameterize this if(this->matching_threshold > 0) {
this->doPixel(u, v); int threshold = this->matching_threshold;
if(l < threshold) this->doPixel(u, v);
} else {
int threshold = -this->matching_threshold;
if(l > threshold) this->doPixel(u, v);
} }
} }
} }
@ -92,6 +105,11 @@ class HoughMachine {
} }
}; };
void drawLines(int n) {
// TODO: Sort stuff in hough_arr by value, get the n top values and draw them using bresenham.
};
void debugShow() { void debugShow() {
std::cout << "Dimensions: " << this->n_ang << " x " << this->n_rad << " | " << std::endl; std::cout << "Dimensions: " << this->n_ang << " x " << this->n_rad << " | " << std::endl;

View File

@ -774,7 +774,11 @@ void ImageViewer::runHoughTransformation(void) {
logFile << "Let's run a hough transformation!" << std::endl; logFile << "Let's run a hough transformation!" << std::endl;
renewLogging(); renewLogging();
HoughMachine* hm = new HoughMachine(original, working_copy); HoughMachine* hm = new HoughMachine(original, working_copy);
hm->setMatchingThreshold(15);
hm->run(256, 256); hm->run(256, 256);
hm->drawLines(10);
delete hm; delete hm;
updateImageDisplay(); updateImageDisplay();
} }