matlab 图像局部增强,如何在MATLAB的图像中找到局部最大值?

y = rgb2gray(imread('some_image_file.jpg'));

,我想要做一些关于它的处理:

pic = some_processing(y);

,并找到输出的局部最大值。也就是说,y中的所有点都比他们所有的邻居都要大。

我似乎无法找到一个很好地做MATLAB的函数。我能想出的最好的是:

[dim_y,dim_x]=size(pic);

enlarged_pic=[zeros(1,dim_x+2);

zeros(dim_y,1),pic,zeros(dim_y,1);

zeros(1,dim_x+2)];

% now build a 3D array

% each plane will be the enlarged picture

% moved up,down,left or right,

% to all the diagonals, or not at all

[en_dim_y,en_dim_x]=size(enlarged_pic);

three_d(:,:,1)=enlarged_pic;

three_d(:,:,2)=[enlarged_pic(2:end,:);zeros(1,en_dim_x)];

three_d(:,:,3)=[zeros(1,en_dim_x);enlarged_pic(1:end-1,:)];

three_d(:,:,4)=[zeros(en_dim_y,1),enlarged_pic(:,1:end-1)];

three_d(:,:,5)=[enlarged_pic(:,2:end),zeros(en_dim_y,1)];

three_d(:,:,6)=[pic,zeros(dim_y,2);zeros(2,en_dim_x)];

three_d(:,:,7)=[zeros(2,en_dim_x);pic,zeros(dim_y,2)];

three_d(:,:,8)=[zeros(dim_y,2),pic;zeros(2,en_dim_x)];

three_d(:,:,9)=[zeros(2,en_dim_x);zeros(dim_y,2),pic];

,然后看看沿第三维的最大出现在第一层(即:three_d(:,:,1)):

(max_val, max_i) = max(three_d, 3);

result = find(max_i == 1);

是否有更优雅如何做到这一点?这似乎有点混乱。

+0

相关的问题:我如何才能找到在嘈杂的图像许多局部极大值?( http://stackoverflow.com/questions/2706528/finding-many-local-max-in-an-image-using-matlab) –

2011-12-29 13:35:33

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值