2D majority filer in MATLAB?

8 ビュー (過去 30 日間)
Elena Ranguelova
Elena Ranguelova 2017 年 2 月 24 日
回答済み: rgr478 2021 年 7 月 7 日
Hello,
Is there a 2D majority filter in MATLAB?
With ordfilt2 minimum, maximum, median etc. filters can be implemented, but not majority. Is there another command with that functionality?
Here 'majority filter' means replacing each element of a matrix by the most frequently occurring element in a set of neighbors of that element.
Regards, Elena
  1 件のコメント
Elena Ranguelova
Elena Ranguelova 2017 年 2 月 24 日
Maybe
blockproc
would help?
fun = @(block_struct) ...
mode(block_struct.data(:)) * ones(size(block_struct.data));
output_matrix = blockproc(input_matrix,[<size_x> <size_y>],fun);

サインインしてコメントする。

回答 (3 件)

Sailesh Sidhwani
Sailesh Sidhwani 2019 年 5 月 22 日
編集済み: Sailesh Sidhwani 2019 年 5 月 22 日
There is no direct function for mode filtering, you can use the colfilt instead:
out = colfilt(img, [5 5], 'sliding', @mode) ;

Sailesh Sidhwani
Sailesh Sidhwani 2020 年 11 月 25 日
A new 'modefilt' function for 2D and 3D data was added to Image Processing Toolbox in R2020a:
Both 'colfilt' and 'nlfilter' are generic sliding window functions and can be used to perform mode filtering but the expectation is that 'modefilt' to be faster than both of these functions and also work on 3D grayscale data.

rgr478
rgr478 2021 年 7 月 7 日
bwmorph(image,'majority')

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by