【问题标题】:Finding the local maximum and minimum in each column-matlab在每列matlab中找到局部最大值和最小值
【发布时间】:2014-12-15 14:41:22
【问题描述】:

我想在图像 img_gauss 的每一列中找到这 2 个局部最大值之间的局部最大值和最小值。然后将它们的最小值设置为 1(白色)。任何人都知道如何以简单的方式做到这一点?

下面是我的代码。但是我遇到了一些麻烦,我尝试在每次迭代(对于每一列)中进行定位(locs),然后将它们放入数组 peaks_column 中,以便按列定位峰,但是会出现此错误:

下标分配维度不匹配。 cropping_image_long 中的错误(第 136 行) peaks_column(1:size(Intens_graph,1),x)=pks(:,1);

 pks= [];
 locs_column=zeros(20,size(img_gauss,2));
 locs= [];
 pks_column=zeros(20,size(img_gauss,2));
 for x = 1:size(img_gauss,2) % 2 = colunas x(colunas)
     % make a row wise intensity distribution graphic for each column
     Intens_graph(:,x)=img_gauss(size(img_gauss,1):-1:1,x);
     [pks,locs] = findpeaks(Intens_graph(:,x));%find the local maximum
     peaks_column(1:size(Intens_graph,1),x)=pks(:,1); %associate to each column
     locs_column(1:size(Intens_graph,1),x)=locs(:,1);

     BW = imregionalmin(Intens_graph);

 end

【问题讨论】:

  • 请您发布一些示例数据。

标签: matlab max


【解决方案1】:

不太清楚你所说的最低限度是什么意思。在两个最大值之间总会有一个最小值。所以我会用 findpeaks 找到最小值。

% test data
data = rand(100);

% for saving minima and maxima positions
minimas = zeros(size(data));
for i = 1:size(data,2)
    column = data(:,i);
    [~,minis] = findpeaks(-column);
    % save the positions
    minimas(sub2ind(size(minimas),minis,repmat(i,length(minis),1))) = 1;
end
%generate result, paint all minimas with 1
result = data;
result(minimas==1) = 1;

【讨论】:

    猜你喜欢
    • 2017-01-04
    • 2016-03-16
    • 2023-01-05
    • 2012-12-28
    • 2018-06-09
    • 2021-09-12
    相关资源
    最近更新 更多