图像算法原理与实践——图像复原之噪声模型
新机器视觉
共 1421字,需浏览 3分钟
·
2021-11-30 16:44
点击下方卡片,关注“新机器视觉”公众号
视觉/图像重磅干货,第一时间送达
图像退化是指图像的质量下降。退化的形式有 模糊、失真、有噪声等,无论是由光学、光电或电子方法获得的图像都会有不同程度的退化,退化的形式和原因也多种多样,例如:摄像头采样单元本身的精度导致高斯噪点、拍摄时手持的抖动或者聚焦不对造成模糊、镜头畸变导致的失真等等。本章节主要讲解图像退化的原因和一些模型。
图像退化模型
常见噪声模型
高斯噪声
//
// 计算单个高斯噪声
//
double_t XImage::CalculateGaussNoise(double_t mu, double_t sigma, int32_t k)
{
static double_t V1, V2, S;
static int32_t phase = 0;
double_t X;
double_t U1,U2;
if ( phase == 0 ) {
do {
U1 = (double_t)rand() / RAND_MAX;
U2 = (double_t)rand() / RAND_MAX;
V1 = 2 * U1 - 1;
V2 = 2 * U2 - 1;
S = V1 * V1 + V2 * V2;
} while(S >= 1 || S == 0);
X = V1 * sqrt(-2 * log(S) / S);
} else{
X = V2 * sqrt(-2 * log(S) / S);
}
phase = 1 - phase;
return (mu+sigma*X) * k;
}
//
// 图像增加高斯噪声
//
int32_t XImage::NoiseGauss(double_t mu, double_t sigma, int32_t k,
XImage& out_img)
{
if (!image_valid_) {
return XERR_BAD_STATE;
}
if (!IsSameParameter(out_img))
{
out_img.Release( );
out_img.Allocate(pxl_format_, width_, height_);
}
uint8_t* src_line = image_data_;
uint8_t* dst_line = out_img.image_data_;
int32_t x, y;
if (1 == pixel_bytes_)
{
for (y = 0; y < height_; y++)
{
uint8_t* src_data = src_line;
uint8_t* dst_data = dst_line;
for (x = 0; x < width_; x++)
{
double_t noise = CalculateGaussNoise(mu, sigma, k);
double_t gray = src_data[0] + noise;
gray = MIN(MAX(gray, 0.0), 255.0);
dst_data[0] = static_cast<uint8_t>(gray);
src_data += pixel_bytes_;
dst_data += pixel_bytes_;
}
src_line += line_bytes_;
dst_line += line_bytes_;
}
}
else
{
for (y = 0; y < height_; y++)
{
uint8_t* src_data = src_line;
uint8_t* dst_data = dst_line;
for (x = 0; x < width_; x++)
{
double_t noise = CalculateGaussNoise(mu, sigma, k);
double_t b = src_data[0] + noise;
double_t g = src_data[1] + noise;
double_t r = src_data[2] + noise;
b = MIN(MAX(b, 0.0), 255.0);
g = MIN(MAX(g, 0.0), 255.0);
r = MIN(MAX(r, 0.0), 255.0);
dst_data[0] = static_cast<uint8_t>(b);
dst_data[1] = static_cast<uint8_t>(g);
dst_data[2] = static_cast<uint8_t>(r);
src_data += pixel_bytes_;
dst_data += pixel_bytes_;
}
src_line += line_bytes_;
dst_line += line_bytes_;
}
}
return XOK;
}
瑞利噪声
伽马噪声
指数噪声
均匀分布噪声
脉冲(椒盐)噪声
—版权声明—
仅用于学术分享,版权属于原作者。
若有侵权,请联系微信号:yiyang-sy 删除或修改!
评论