由于我对Matlab的了解有限,我正努力在图像坐标上绘制中位数的平均值。我在Matlab中有一个灰度图像。我想在该图像上绘制其列的中位数的平均值,以便将图像水平分为两部分。我通过使用Matlab' Mean'来获得平均值。命令。但我正在努力获取图像坐标,我可以在其中绘制中位数的平均值。
在Marcin的代码稍作修改后,我能够得到这个输出,显示灰度图像的列的中位数。
修改后的代码是,
load clown
M = median(X, 1);
figure();
imshow(uint8(X)); one=zeros(1,numel(M));
hold on;
for columnIdx = 1:numel(M)
medianValue = M(columnIdx);
% find locations of gray-scale lavel values equal to the median
idx = find(X(:, columnIdx) == medianValue);
selectone=floor(length(idx)/2); % selecting the middle value
% create a vector containing median values for each column
if (isempty(idx) == 1);
one(1,columnIdx)=svone;
else
one(1,columnIdx)=idx(selectone);
end
% in case when median value doesn't matches columns values use the
% previous column median value
svone=one(1,columnIdx);
end
plot(1:numel(M), one, '-g');
输出是,
我想绘制列的中位数的平均值,以便它应该将图像水平分成两部分。任何人都可以帮助我或者对它有所了解!
答案 0 :(得分:1)
因此,如果我理解正确的话,你想在绿色线的同一个xrange上绘制该图中的另一条线,只需要一个恒定的y值。该常数值应为绿线的y值的平均值,可以使用line
或plot
来完成,我们只需要定义起点和终点:
plot([1, numel(M)], [mean(one), mean(one)], 'r-')