声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5321|回复: 6

[图像处理] 请教怎样对图像的某一块加高斯噪声?

[复制链接]
发表于 2006-11-22 21:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
J = imnoise(I,'gaussian',m,v) 对整个图像添加高斯噪声
现在我想做的是 只对图像的某一椭圆区域添加高斯噪声
[X1,Y1] = meshgrid(1:128, 1:128);
sigma1=50;
sigma2=100;
xc=40;
yc=64;   %xc yc 二维高斯中心
X=X1-xc;
Y=Y1-yc;
g = 1/(2*pi*sigma1*sigma2)*exp(-(X.^2./(2*sigma1))-(Y.^2./(2*sigma2)));
我用上面的代码(二维高斯函数公式)产生的噪声信号g,但是g的值都很小, 而且直接添加在图像上也不可能有imnoise的效果
到底应该怎么做呢?
回复
分享到:

使用道具 举报

 楼主| 发表于 2006-11-23 14:46 | 显示全部楼层

解决了一部分问题

经过朋友的提点 我用randn函数产生高斯噪声 然后用一个模板与这个高斯矩阵相乘得到了一个区域的噪声

但是我其实希望添加的是一个彩色高斯噪声 确切的说 是在一个蓝色背景上加上黄色的高斯噪声
发表于 2006-11-23 15:44 | 显示全部楼层
  1. I=imread('test2.jpg');
  2. imshow(I);
  3. J=imnoise(I,'gaussian');
  4. [m,n,k]=size(I);
  5. a=100;
  6. b=80;
  7. for i=1:m
  8.     for j=1:n
  9.         if((i-250)^2/a^2+(j-160)^2/b^2 <= 1)
  10.             I(i,j,:) = J(i,j,:);
  11.         end
  12.     end
  13. end
  14. figure(2)
  15. imshow(I)
  16. imwrite(I,'test3','jpg');
复制代码


其中循环部分是确定椭圆区域的位置

原图:
test2.jpg

处理后的效果图:
test3.jpg

评分

1

查看全部评分

 楼主| 发表于 2006-11-23 16:35 | 显示全部楼层

谢谢happy! 再次请教:

谢谢happy 你的方法比我想的简单多了:)
还有问题:
我希望在一个蓝色的背景上产生三个椭圆的高斯噪声 分别为红色 黄色 绿色  代码如下:
Img = zeros(128,128,3);

% Img 蓝色背景
Img(:,:,1) = 0;
Img(:,:,2) = 0;
Img(:,:,3) = 255;

% 三个彩色高斯噪声(RGB模型)
g1=zeros(128,128,3);
g2=zeros(128,128,3);
g3=zeros(128,128,3);

%彩色的高斯噪声
g1(:,:,1) = 2000*randn(128,128); %红色
g1(:,:,2) = 0;
g1(:,:,3) = 0;

g2(:,:,1) = 0; %???希望是黄色
g2(:,:,2) = 0; %怎样设置
g2(:,:,3) = 0;

g3(:,:,1) = 0;
g3(:,:,2) = 2000*randn(128,128); %绿色
g3(:,:,3) = 0;

for i=1:128
    for j=1:128
        if (i-64)^2/30^2+(j-20)^2/15^2<1
            Img(i,j,:)=Img(i,j,:)+g1(i,j,:);
        end
        if (i-64)^2/30^2+(j-60)^2/15^2<1
            Img(i,j,:)=Img(i,j,:)+g2(i,j,:);
        end
        if (i-64)^2/30^2+(j-100)^2/15^2<1
            Img(i,j,:)=Img(i,j,:)+g3(i,j,:);
        end
    end
end

% 在蓝色背景上添加彩色高斯噪声
s = uint8(Img);
imshow(s);

但是黄色的高斯噪声 应该怎样设置g2个分量的值呢? 除去黄色以外这段代码生成的图是:
noise3.bmp
发表于 2006-11-23 16:47 | 显示全部楼层
  1. Img = zeros(128,128,3);

  2. % Img 蓝色背景
  3. Img(:,:,1) = 0;
  4. Img(:,:,2) = 0;
  5. Img(:,:,3) = 255;

  6. % 三个彩色高斯噪声(RGB模型)
  7. g1=zeros(128,128,3);
  8. g2=zeros(128,128,3);
  9. g3=zeros(128,128,3);

  10. %彩色的高斯噪声
  11. g1(:,:,1) = 2000*randn(128,128); %红色
  12. g1(:,:,2) = 0;
  13. g1(:,:,3) = 0;

  14. g22=randn(128,128);
  15. g2(:,:,1) = 2000*g22; %???希望是黄色
  16. g2(:,:,2) = 2000*g22; %怎样设置
  17. g2(:,:,3) = 0;

  18. g3(:,:,1) = 0;
  19. g3(:,:,2) = 2000*randn(128,128); %绿色
  20. g3(:,:,3) = 0;

  21. for i=1:128
  22.     for j=1:128
  23.         if (i-64)^2/30^2+(j-20)^2/15^2<1
  24.             Img(i,j,:)=Img(i,j,:)+g1(i,j,:);
  25.         end
  26.         if (i-64)^2/30^2+(j-60)^2/15^2<1
  27.             Img(i,j,:)=Img(i,j,:)+g2(i,j,:);
  28.         end
  29.         if (i-64)^2/30^2+(j-100)^2/15^2<1
  30.             Img(i,j,:)=Img(i,j,:)+g3(i,j,:);
  31.         end
  32.     end
  33. end

  34. % 在蓝色背景上添加彩色高斯噪声
  35. s = uint8(Img);
  36. imshow(s);
复制代码
发表于 2006-11-24 10:14 | 显示全部楼层
happy教授就是厉害!受益良多!太感谢了!
发表于 2011-6-29 11:27 | 显示全部楼层
学习了…………
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-19 10:00 , Processed in 0.105165 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表