Image Recognition/Fundamental
영상에 Impulse Noise 넣기
helloktk
2023. 2. 9. 22:28
int AddImpulseNoise(CRaster& raster, double p, int imax, int imin, CRaster& noised) {
srand(unsigned(time(NULL)));
CSize sz = raster.GetSize();
p = max(min(p, 1),0); //noise probability;
int np = int(p * sz.cx * sz.cy);
// clone;
noised = raster;
imax = max(min(255, imax), 0); //maximum impulse value;
imin = min(max(0, imin), 255); //minimum impulse value;
for (int count = 0, turn = 0; count < np; count++) {
//x in [0, sz.cx - 1];
int x = int((sz.cx - 1) * double(rand()) / RAND_MAX);
//y in [0, sz.cy - 1];
int y = int((sz.cy - 1) * double(rand()) / RAND_MAX);
if (turn == 0) {
turn = 1;
noised.SetPixel(x, y, imax);
} else {
turn = 0;
noised.SetPixel(x, y, imin);
}
}
return 1;
}
728x90