OpenCV - преобразование расстояния
В distance transformОператор обычно принимает двоичные изображения в качестве входных данных. В этой операции интенсивности уровней серого для точек внутри областей переднего плана изменяются для удаления их соответствующих расстояний от ближайшего значения 0 (границы).
Вы можете применить преобразование расстояния в OpenCV, используя метод distanceTransform(). Ниже приводится синтаксис этого метода.
distanceTransform(src, dst, distanceType, maskSize)
Этот метод принимает следующие параметры -
src - Объект класса Mat представляющий исходное (входное) изображение.
dst - Объект класса Mat представляющий конечное (выходное) изображение.
distanceType - Переменная целочисленного типа, представляющая тип применяемого преобразования расстояния.
maskSize - Переменная целочисленного типа, представляющая размер маски, которая будет использоваться.
пример
Следующая программа демонстрирует, как выполнить операцию преобразования расстояния на данном изображении.
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class DistanceTransform {
public static void main(String args[]) {
// Loading the OpenCV core library
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
// Reading the Image from the file and storing it in to a Matrix object
String file ="E:/OpenCV/chap19/input.jpg";
Mat src = Imgcodecs.imread(file,0);
// Creating an empty matrix to store the results
Mat dst = new Mat();
Mat binary = new Mat();
// Converting the grayscale image to binary image
Imgproc.threshold(src, binary, 100, 255, Imgproc.THRESH_BINARY);
// Applying distance transform
Imgproc.distanceTransform(mat, dst, Imgproc.DIST_C, 3);
// Writing the image
Imgcodecs.imwrite("E:/OpenCV/chap19/distnceTransform.jpg", dst);
System.out.println("Image Processed");
}
}
Предположим, что следующее - входное изображение input.jpg указанные в вышеуказанной программе.
Вывод
При выполнении программы вы получите следующий вывод -
Image Processed
Если вы откроете указанный путь, вы можете наблюдать выходное изображение следующим образом:
Типы операций преобразования расстояния
В дополнение к типу дистанционной работы DIST_Cпродемонстрированный в предыдущем примере, OpenCV обслуживает различные другие типы операций преобразования расстояния. Все эти типы представлены предопределенными статическими полями (фиксированными значениями) класса Imgproc.
Вы можете выбрать тип необходимой операции преобразования расстояния, передав соответствующее предопределенное значение параметру с именем distanceType из distanceTransform() метод.
// Applying distance transform
Imgproc.distanceTransform(mat, dst, Imgproc.DIST_C, 3);
Ниже приведены значения, представляющие различные типы distanceTransform операции и их соответствующие выходы.
Работа и описание | Вывод |
---|---|
DIST_C |
|
DIST_L1 |
|
DIST_L2 |
|
DIST_LABEL_PIXEL |
|
DIST_MASK_3 |
|