• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

178
Vistas
How to find the number of neighbours pixels in binary array

I am looking for an easy way to count the number of the green pixels in the image below, where the original image is the same but the green pixels are black.

I tried it with numpy.diff(), but then I am counting some pixels twice. I thought about numpy.gradient() – but here I am not sure if it is the right tool.

I know there have to be many solutions to this problem, but I don't know how to google for it. I am looking for a solution in python.

Image with a T

To make it clearer, I have only one image (only black and white pixels). The image with the green pixel is just for illustration.

about 3 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

You can use the edge detection kernel for this problem.

import numpy as np
from scipy.ndimage import convolve

a = np.array([[0, 0, 0, 0],
              [0, 1, 1, 1],
              [0, 1, 1, 1]])

kernel = np.array([[-1, -1, -1],
                   [-1,  8, -1],
                   [-1, -1, -1]])

Then, we will convolve the original array with the kernel. Notice that the edges are all negatives.

>>> convolve(a, kernel)
[[-1 -2 -3 -3]
 [-2  5  3  3]
 [-3  3  0  0]]

We will count the number of negative values and get the result.

>>> np.where(convolve(a, kernel) < 0, 1, 0)
[[1 1 1 1]
 [1 0 0 0]
 [1 0 0 0]]

>>> np.sum(np.where(convolve(a, kernel) < 0, 1, 0))
6

Edges-only kernel

There are a lot of things you can do with the kernel. For example, you can modify the kernel if you don't want to include diagonal neighbors.

kernel = np.array([[ 0, -1,  0],
                   [-1,  4, -1],
                   [ 0, -1,  0]])

This gives the following output.

>>> np.where(convolve(a, kernel) < 0, 1, 0)
[[0 1 1 1]
 [1 0 0 0]
 [1 0 0 0]]

>>> np.sum(np.where(convolve(a, kernel) < 0, 1, 0))
5
about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda