mirror of
https://github.com/2martens/uni.git
synced 2026-05-06 11:26:25 +02:00
[CCV] Made visualize_gaussian_pyramids static
Signed-off-by: Jim Martens <github@2martens.de>
This commit is contained in:
@ -69,10 +69,20 @@ public:
|
|||||||
gauss_pyramid get_pyramid(int channel);
|
gauss_pyramid get_pyramid(int channel);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Visualizes the gaussian pyramids.
|
* Before this method can be called, pyramids have to be created via create_pyramids.
|
||||||
* They need to be created first.
|
*
|
||||||
|
* @param channel the channel you want to get (COLOR_L, COLOR_A or COLOR_B)
|
||||||
|
* @return the gaussian_pyramid for the given channel
|
||||||
*/
|
*/
|
||||||
void visualize_gaussian_pyrs();
|
gauss_pyramid get_pyramid(int channel) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Visualizes the gaussian pyramids.
|
||||||
|
*
|
||||||
|
* @param center center pyramid
|
||||||
|
* @param surround surround pyramid
|
||||||
|
*/
|
||||||
|
void static visualize_gaussian_pyrs(const lab_pyramid center, const lab_pyramid surround);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Computes the center-surround and surround-center contrasts and stores them for later use.
|
* Computes the center-surround and surround-center contrasts and stores them for later use.
|
||||||
|
|||||||
@ -31,10 +31,11 @@ lab_pyramid::lab_pyramid(cv::String image_filename) {
|
|||||||
cv::split(_inputImage_lab ,_imageChannels);
|
cv::split(_inputImage_lab ,_imageChannels);
|
||||||
};
|
};
|
||||||
|
|
||||||
lab_pyramid::lab_pyramid(cv::Mat image) {
|
lab_pyramid::lab_pyramid(const cv::Mat image) {
|
||||||
cv::cvtColor(image, _inputImage_lab, cv::COLOR_BGR2Lab);
|
image.convertTo(_inputImage_float, CV_32F);
|
||||||
_inputImage_lab.convertTo(_inputImage_float, CV_32F);
|
_inputImage_float *= 1./255;
|
||||||
cv::split(_inputImage_float, _imageChannels);
|
cv::cvtColor(_inputImage_float, _inputImage_lab, cv::COLOR_BGR2Lab);
|
||||||
|
cv::split(_inputImage_lab, _imageChannels);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lab_pyramid::create_pyramids(float sigma, int number_of_layers)
|
void lab_pyramid::create_pyramids(float sigma, int number_of_layers)
|
||||||
@ -59,6 +60,21 @@ gauss_pyramid lab_pyramid::get_pyramid(int channel)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gauss_pyramid lab_pyramid::get_pyramid(int channel) const
|
||||||
|
{
|
||||||
|
switch (channel)
|
||||||
|
{
|
||||||
|
case COLOR_L:
|
||||||
|
return _pyramids[COLOR_L];
|
||||||
|
case COLOR_A:
|
||||||
|
return _pyramids[COLOR_A];
|
||||||
|
case COLOR_B:
|
||||||
|
return _pyramids[COLOR_B];
|
||||||
|
default:
|
||||||
|
throw std::invalid_argument( "received invalid channel value, use COLOR_L, COLOR_A or COLOR_B" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void lab_pyramid::compute_dog(lab_pyramid center, lab_pyramid surround, int number_of_layers) {
|
void lab_pyramid::compute_dog(lab_pyramid center, lab_pyramid surround, int number_of_layers) {
|
||||||
_number_of_layers = number_of_layers;
|
_number_of_layers = number_of_layers;
|
||||||
|
|
||||||
@ -177,17 +193,27 @@ void lab_pyramid::visualize_dog() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void lab_pyramid::visualize_gaussian_pyrs() {
|
void lab_pyramid::visualize_gaussian_pyrs(const lab_pyramid center, const lab_pyramid surround) {
|
||||||
gauss_pyramid l = _pyramids[COLOR_L];
|
gauss_pyramid l_c = center.get_pyramid(COLOR_L);
|
||||||
gauss_pyramid a = _pyramids[COLOR_A];
|
gauss_pyramid l_s = surround.get_pyramid(COLOR_L);
|
||||||
gauss_pyramid b = _pyramids[COLOR_B];
|
gauss_pyramid a_c = center.get_pyramid(COLOR_A);
|
||||||
for (int layer = 0; layer < _number_of_layers; layer++) {
|
gauss_pyramid a_s = surround.get_pyramid(COLOR_A);
|
||||||
cv::namedWindow("gauss L");
|
gauss_pyramid b_c = center.get_pyramid(COLOR_B);
|
||||||
cv::imshow("gauss L", l.get(layer));
|
gauss_pyramid b_s = surround.get_pyramid(COLOR_B);
|
||||||
cv::namedWindow("gauss A");
|
int number_of_layers = (int) l_c.get_number_of_layers();
|
||||||
cv::imshow("gauss A", a.get(layer));
|
for (int layer = 0; layer < number_of_layers; layer++) {
|
||||||
cv::namedWindow("gauss B");
|
cv::namedWindow("L c");
|
||||||
cv::imshow("gauss B", b.get(layer));
|
cv::imshow("L c", l_c.get(layer) * 1./255);
|
||||||
|
cv::namedWindow("L s");
|
||||||
|
cv::imshow("L s", l_s.get(layer) * 1./255);
|
||||||
|
cv::namedWindow("A c");
|
||||||
|
cv::imshow("A c", a_c.get(layer) * 1./255);
|
||||||
|
cv::namedWindow("A s");
|
||||||
|
cv::imshow("A s", a_s.get(layer) * 1./255);
|
||||||
|
cv::namedWindow("B c");
|
||||||
|
cv::imshow("B c", b_c.get(layer) * 1./255);
|
||||||
|
cv::namedWindow("B s");
|
||||||
|
cv::imshow("B s", b_s.get(layer) * 1./255);
|
||||||
cv::waitKey(0);
|
cv::waitKey(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user