#include <cmath>
#include <cstdio>
#include <cstdlib>
array changeContrast(
const array &in,
const float contrast)
{
return (((in / 255.0f - 0.5f) * scale + 0.5f) * 255.0f);
}
array changeBrightness(
const array &in,
const float brightness,
const float channelMax = 255.0f)
{
float factor = brightness*channelMax;
return (in + factor);
}
{
return ((in<
min)*0.0f + (in>
max)*255.0f + (in >=
min && in <=
max)*in);
}
array usm(
const array &in,
float radius,
float amount)
{
int gKernelLen = 2 * radius + 1;
return (in + amount*(in - blur));
}
array digZoom(
const array &in,
int x,
int y,
int width,
int height)
{
}
{
tiledMask =
tile(mask, 1, 1, a.
dims(2));
return a*tiledMask + (1.0f - tiledMask)*b;
}
void normalizeImage(
array &in)
{
float min = af::min<float>(in);
float max = af::max<float>(in);
in = 255.0f*((in -
min) / (max - min));
}
{
normalizeImage(ret_val);
return ret_val;
}
int main(int argc, char **argv)
{
try {
int device = argc > 1 ? atoi(argv[1]) : 0;
array fight =
loadImage(ASSETS_DIR
"/examples/images/fight.jpg",
true);
array mask = clamp(intensity, 10.0f, 255.0f)>0.0f;
array blend = alphaBlend(fight, nature, mask);
array highcon = changeContrast(man, 0.3);
array highbright = changeBrightness(man, 0.2);
array sharp = usm(man, 3, 1.2);
array zoom = digZoom(man, 28, 10, 192, 192);
array bdry = boundary(man, morph_mask);
std::cout << "Press ESC while the window is in focus to exit" << std::endl;
wnd(0, 0).
image(man / 255,
"Input");
wnd(1, 0).
image(highcon / 255,
"High Contrast");
wnd(0, 1).
image(highbright / 255,
"High Brightness");
wnd(1, 1).
image(translated / 255,
"Translation");
wnd(0, 2).
image(sharp / 255,
"Unsharp Masking");
wnd(1, 2).
image(zoom / 255,
"Digital Zoom");
wnd(0, 3).
image(nature / 255,
"Background for blend");
wnd(1, 3).
image(fight / 255,
"Foreground for blend");
wnd(0, 4).
image(blend / 255,
"Alpha blend");
wnd(1, 4).
image(bdry / 255,
"Boundary extraction");
}
}
fprintf(stderr,
"%s\n", e.
what());
throw;
}
return 0;
}