Manejo de excepciones de operaciones de álgebra de imágenes de MATLAB

					——前言——

Hay dos tipos de operaciones anormales: desbordamiento del resultado del cálculo y tipo de resultado del cálculo no válido.
① Desbordamiento del resultado del cálculo:
muchas imágenes, por ejemplo: escala de grises, color indexado, imagen binaria o imagen de color verdadero de bits limitados, los píxeles tienen un rango limitado. Cuando realizamos operaciones de suma, resta, multiplicación y división en varias imágenes, es probable que el resultado del cálculo exceda el rango de valores finitos. Por ejemplo, cuando se restan dos imágenes en escala de grises de 256 colores, el resultado puede ser negativo; cuando se realiza la adición, los píxeles superan los 255. Todos estos son resultados de cálculo desbordados.
②El tipo de resultado del cálculo no es válido:
hay muchos tipos de datos de imagen. Cuando usamos uint8, uint16, como uint8, uint16, cuando se requiere que el píxel sea un número entero, el resultado puede ser una fracción. Esto se debe a que la función de operación algebraica de imagen a menudo trata los datos como un tipo doble cuando se realizan operaciones.

La corrección de resultados de cálculo anormales sigue dos principios:
① Los resultados que exceden el rango válido de tipos enteros se truncan directamente al final del rango limitado.
[Usando uint8 como ejemplo de condición]
Ej .: El resultado teórico es -12, y el resultado corregido es 0, el resultado teórico es 687, y el resultado corregido es 255.
②Redondee el cálculo de la puntuación.

Ahora use un ejemplo para demostrar el resultado del cálculo de una nueva imagen obtenida sumando y restando una imagen.
Ejemplo: use la adición de matriz para aumentar o disminuir un determinado componente de color en la imagen.
limpiar todo;

a = imread ('C: \ 图片 \ qiqi.png');
s = tamaño (a);
b = doble (a);
c (:,:, 1) = b (:,:, 1) + b (:,:, 2);
c (:,:, 2) = b (:,:, 2);
c (:,:, 3) = b (:,:, 3) -b (:,:, 2);
para i = 1: s (1)
para j = 1: s (2)
para k = 1: s (3)
si c (i, j, k) <0
c (i, j, k) = 0;
finaliza
si c (i, j, k)> 255
c (i, j, k) = 255;
fin
fin
fin
fin

c = uint8 (c);
subparcela (121); imshow (a);
subtrama (122); imshow (c);

Resultado: Inserte la descripción de la imagen aquí
consejo: ¿qué significa matlab A = (:, 1) y T = (:,:, 1)?
A (x, y) representa el elemento de la fila x y la columna y de la matriz bidimensional, y x es: significa todas las filas. Por lo tanto, A (:, 1) significa todos los elementos de la primera columna de A, que es un vector de columna.
T = (:,:, 1): matlab T = (:,:, 1) representa todos los datos en la primera y segunda dimensión, la primera en la tercera dimensión.

Supongo que te gusta

Origin blog.csdn.net/weixin_44842715/article/details/109407686
Recomendado
Clasificación