SUNYA 发表于 2009-9-8 03:18

给一副彩色图片加高斯白噪声的程序,错在哪里?

下面是我写的一小段给一副彩色图片加高斯白噪声的程序,可是运行时报错,请问是什么问题?

function imnr = addnoi(im,snr)
im = double(im);
% for RGB color image
for k = 1:ndims(im)
    si = std(im(:,:,k));
    sn = si/10^(snr/20);
    imnr(:,:,k) = im(:,:,1) + randn(size(im,1),size(im,2))*sn;
end
return

主程序里用:imnr=addnoi(im,30); 调用。

可是运行时报错如下:
??? Error using ==> mtimes
Inner matrix dimensions must agree.
Error in ==> addnoi at 8
    imnr(:,:,k) = im(:,:,1) + randn(size(im,1),size(im,2))*sn;

请大家看看是什么问题?

另外谁手头有给一副彩色图片加高斯白噪声的MATLAB程序,是否可以分享一下。
谢谢!

ChaChing 发表于 2009-9-8 08:28

Ref : 常见的程序出错问题整理 (eight), 5F
http://forum.vibunion.com/forum/thread-46001-1-1.html

SUNYA 发表于 2009-9-8 08:43

这个常见的程序出错问题整理其实我看过,不过其实具体到实际问题不一定管用。

还请高手看一下,因为我对添加高斯白噪声也是一知半解而已,呵呵!

SUNYA 发表于 2009-9-8 09:01

其实我也知道,还有个什么AWGN,但是因为导师一直用我写的那个最基本的,我对AWGN(貌似不能直接处理彩色图片),还有IMNOISE不是特别熟悉,所以才用了这一段。当然如果哪位能直接贴出一段用AWGN或者IMNOSE的感激不尽。

我的要求是参数就两个,输入的图像im和高斯白噪声强度比如30(以SNR为单位)。

我曾经尝试用awgn(im,30),但是因为我是3通道的RGB彩色图片,似乎AWGN报错,说不支持。MATLAB新手,不是很懂,问题可能比较浅显。

谢谢帮助!
页: [1]
查看完整版本: 给一副彩色图片加高斯白噪声的程序,错在哪里?