请教怎样对图像的某一块加高斯噪声?
J = imnoise(I,'gaussian',m,v) 对整个图像添加高斯噪声现在我想做的是 只对图像的某一椭圆区域添加高斯噪声
= 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的效果
到底应该怎么做呢?
解决了一部分问题
经过朋友的提点 我用randn函数产生高斯噪声 然后用一个模板与这个高斯矩阵相乘得到了一个区域的噪声但是我其实希望添加的是一个彩色高斯噪声 确切的说 是在一个蓝色背景上加上黄色的高斯噪声 I=imread('test2.jpg');
imshow(I);
J=imnoise(I,'gaussian');
=size(I);
a=100;
b=80;
for i=1:m
for j=1:n
if((i-250)^2/a^2+(j-160)^2/b^2 <= 1)
I(i,j,:) = J(i,j,:);
end
end
end
figure(2)
imshow(I)
imwrite(I,'test3','jpg');
其中循环部分是确定椭圆区域的位置
原图:
处理后的效果图:
谢谢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个分量的值呢? 除去黄色以外这段代码生成的图是: 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;
g22=randn(128,128);
g2(:,:,1) = 2000*g22; %???希望是黄色
g2(:,:,2) = 2000*g22; %怎样设置
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); happy教授就是厉害!受益良多!太感谢了! 学习了…………
页:
[1]