【发布时间】:2013-09-02 20:43:14
【问题描述】:
这是我的作业问题:
写HW3_func.m如下:
function [cogR, cogC] = HW3_func ( f, i )-
f:输入灰度图 -
i:要检查的强度级别 - 函数应该找到
f中强度为i的所有像素。然后,将这些像素的重心返回为[cogR, cogC]。重心计算为行的平均值和列的平均值。如果没有pixel == i,则返回[0,0]
我不明白如何计算重心。我所做的是:
- 声明一个与图像具有相同维度的矩阵
X。用全零初始化它 - 查找输入图像中具有给定强度的像素的位置,并将
X中的这些位置替换为1。
我走对了吗?
这就是我现在拥有的:
function [ cogR,cogC ] = HW3_func(f,i)
[r,c] = size(f)
X = zeros(r,c)
for k = 1:r
for j = 1:c
if f(k,j)==i
X(k,j)=1;
end
end
end
%disp(X)
cogR=centroid(X);
cogC=centroid(X,2);
disp(cogR)
disp(cogC)
end
【问题讨论】:
-
您的代码到目前为止已经足够好了,除了格式正确。重心是平均坐标,以密度加权(在您的情况下,密度为 1 或 0)。所以本质上,使用“加权平均值”的公式,使用行索引作为数据,使用(1 或 0)作为权重来获得 cogR。我不知道这门课程的目标是什么,所以摆脱循环可能是矫枉过正,或者这可能是练习的重点。
标签: matlab