6个回答
展开全部
我写了一段程序,运行通过了,现在贴给你。
先把一副灰度图象myPicture.jpg图像放到你当前工作目录下,然后直接加载:
% 本程序的计算一副图象矩阵中左上角3*3个像素的平均值,你可以比猫画虎地按照需要改区域。
I=imread('myPicture.jpg'); %加载图像并存储在I变量
startX=1; % 看你选多大区域,这是起始点横坐标,可以改变它
startY=1; % 看你选多大区域,这是起始点纵坐标,可以改变它
endX=3; % 看你选多大区域,这是终止点横坐标,可以改变它
endY=3; % 看你选多大区域,这是终止点纵坐标,可以改变它
pixelSum=0; % 像素之和初始化为0
count= 0; % 记录像素区域个数,但也可以用以上坐标计算
for i=startX:endX
for j=startY:endY
pixelSum=pixelSum+int16(I(i,j)) %连加区域内各个像素
count=count+1;
end
end
average=pixelSum/count % 得到平均值
----------------------------
注释:
1。既然你说要计算灰度的平均值,那么加载的图像是灰度图像就可以直接计算。如果是彩色的,需要你自己转换成灰度的,然后再计算(你好像没提一定要这样,如果要,我再帖)。
2。如果你要计算其他形状的区域,比如圆形,或者图象中制定的物体所占的区域,那么需要加if 语句判断是否在区域内,然后进行相加计算。其他就都一样了。
先把一副灰度图象myPicture.jpg图像放到你当前工作目录下,然后直接加载:
% 本程序的计算一副图象矩阵中左上角3*3个像素的平均值,你可以比猫画虎地按照需要改区域。
I=imread('myPicture.jpg'); %加载图像并存储在I变量
startX=1; % 看你选多大区域,这是起始点横坐标,可以改变它
startY=1; % 看你选多大区域,这是起始点纵坐标,可以改变它
endX=3; % 看你选多大区域,这是终止点横坐标,可以改变它
endY=3; % 看你选多大区域,这是终止点纵坐标,可以改变它
pixelSum=0; % 像素之和初始化为0
count= 0; % 记录像素区域个数,但也可以用以上坐标计算
for i=startX:endX
for j=startY:endY
pixelSum=pixelSum+int16(I(i,j)) %连加区域内各个像素
count=count+1;
end
end
average=pixelSum/count % 得到平均值
----------------------------
注释:
1。既然你说要计算灰度的平均值,那么加载的图像是灰度图像就可以直接计算。如果是彩色的,需要你自己转换成灰度的,然后再计算(你好像没提一定要这样,如果要,我再帖)。
2。如果你要计算其他形状的区域,比如圆形,或者图象中制定的物体所占的区域,那么需要加if 语句判断是否在区域内,然后进行相加计算。其他就都一样了。
展开全部
一般是用移动窗口法。这种计算像素平均值的手段通常是用在均滑模糊上。
先设定窗口边长,假设正方形窗口为x。
然后让这个窗口按步长值为1来在图片区域左上到右下移动。每移动一格,就计算窗口中所有像素值加起来再除以x的平方。然后遍历全图。
一般会把均值重新给窗口中点值。
先设定窗口边长,假设正方形窗口为x。
然后让这个窗口按步长值为1来在图片区域左上到右下移动。每移动一格,就计算窗口中所有像素值加起来再除以x的平方。然后遍历全图。
一般会把均值重新给窗口中点值。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般是用移动窗口法。这种计算像素平均值的手段通常是用在均滑模糊上。
先设定窗口边长,假设正方形窗口为x。
然后让这个窗口按步长值为1来在图片区域左上到右下移动。每移动一格,就计算窗口中所有像素值加起来再除以x的平方。然后遍历全图。
一般会把均值重新给窗口中点值。
就是几重循环,很简单的。自己网上搜也可以。
先设定窗口边长,假设正方形窗口为x。
然后让这个窗口按步长值为1来在图片区域左上到右下移动。每移动一格,就计算窗口中所有像素值加起来再除以x的平方。然后遍历全图。
一般会把均值重新给窗口中点值。
就是几重循环,很简单的。自己网上搜也可以。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这题对我胃口。
一般是用移动窗口法。这种计算像素平均值的手段通常是用在均滑模糊上。
先设定窗口边长,假设正方形窗口为x。
然后让这个窗口按步长值为1来在图片区域左上到右下移动。每移动一格,就计算窗口中所有像素值加起来再除以x的平方。然后遍历全图。
一般会把均值重新给窗口中点值。
就是几重循环,很简单的。自己网上搜也可以。
一般是用移动窗口法。这种计算像素平均值的手段通常是用在均滑模糊上。
先设定窗口边长,假设正方形窗口为x。
然后让这个窗口按步长值为1来在图片区域左上到右下移动。每移动一格,就计算窗口中所有像素值加起来再除以x的平方。然后遍历全图。
一般会把均值重新给窗口中点值。
就是几重循环,很简单的。自己网上搜也可以。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a=randint(4,4,[1 2])%%标记图像矩阵
a =
2 2 2 2
1 2 1 2
2 1 2 1
1 1 2 1
b=rand(4,4)%%原图像矩阵
b =
0.9355 0.0579 0.1389 0.2722
0.9169 0.3529 0.2028 0.1988
0.4103 0.8132 0.1987 0.0153
0.8936 0.0099 0.6038 0.7468
>> n1=0;n2=0;sum1=0;sum2=0;%%初始化各个参数
>> for i=1:size(a,1)
for j=1:size(a,2)
if a(i,j)==1
sum1=sum1+b(i,j);%%累加第一个区域的各个像素值
n1=n1+1;
else
sum2=sum2+b(i,j);%%累加第二个区域的各个像素值
n2=n2+1;
end
end
end
>> mean1=sum1/n1%%第一个区域的像素平均值
mean1 =
0.5141
>> mean22=sum2/n2%%第二个区域的像素平均值
mean22 =
0.3521
a =
2 2 2 2
1 2 1 2
2 1 2 1
1 1 2 1
b=rand(4,4)%%原图像矩阵
b =
0.9355 0.0579 0.1389 0.2722
0.9169 0.3529 0.2028 0.1988
0.4103 0.8132 0.1987 0.0153
0.8936 0.0099 0.6038 0.7468
>> n1=0;n2=0;sum1=0;sum2=0;%%初始化各个参数
>> for i=1:size(a,1)
for j=1:size(a,2)
if a(i,j)==1
sum1=sum1+b(i,j);%%累加第一个区域的各个像素值
n1=n1+1;
else
sum2=sum2+b(i,j);%%累加第二个区域的各个像素值
n2=n2+1;
end
end
end
>> mean1=sum1/n1%%第一个区域的像素平均值
mean1 =
0.5141
>> mean22=sum2/n2%%第二个区域的像素平均值
mean22 =
0.3521
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询