Este es un algoritmo utilizado para diluir imágenes en blanco y negro, es decir, un bit por píxel.
Por ejemplo, con una imagen de entrada de:
################# #############
################## ################
################### ############## ####
####################################
###### #### ### ####### ######
###### ####### #######
############ ##### #######
################ #######
############# #### #######
###### ####### #######
###### ####### #### ###
###### ####### ####### ######
######## ####### #### ###############
######## ####### ###### ############# ##### ######
################ ###################### # #####
################ ###### ###################
Produce la salida adelgazada:
# ########## #######
## # #### #
# # ##
# # #
# # #
# # #
### ######### #
# # #
# # #
# # #
# # #
# ##
# ############
### ## #
Algoritmo
Suponga que los píxeles negros son uno y los píxeles blancos cero, y que la imagen de entrada es una matriz rectangular N por M de unos y ceros.
El algoritmo opera en todos los píxeles negros P1 que pueden tener ocho vecinos. Los vecinos están, en orden, ordenados como:
P9 | P2 | P3 |
P8 | P1 | P4 |
P7 | P6 | P5 |
Obviamente, los píxeles del límite de la imagen no pueden tener los ocho vecinos completos.
Defina $ A (P1) $ = el número de transiciones de blanco a negro, (0 -> 1) en la secuencia P2, P3, P4, P5, P6, P7, P8, P9, P2. (Note el P2 extra al final - es circular).
Defina $ B (P1) $ = el número de vecinos de píxeles negros de P1. (= suma (P2 .. P9))
Paso 1:
Todos los píxeles se prueban y los píxeles que satisfacen todas las condiciones siguientes (simultáneamente) se anotan en esta etapa.
(0) El píxel es negro y tiene ocho vecinos
(1) $ 2 <= B (P1) <= 6 $
(2) $ A (P1) = 1 $
(3) Al menos uno de P2 y P4 y P6 es blanco
(4) Al menos uno de P4 y P6 y P8 es blanco
Después de iterar sobre la imagen y recolectar todos los píxeles que satisfacen todas las condiciones del paso 1, todas estas condiciones que satisfacen los píxeles se configuran en blanco.
Paso 2:
Todos los píxeles se vuelven a probar y los píxeles que satisfacen las siguientes condiciones se mencionan en esta etapa.
(0) El píxel es negro y tiene ocho vecinos
(1) $ 2 <= B (P1) <= 6 $
(2) $ A (P1) = 1 $
(3) Al menos uno de P2 y P4 y "'P8"' es blanco
(4) Al menos uno de "'P2"' y P6 y P8 es blanco
Después de iterar sobre la imagen y recolectar todos los píxeles que satisfacen todas las condiciones del paso 2, todas estas condiciones que satisfacen los píxeles son de nuevo en blanco. Iteración
:
Si se establecieron algunos píxeles en esta ronda del paso 1 o el paso 2, todos los pasos se repiten hasta que no se cambien los píxeles de la imagen.
Tarea:
Escriba una rutina para realizar el adelgazamiento de Zhang-Suen en una matriz de imágenes de unos y ceros.
## Instructions
```js
const testImage = [
' ',
' ################# ############# ',
' ################## ################ ',
' ################### ################## ',
' ######## ####### ################### ',
' ###### ####### ####### ###### ',
' ###### ####### ####### ',
' ################# ####### ',
' ################ ####### ',
' ################# ####### ',
' ###### ####### ####### ',
' ###### ####### ####### ',
' ###### ####### ####### ###### ',
' ######## ####### ################### ',
' ######## ####### ###### ################## ###### ',
' ######## ####### ###### ################ ###### ',
' ######## ####### ###### ############# ###### ',
' '];
function thinImage(image) {
// Good luck!
}
```
### After Test
```js
console.info('after the test');
```
## Solution