mirror of
https://github.com/2martens/uni.git
synced 2026-05-06 19:36:26 +02:00
[CCV] Modified LAB pyramid to work with given image
Signed-off-by: Jim Martens <github@2martens>
This commit is contained in:
@ -6,11 +6,17 @@ lab_pyramid::lab_pyramid(cv::String image_filename) {
|
||||
cv::split(_inputImage_lab ,_imageChannels);
|
||||
};
|
||||
|
||||
void lab_pyramid::create_pyramids(int number_of_layers)
|
||||
lab_pyramid::lab_pyramid(cv::Mat image) {
|
||||
cv::cvtColor(image, _inputImage_lab, cv::COLOR_RGB2Lab);
|
||||
_inputImage_lab.convertTo(_inputImage_float, CV_32F);
|
||||
cv::split(_inputImage_float, _imageChannels);
|
||||
}
|
||||
|
||||
void lab_pyramid::create_pyramids(float sigma, int number_of_layers)
|
||||
{
|
||||
_pyramids[COLOR_L] = gauss_pyramid(_imageChannels[COLOR_L], number_of_layers);
|
||||
_pyramids[COLOR_A] = gauss_pyramid(_imageChannels[COLOR_A], number_of_layers);
|
||||
_pyramids[COLOR_B] = gauss_pyramid(_imageChannels[COLOR_B], number_of_layers);
|
||||
_pyramids[COLOR_L] = gauss_pyramid(_imageChannels[COLOR_L], sigma, number_of_layers);
|
||||
_pyramids[COLOR_A] = gauss_pyramid(_imageChannels[COLOR_A], sigma, number_of_layers);
|
||||
_pyramids[COLOR_B] = gauss_pyramid(_imageChannels[COLOR_B], sigma, number_of_layers);
|
||||
}
|
||||
|
||||
gauss_pyramid lab_pyramid::get_pyramid(int channel)
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
class lab_pyramid {
|
||||
private:
|
||||
cv::Mat _inputImage_lab;
|
||||
cv::Mat _inputImage_float;
|
||||
cv::Mat _imageChannels[3];
|
||||
gauss_pyramid _pyramids[3];
|
||||
public:
|
||||
@ -21,12 +22,20 @@ public:
|
||||
*/
|
||||
lab_pyramid(cv::String image_filename);
|
||||
|
||||
/**
|
||||
* Initializes a LAB pyramid.
|
||||
*
|
||||
* @param image the image that should be used
|
||||
*/
|
||||
lab_pyramid(cv::Mat image);
|
||||
|
||||
/**
|
||||
* Creates the gaussian pyramids for all channels with the given number of layers each.
|
||||
*
|
||||
* @param sigma the sigma for the gaussian pyramids
|
||||
* @param number_of_layers number of layers for gaussian pyramid
|
||||
*/
|
||||
void create_pyramids(int number_of_layers);
|
||||
void create_pyramids(float sigma, int number_of_layers);
|
||||
|
||||
/**
|
||||
* Before this method can be called, pyramids have to be created via create_pyramids.
|
||||
|
||||
@ -1,5 +1,29 @@
|
||||
#include <iostream>
|
||||
#include <opencv2/opencv.hpp>
|
||||
#include "lab_pyramid.h"
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
if ( argc != 2 )
|
||||
{
|
||||
printf("usage: <Image_Path>\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
cv::Mat image;
|
||||
image = cv::imread(argv[1], cv::ImreadModes::IMREAD_COLOR);
|
||||
|
||||
int layers = 4;
|
||||
float sigma_center = 3;
|
||||
float sigma_surround = 5;
|
||||
|
||||
// center
|
||||
lab_pyramid pyr_center = lab_pyramid(image);
|
||||
pyr_center.create_pyramids(sigma_center, layers);
|
||||
|
||||
// surround
|
||||
lab_pyramid pyr_surround = lab_pyramid(image);
|
||||
pyr_surround.create_pyramids(sigma_surround, layers);
|
||||
|
||||
|
||||
int main() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user