用MATLAB在圆区域内求积分
来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/08/18 00:36:23
用MATLAB在圆区域内求积分
![用MATLAB在圆区域内求积分](/uploads/image/z/17636670-54-0.jpg?t=%E7%94%A8MATLAB%E5%9C%A8%E5%9C%86%E5%8C%BA%E5%9F%9F%E5%86%85%E6%B1%82%E7%A7%AF%E5%88%86)
自己写了个函数
function H = circlehist(img,a,b,d)
% 函数功能:提取图像指定圆形区域的灰度直方图
%
% a,b 为圆形区域圆心的位置
% d 为圆形区域的直径
% H 为返回值,大小为256的数组
I = imread(img);
if length(size(I))==3
I = rgb2gray(I);
end
[m,n] = size(I);
H = zeros(1,256);
for i = (a-d/2):(a+d/2)
for j = (b-sqrt((d/2)^2-abs(a-i)^2)):(b+sqrt((d/2)^2-abs(a-i)^2))
x = round(i);
y = round(j);
if (x<1||y<1||x>m||y>n)
continue;
end
H(I(x,y)+1) = H(I(x,y)+1) + 1;
I(x,y) = I(x,y) - 100;
end
end
figure,imshow(I);
figure,bar(0:255,H);
end
用法:在matlab中输入 circle('test.png',a,b,d)
其中 a,b,d 为圆形区域的圆心和直径
function H = circlehist(img,a,b,d)
% 函数功能:提取图像指定圆形区域的灰度直方图
%
% d 为圆形区域的直径
% H 为返回值,大小为256的数组
I = imread(img);
if length(size(I))==3
I = rgb2gray(I);
end
[m,n] = size(I);
H = zeros(1,256);
for i = (a-d/2):(a+d/2)
for j = (b-sqrt((d/2)^2-abs(a-i)^2)):(b+sqrt((d/2)^2-abs(a-i)^2))
x = round(i);
y = round(j);
if (x<1||y<1||x>m||y>n)
continue;
end
H(I(x,y)+1) = H(I(x,y)+1) + 1;
I(x,y) = I(x,y) - 100;
end
end
figure,imshow(I);
figure,bar(0:255,H);
end
用法:在matlab中输入 circle('test.png',a,b,d)
其中 a,b,d 为圆形区域的圆心和直径