Main Content

reduce

Paquete: images.roi

Reducir la densidad de puntos en el ROI

Descripción

ejemplo

reduce(ROI) reduce el número de puntos que definen la región de interés.ROI El objeto ROI almacena la matriz de puntos en la propiedad. reemplaza el valor original de la propiedad con el valor reducido.PositionreducePosition

El método llama a la función que utiliza el algoritmo de simplificación de línea Douglas-Peucker.reducereducepoly Este algoritmo elimina los puntos a lo largo de una línea recta y deja sólo puntos de la letra (puntos donde la línea se curva).

ejemplo

reduce(ROI,tolerance) reduce el número de puntos que definen el , donde especifica la sensibilidad de la reducción.ROItolerance Especifique el valor en el intervalo .tolerance[0,1]

Ejemplos

contraer todo

Lea una imagen en el espacio de trabajo.

I = imread('cameraman.tif');

Muestre la imagen.

imshow(I);

Dibuje un ROI en la imagen.Freehand

roi = drawfreehand;

Ver el número de puntos en la propiedad después de completar la forma.Position

disp(['Original Size of Position property: ' mat2str(size(roi.Position))]);
Original Size of Position property: [272 2] 

Utilice la función de objeto para reducir el número de puntos necesarios para definir la forma.reduce

reduce(roi)

Ver el número reducido de puntos en la propiedad.Position

disp(['Reduced Size of Position property: ' mat2str(size(roi.Position))]);
Reduced Size of Position property: [100 2] 

Lea una imagen en el espacio de trabajo.

I = imread('cameraman.tif');

Muestre la imagen.

imshow(I);

Dibuje un ROI en la imagen.Polyline

roi = drawpolyline;

Ver el número de puntos en la propiedad después de completar la forma.Position

disp(['Original Size of Position property: ' mat2str(size(roi.Position))]);
Original Size of Position property: [12 2] 

Utilice la función de objeto para reducir el número de puntos necesarios para definir la forma.reduce

reduce(roi)

Ver el número reducido de puntos en la propiedad.Position

disp(['First try at reducing the number of points: ' mat2str(size(roi.Position))]);
First try at reducing the number of points: [12 2] 

que el número de puntos no se cambia.N Para mejorar el resultado, cambie el parámetro Tolerancia. De forma predeterminada, la tolerancia se establece en .01. Aumente el valor e inténtelo de nuevo.

reduce(roi,0.3)

Vuelva a ver el tamaño de la propiedad.Position Cambiar la tolerancia dio lugar a una reducción.

disp(['Reduction after resetting tolerance parameter: ' mat2str(size(roi.Position))]);
Reduction after resetting tolerance parameter: [4 2] 

Argumentos de entrada

contraer todo

Objeto de ROI, especificado como uno de los siguientes objetos de ROI: , , , y .AssistedFreehandFreehandPolygonPolyline

Sensibilidad de reducción, especificada como escalar numérico en este rango.[0 1.0] Aumentar la tolerancia aumenta el número de puntos eliminados. Un valor de tolerancia de 0 reduce un número mínimo de puntos. Un valor de tolerancia de da como resultado la reducción máxima de puntos, dejando solo los puntos finales de la línea.1

Algoritmos

El algoritmo de simplificación de línea Douglas-Peucker subdivide recursivamente una forma que busca reemplazar una tirada de puntos con una línea recta. El algoritmo comprueba que ningún punto de la ejecución se desvía de la línea recta en más del valor especificado por .tolerance

Consulte también

Introducido en R2019b