18 #ifndef PIC_ALGORITHMS_SUPERPIXELS_SLIC_HPP 19 #define PIC_ALGORITHMS_SUPERPIXELS_SLIC_HPP 21 #include "../image.hpp" 22 #include "../filtering/filter_laplacian.hpp" 60 float tmp = (a1[i] - a2[i]);
75 inline int distanceS(
int x1,
int y1,
int x2,
int y2)
79 return tx * tx + ty * ty;
100 float i_f = float(i);
103 for(
int j = -S; j < S; j++) {
106 for(
int k = -S; k < S; k++) {
109 float *pixel = (*img)(vX, vY);
110 float *l_d = (*labels_distance)(vX, vY);
146 for(
int j = 0; j < img->
channels; j++) {
151 for(
int j = 0; j < img->
height; j++) {
152 for(
int k = 0; k < img->
width; k++) {
153 float *l_d = (*labels_distance)(k, j);
154 int label = int(l_d[0]);
162 float *col = (*img)(k, j);
164 for(
int p = 0; p < img->
channels; p++) {
182 for(
int j = 0; j < img->
channels; j++) {
189 float tmpErr = sqrtf(
float(tx * tx + ty * ty));
337 mPixel[i] = 0.35f * 0.35f;
347 for(
int i = S_half; i < (img->
height - S_half + 1); i += S) {
348 for(
int j = S_half; j < (img->
width - S_half + 1); j += S) {
350 float bValue = FLT_MAX;
353 for(
int y = -1; y <= 1; y++) {
354 for(
int x = -1; x <= 1; x++) {
357 float *data = (*lap_img)(ix, iy);
361 for(
int c = 0; c < img->
channels; c++) {
362 acc += fabsf(data[c]);
390 bCheck =
pass(img, S);
392 if(!bCheck && iter <= 10) {
400 printf(
"Iterations: %d\n", iter);
425 for(
int i = 0; i < size; i++) {
443 for(
int i = 0; i <
height; i++) {
444 for(
int j = 0; j <
width; j++) {
445 float *pixel = (*imgOut)(j, i);
446 float *l_d = (*labels_distance)(j, i);
448 int label = int(l_d[0]);
int width
Definition: superpixels_slic.hpp:46
The BBox class manages the creation of bounding boxes for images.
Definition: bbox.hpp:29
int size() const
size computes the number of values.
Definition: image.hpp:481
float * data
data is the main buffer where pixel values are stored.
Definition: image.hpp:91
int channels
Definition: image.hpp:80
float * getMeanVal(BBox *box, float *ret)
getMeanVal computes the mean for the current Image.
The Slic class.
Definition: superpixels_slic.hpp:37
unsigned int * counter
Definition: superpixels_slic.hpp:44
The FilterLaplacian class.
Definition: filter_laplacian.hpp:28
unsigned int y
Definition: superpixels_slic.hpp:31
unsigned int * prevX
Definition: superpixels_slic.hpp:44
unsigned int * prevY
Definition: superpixels_slic.hpp:44
virtual Image * Process(ImageVec imgIn, Image *imgOut)
Process.
Definition: filter.hpp:390
float heightf
Definition: image.hpp:84
void allocate(int nSuperPixels, int channels)
allocate
Definition: superpixels_slic.hpp:203
Slic(Image *img, int nSuperPixels=64)
Slic.
Definition: superpixels_slic.hpp:278
Slic()
Slic.
Definition: superpixels_slic.hpp:261
unsigned int x
Definition: superpixels_slic.hpp:31
void release()
release
Definition: superpixels_slic.hpp:221
Image * labels_distance
Definition: superpixels_slic.hpp:42
int height
Definition: superpixels_slic.hpp:46
The SlicoCenter struct.
Definition: superpixels_slic.hpp:29
float * col_values
Definition: superpixels_slic.hpp:45
int channels
Definition: superpixels_slic.hpp:46
int distanceS(int x1, int y1, int x2, int y2)
distanceS
Definition: superpixels_slic.hpp:75
float widthf
Definition: image.hpp:84
SlicoCenter * centers
Definition: superpixels_slic.hpp:43
int nSuperPixels
Definition: superpixels_slic.hpp:41
~Slic()
Definition: superpixels_slic.hpp:292
The Image class stores an image as buffer of float.
Definition: image.hpp:60
void execute(Image *img, int nSuperPixels=64)
execute
Definition: superpixels_slic.hpp:302
float * value
Definition: superpixels_slic.hpp:30
bool pass(Image *img, int S)
pass
Definition: superpixels_slic.hpp:88
PIC_INLINE ImageVec Single(Image *img)
Single creates an std::vector which contains img; this is for filters input.
Definition: image_vec.hpp:36
Definition: bilateral_separation.hpp:25
Image * lap_img
Definition: superpixels_slic.hpp:42
int * getLabelsBuffer(int *out=NULL)
getLabelsBuffer
Definition: superpixels_slic.hpp:409
int width
Definition: image.hpp:80
int height
Definition: image.hpp:80
float * mPixel
Definition: superpixels_slic.hpp:45
float distanceC(float *a1, float *a2, int channels)
distanceC
Definition: superpixels_slic.hpp:55
Image * getMeanImage(Image *imgOut)
getMeanImage
Definition: superpixels_slic.hpp:437