18 #ifndef PIC_FILTERING_FILTER_HPP 19 #define PIC_FILTERING_FILTER_HPP 21 #ifndef PIC_DISABLE_THREAD 27 #include "../image.hpp" 28 #include "../image_vec.hpp" 29 #include "../util/tile_list.hpp" 30 #include "../util/string.hpp" 85 f_data.
nSrc = int(src.size());
87 for(
int k = box->
z0; k < box->z1; k++) {
90 for(
int j = box->
y0; j < box->y1; j++) {
93 for(
int i = box->
x0; i < box->x1; i++) {
95 f_data.
out = (*dst)(i, j);
204 width = imgIn[0]->width;
205 height = imgIn[0]->height;
206 channels = imgIn[0]->channels;
207 frames = imgIn[0]->frames;
223 imgOut =
new Image(
f, w, h, c);
225 bool bSame = (imgOut->
width == w) &&
235 imgOut =
new Image(
f, w, h, c);
252 if(asSingle || flt->
filters.empty()) {
255 for(
unsigned int i = 0; i < flt->
filters.size(); i++) {
267 this->param_f.insert(this->param_f.begin(),
param_f.begin(),
param_f.end());
295 std::string outputName = nameIn;
297 size_t found = outputName.find(
".");
299 if(found != std::string::npos) {
300 outputName.erase(outputName.end() - 4, outputName.end());
303 outputName +=
"_filtered_";
305 outputName +=
".pfm";
317 if(imgOut2->
data == NULL) {
319 imgOut =
Process(imgIn, imgOut);
320 imgOut->
Write(outputName);
340 unsigned int currentTile = tiles->
getNext();
342 if(currentTile < tiles->tiles.
size()) {
364 int numCores = std::thread::hardware_concurrency();
366 std::thread **thrd =
new std::thread*[numCores];
369 for(
int i = 0; i < numCores; i++) {
370 thrd[i] =
new std::thread(
375 for(
int i = 0; i < numCores; i++) {
PIC_INLINE bool ImageVecCheck(ImageVec &imgIn, int minInputImages)
ImageVecCheck.
Definition: image_vec.hpp:147
The BBox class manages the creation of bounding boxes for images.
Definition: bbox.hpp:29
int y
Definition: filter.hpp:39
float * data
data is the main buffer where pixel values are stored.
Definition: filter_radial_basis_function.hpp:91
virtual void changePass(int pass, int tPass)
changePass changes the pass direction.
Definition: filter.hpp:152
int frames
Definition: filter_radial_basis_function.hpp:80
std::vector< Image * > ImageVec
ImageVec an std::vector of pic::Image.
Definition: filter_radial_basis_function.hpp:29
std::vector< float > param_f
Definition: filter.hpp:54
virtual void OutputSize(ImageVec imgIn, int &width, int &height, int &channels, int &frames)
OutputSize.
Definition: filter.hpp:202
int channels
Definition: image.hpp:80
std::vector< Image * > ImageVec
ImageVec an std::vector of pic::Image.
Definition: image_vec.hpp:29
int x0
Definition: bbox.hpp:32
void insertFilter(Filter *flt, bool asSingle=false)
insertFilter
Definition: filter.hpp:246
The Filter class.
Definition: filter.hpp:50
virtual Image * setupAux(ImageVec imgIn, Image *imgOut)
setupAux
The Image class stores an image as buffer of float.
Definition: filter_radial_basis_function.hpp:60
virtual void ProcessBBox(Image *dst, ImageVec src, BBox *box)
ProcessBBox.
Definition: filter.hpp:80
Image * allocateOutputMemory(ImageVec imgIn, Image *imgOut, bool bDelete)
allocateOutputMemory
Definition: filter.hpp:217
Definition: filter.hpp:37
int frames
Definition: image.hpp:80
int minInputImages
Definition: filter.hpp:56
virtual std::string signature()
signature returns the signature for the filter.
Definition: filter.hpp:158
float scale
Definition: filter.hpp:53
The BBox class manages the creation of bounding boxes for images.
Definition: filter_radial_basis_function.hpp:29
#define TILE_SIZE
Definition: filter_radial_basis_function.hpp:35
int checkHalfSize(int size)
checkHalfSize
Definition: filter.hpp:168
bool bDelete
Definition: filter.hpp:120
Image * dst
Definition: filter.hpp:42
bool Write(std::string nameFile, LDR_type typeWrite, int writerCounter)
Write saves an Image into a file on the disk.
Definition: filter_radial_basis_function.hpp:1924
float * out
Definition: filter.hpp:40
int z
Definition: filter.hpp:39
Image * cachedProcess(ImageVec imgIn, Image *imgOut, std::string nameIn)
CachedProcess.
int y0
Definition: bbox.hpp:32
~Filter()
Definition: filter.hpp:134
The TileList class.
Definition: tile_list.hpp:33
Image * ProcessP(ImageVec imgIn, Image *imgOut)
ProcessP.
int x
Definition: filter.hpp:39
#define PIC_INLINE
Definition: base.hpp:33
std::vector< Filter * > filters
Definition: filter.hpp:121
int width
Definition: filter_radial_basis_function.hpp:80
virtual void f(FilterFData *data)
f
Definition: filter.hpp:69
The Image class stores an image as buffer of float.
Definition: image.hpp:60
void assign(const Image *imgIn)
assign
Definition: filter_radial_basis_function.hpp:1082
void setFloatParameters(std::vector< float > param_f)
setFloatParameters sets float parameters.
Definition: filter.hpp:265
uint getNext()
getNext returns the index of the next tile to process.
Definition: filter_radial_basis_function.hpp:152
ImageVec src
Definition: filter.hpp:43
int nSrc
Definition: filter.hpp:44
Definition: bilateral_separation.hpp:25
uint size()
size
Definition: filter_radial_basis_function.hpp:165
int z0
Definition: filter_radial_basis_function.hpp:32
virtual void release()
release
Definition: filter.hpp:142
virtual void ProcessAux(ImageVec imgIn, Image *imgOut, TileList *tiles)
ProcessAux.
int z1
Definition: filter_radial_basis_function.hpp:32
int z0
Definition: bbox.hpp:32
bool checkInput(ImageVec &imgIn)
checkInput
int width
Definition: image.hpp:80
Filter()
Filter.
Definition: filter.hpp:126
int height
Definition: image.hpp:80
BBox getBBox(int index)
genBBox
Definition: filter_radial_basis_function.hpp:145
virtual Image * Process(ImageVec imgIn, Image *imgOut)
Process.
std::string getOutPutName(std::string nameIn)
getOutPutName
int height
Definition: filter_radial_basis_function.hpp:80
The TileList class.
Definition: filter_radial_basis_function.hpp:33
bool cachedOnly
Definition: filter.hpp:120