Filtro de imagem que usa a maior ocorrência de valores de pixel

Eu quero usar um filtro de imagem, que deve substituir o pixel com o qual está lidando com a maior ocorrência de vizinhos. Por exemplo, se o pixel tiver o valor 10 e os 8 vizinhos tiverem 9, 9, 9, 27, 27, 200, 200, 210, deverá escolher 9, porque 9 tem a maior ocorrência na vizinhança. Também deve considerar o próprio pixel também. Por exemplo, se o pixel tiver o valor 27 e os 8 vizinhos tiverem 27, 27, 30, 30, 34, 70, 120, 120, deverá escolher 27, porque 27 existe 3 vezes, incluindo o próprio pixel. Eu também deveria ter a opção de escolher o tamanho do kernel. Não encontrei um filtro assim. Existe um? Ou tenho que criá-lo por conta própria? Eu uso o opencv com python.

Informações de fundo: não posso usar apenas o filtro Mediano, porque minhas imagens são diferentes. Tenho imagens em cinza com 3 a 6 valores de cinza diferentes. Portanto, não posso usar algumas transformações morfológicas. Não obtenho o resultado que desejo. O filtro mediano selecionaria o valor mediano, porque a idéia é que os valores representem a imagem da maneira correta. Mas minhas imagens são o resultado de kmeans e os 3-6 diferentes valores de cinza não têm uma conexão lógic

questionAnswers(1)

yourAnswerToTheQuestion