图像算法原理与实践——图像复原之噪声模型

新机器视觉

共 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 删除或修改!

—THE END—
浏览 32
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报