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

icon1.gif 如何在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); 还有其他更优雅的方法吗?这似乎有点不合时宜。

回答:

bw = pic > imdilate(pic, [1 1 1; 1 0 1; 1 1 1]);

更多&回答...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Matlab图像处理局部最大指的是在一张图像局部区域内的像素最高的点。通常使用局部最大来检测图像的特定目标或者物体。以图像锐度增强为例,局部最大可以用来识别图像边缘和角点等特征。 Matlab一般使用imregionalmax函数来寻找局部最大。这个函数可以查找图像的所有局部最大,并将它们的像素位置返回为一个二维矩阵。使用imregionalmax函数时,需要指定一个阈,该阈会过滤掉一些像素,只留下高于阈的像素来查找局部最大。 除了imregionalmax函数,还有一些其他的方法可以寻找图像局部最大,例如使用高斯核或者成比例的盒形滤波器进行滤波,再使用imregionalmax函数进行查找。 在实际应用局部最大可以用于图像分割、图像匹配、物体检测等多种应用场景。但需要注意的是,在处理图像时,需要考虑到局部最大的稳定性和灵敏度,以及如何设置合理的阈来保证检测结果的准确性。 ### 回答2: MATLAB 局部最大指的是一个图像,某个像素点周围的像素都比它低,而它本身的像素是最高的点。在简单的图像处理或计算机视觉算法找到局部最大非常重要。在 MATLAB ,可以使用 imregionalmax() 函数来寻找局部最大。 该函数的使用方法如下: 1. 首先需要加载图像,可以使用 imread() 函数。 2. 将图像转换为灰度图像,可以使用 rgb2gray() 函数。 3. 使用 imregionalmax() 函数来找到局部最大。该函数有一个输入参数 im,表示要寻找局部最大图像。函数的输出是一个二图像,其白色像素点表示图像局部最大。 4. 可以将输出的二图像与原始图像进行叠加,使用 imshow() 函数即可。 需要注意的是,使用 imregionalmax() 函数查找局部最大时,需要指定一个连通区域(即周围的像素点),默认情况下为 8 连通区域。可以使用 strel() 函数来创建一个不同的 structuring element,从而调整连通区域的大小。 总之,MATLAB 局部最大是很重要的图像处理概念,可以使用 imregionalmax() 函数来轻松寻找。 ### 回答3: 在MATLAB图像处理局部最大是指在图像选择一个特定的区域,在该区域找到像素最大的点。这种局部最大的搜索算法被称为极大抑制(non-maximum suppression)。在进行局部最大计算时,需要考虑到当前像素所在的图像区域,以便在该区域查找像素的最大。该算法可用于检测图像的边缘和角点,而不必搜索整个图像。 通常,局部最大算法的实现方式是,首先对图像进行梯度计算,以便找到图像的边缘和角点。接着,在梯度图像将边缘和角点标注出来,并确保像素高于阈。然后,在每个标注出来的位置选择一个局部窗口,确保该窗口的大小适当,并且包含了当前像素。最后,在窗口找到像素最大的点,将其标注为局部最大。 总之,MATLAB图像局部最大计算算法可以通过极大抑制来实现,它可以用于检测图像的边缘和角点。该算法需要选择一个适当的局部窗口大小,并确保像素高于阈,以便对图像进行有效的处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值