你好同学,这个比较容易的:
代码供参考
I = imread('a.jpg'); % a.jpg是图像文件,放在当前文件夹下面
% imshow(I);
[p,q,~] = size(I);
nspot = 10000; % 圆的个数
i = randi([1,p], nspot,1);
j = randi([1,q], nspot,1);
r = randi([5,20], nspot,1); % 圆的最大半径是20,最小半径5
[m,n] = meshgrid(1:p,1:q);
I = double(I);
for t = 1:1:nspot
i1 = i(t);
j1 = j(t);
r1 = r(t);
idx = (m-i1).^2 + (n-j1).^2 <=r1^2;
i2 = m(idx);
j2 = n(idx);
R = 0;
G = 0;
B = 0;
for t1 = 1:numel(i2) %求总的rgb
R = R+I(i2(t1), j2(t1), 1);
G = G+I(i2(t1), j2(t1), 2);
B = B+I(i2(t1), j2(t1), 3);
end
R = R/numel(i2); % RGB平均
G = G/numel(i2);
B = B/numel(i2);
for t1 = 1:numel(i2)
I(i2(t1), j2(t1), 1) = R; % 平均后赋值
I(i2(t1), j2(t1), 2) = G;
I(i2(t1), j2(t1), 3) = B;
end
end
I = uint8(I);
imshow(I)
给个效果: