我想在图像img_gauss的每一列中找到这2个局部最大值之间的局部最大值和最小值。然后将它们的最小值设为1(白色)。任何人都知道如何以简单的方式做到这一点?
下面我有我的代码。但是我遇到了一些麻烦,我尝试每次迭代(对于每一列)进行本地化(locs),然后将它们放入数组peak_column中,以便按列列出峰值,但是这个错误出现了:
订阅的分配维度不匹配。 cropping_image_long出错(第136行) peaks_column(1:尺寸(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
答案 0 :(得分:0)
不完全确定您对最小值的意思。在两个最大值之间总是有一个最小值。所以我会找到最高限度的发现。
% 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;