在图像坐标上绘制中位数的平均值

时间:2014-09-01 06:14:30

标签: matlab plot mean

由于我对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'); 

输出是,

Medians of columns of gray scale image

我想绘制列的中位数的平均值,以便它应该将图像水平分成两部分。任何人都可以帮助我或者对它有所了解!

1 个答案:

答案 0 :(得分:1)

因此,如果我理解正确的话,你想在绿色线的同一个xrange上绘制该图中的另一条线,只需要一个恒定的y值。该常数值应为绿线的y值的平均值,可以使用lineplot来完成,我们只需要定义起点和终点:

plot([1, numel(M)], [mean(one), mean(one)], 'r-')