This document discusses techniques for automatically extracting lines from a digital image. It introduces two common edge detection operators - Sobel and Canny - to identify edges in an image that can then be input to the Hough transform for line detection. It also explores using different filtering masks prior to edge detection and adaptive thresholding to improve results. The identified lines from the Hough transform are then intersected and clustered using k-means to estimate vanishing points for perspective calculation. Experimental validation of the results is also discussed.
The document describes techniques for image texture analysis and segmentation. It proposes a methodology using constraint satisfaction neural networks to integrate region-based and edge-based texture segmentation. The methodology initializes a CSNN using fuzzy c-means clustering, then iteratively updates the neuron probabilities and edge maps to refine the segmentation. Experimental results demonstrate improved segmentation by combining region and edge information.
Hybrid Technique for Copy-Move Forgery Detection Using L*A*B* Color Space IJEEE
Copy-move forgery is applied on an image to hide a region or an object. Most of the detection techniques either use transform domain or spatial domain information to detect the forgery. This paper presents a hybrid method to detect the forgery making use of both the domains i.e. transform domain in whichSVD is used to extract the useful information from image and spatial domain in which L*a*b* color space is used. Here block based approach and lexicographical sorting is used to group matching feature vectors. Obtained experimental results demonstrate that proposed method efficiently detects copy-move forgery even when post-processing operations like blurring, noise contamination, and severe lossy compression are applied.
This document discusses digital image processing concepts including:
- Image acquisition and representation, including sampling and quantization of images. CCD arrays are commonly used in digital cameras to capture images as arrays of pixels.
- A simple image formation model where the intensity of a pixel is a function of illumination and reflectance at that point. Typical ranges of illumination and reflectance are provided.
- Image interpolation techniques like nearest neighbor, bilinear, and bicubic interpolation which are used to increase or decrease the number of pixels in a digital image. Examples of applying these techniques are shown.
- Basic relationships between pixels including adjacency, paths, regions, boundaries, and distance measures like Euclidean, city block, and
1. The document discusses machine vision techniques including image filtering in the frequency domain and wavelet transforms. It provides details on Fourier transforms, common filters like low pass and high pass, and compares Fourier and wavelet transforms.
2. Fourier transforms allow filtering images by manipulating the image's frequency spectrum but do not provide time information. Wavelet transforms analyze images based on frequency and time, providing advantages over Fourier transforms for non-stationary signals.
3. Common filters discussed are ideal, Butterworth, and Gaussian filters for both low pass and high pass. Examples show the effects of applying these filters to an image. Discrete wavelet transforms provide an efficient method to decompose signals into different frequency bands.
International Journal of Engineering Research and Applications (IJERA) is an open access online peer reviewed international journal that publishes research and review articles in the fields of Computer Science, Neural Networks, Electrical Engineering, Software Engineering, Information Technology, Mechanical Engineering, Chemical Engineering, Plastic Engineering, Food Technology, Textile Engineering, Nano Technology & science, Power Electronics, Electronics & Communication Engineering, Computational mathematics, Image processing, Civil Engineering, Structural Engineering, Environmental Engineering, VLSI Testing & Low Power VLSI Design etc.
The document discusses key concepts in digital image fundamentals including:
1. The electromagnetic spectrum and how light attributes like intensity and luminance are measured.
2. How digital images are acquired through image sensing and sampling/quantization.
3. Methods for representing digital images through matrices and binary values, and how resolution affects gray-level detail.
4. Digital zooming techniques like nearest neighbor, bilinear, and bicubic interpolation that control blurring and edge effects.
5. Concepts like pixel adjacency, connectivity, and distance measures between pixels.
Video surveillance is active research topic in
computer vision research area for humans & vehicles, so it is
used over a great extent. Multiple images generated using a fixed
camera contains various objects, which are taken under different
variations, illumination changes after that the object’s identity
and orientation are provided to the user. This scheme is used to
represent individual images as well as various objects classes in a
single, scale and rotation invariant model.The objective is to
improve object recognition accuracy for surveillance purposes &
to detect multiple objects with sufficient level of scale
invariance.Multiple objects detection& recognition is important
in the analysis of video data and higher level security system. This
method can efficiently detect the objects from query images as
well as videos by extracting frames one by one. When given a
query image at runtime, by generating the set of query features
and it will find best match it to other sets within the database.
Using SURF algorithm find the database object with the best
feature matching, then object is present in the query image.
The document describes techniques for image texture analysis and segmentation. It proposes a methodology using constraint satisfaction neural networks to integrate region-based and edge-based texture segmentation. The methodology initializes a CSNN using fuzzy c-means clustering, then iteratively updates the neuron probabilities and edge maps to refine the segmentation. Experimental results demonstrate improved segmentation by combining region and edge information.
Hybrid Technique for Copy-Move Forgery Detection Using L*A*B* Color Space IJEEE
Copy-move forgery is applied on an image to hide a region or an object. Most of the detection techniques either use transform domain or spatial domain information to detect the forgery. This paper presents a hybrid method to detect the forgery making use of both the domains i.e. transform domain in whichSVD is used to extract the useful information from image and spatial domain in which L*a*b* color space is used. Here block based approach and lexicographical sorting is used to group matching feature vectors. Obtained experimental results demonstrate that proposed method efficiently detects copy-move forgery even when post-processing operations like blurring, noise contamination, and severe lossy compression are applied.
This document discusses digital image processing concepts including:
- Image acquisition and representation, including sampling and quantization of images. CCD arrays are commonly used in digital cameras to capture images as arrays of pixels.
- A simple image formation model where the intensity of a pixel is a function of illumination and reflectance at that point. Typical ranges of illumination and reflectance are provided.
- Image interpolation techniques like nearest neighbor, bilinear, and bicubic interpolation which are used to increase or decrease the number of pixels in a digital image. Examples of applying these techniques are shown.
- Basic relationships between pixels including adjacency, paths, regions, boundaries, and distance measures like Euclidean, city block, and
1. The document discusses machine vision techniques including image filtering in the frequency domain and wavelet transforms. It provides details on Fourier transforms, common filters like low pass and high pass, and compares Fourier and wavelet transforms.
2. Fourier transforms allow filtering images by manipulating the image's frequency spectrum but do not provide time information. Wavelet transforms analyze images based on frequency and time, providing advantages over Fourier transforms for non-stationary signals.
3. Common filters discussed are ideal, Butterworth, and Gaussian filters for both low pass and high pass. Examples show the effects of applying these filters to an image. Discrete wavelet transforms provide an efficient method to decompose signals into different frequency bands.
International Journal of Engineering Research and Applications (IJERA) is an open access online peer reviewed international journal that publishes research and review articles in the fields of Computer Science, Neural Networks, Electrical Engineering, Software Engineering, Information Technology, Mechanical Engineering, Chemical Engineering, Plastic Engineering, Food Technology, Textile Engineering, Nano Technology & science, Power Electronics, Electronics & Communication Engineering, Computational mathematics, Image processing, Civil Engineering, Structural Engineering, Environmental Engineering, VLSI Testing & Low Power VLSI Design etc.
The document discusses key concepts in digital image fundamentals including:
1. The electromagnetic spectrum and how light attributes like intensity and luminance are measured.
2. How digital images are acquired through image sensing and sampling/quantization.
3. Methods for representing digital images through matrices and binary values, and how resolution affects gray-level detail.
4. Digital zooming techniques like nearest neighbor, bilinear, and bicubic interpolation that control blurring and edge effects.
5. Concepts like pixel adjacency, connectivity, and distance measures between pixels.
Video surveillance is active research topic in
computer vision research area for humans & vehicles, so it is
used over a great extent. Multiple images generated using a fixed
camera contains various objects, which are taken under different
variations, illumination changes after that the object’s identity
and orientation are provided to the user. This scheme is used to
represent individual images as well as various objects classes in a
single, scale and rotation invariant model.The objective is to
improve object recognition accuracy for surveillance purposes &
to detect multiple objects with sufficient level of scale
invariance.Multiple objects detection& recognition is important
in the analysis of video data and higher level security system. This
method can efficiently detect the objects from query images as
well as videos by extracting frames one by one. When given a
query image at runtime, by generating the set of query features
and it will find best match it to other sets within the database.
Using SURF algorithm find the database object with the best
feature matching, then object is present in the query image.
This document provides an overview of image filtering techniques in the spatial domain. It discusses smoothing filters using averaging and Gaussian weighting. It introduces first derivative filters like Sobel operators that detect edges, and second derivative filters like the Laplacian that are useful for sharpening. The Laplacian highlights edges by finding the second spatial derivative. Sharpening is done by subtracting the Laplacian from the original image. Variations are discussed.
This document summarizes the block matching based motion estimation algorithm. The algorithm estimates motion between two frames by comparing blocks in the reference frame to blocks in the target frame. It discusses key parameters like block size, search window, and matching criteria. Experimental results on example images demonstrate how varying these parameters affects the motion fields and computation time. The best results were found with a block size of 16x16, search window of 16, and threshold of 1.7.
This document summarizes an internship report on image analysis of SEM images. It discusses various image processing and analysis techniques used for SEM images, including:
- Converting RGB images to grayscale and binary images
- Segmentation techniques like thresholding, clustering, watershed segmentation, and quick shift segmentation
- Introduction to graphs and Markov chain Monte Carlo methods like the Swendsen Wang method
The document discusses image representation and feature extraction techniques. It describes how representation makes image information more accessible for computer interpretation using either boundaries or pixel regions. Feature extraction quantifies these representations by extracting descriptors like geometric properties, statistical moments, and textures. Desirable properties for descriptors include being invariant to transformations, compact, robust to noise, and having low complexity. Various boundary and regional descriptors are defined, such as chain codes, shape numbers, and moments.
This document provides information about a digital image processing lecture given by Dr. Moe Moe Myint from Technological University in Kyaukse, Myanmar. It includes the lecture schedule and contact information for Dr. Myint. The document also provides an overview of Chapter 2 which discusses elements of visual perception, light and the electromagnetic spectrum, image sensing and acquisition, image sampling and quantization, and basic relationships between pixels. It provides examples of different types of digital images including intensity, RGB, binary, and index images. It also discusses the effects of spatial and intensity level resolution on images.
At the end of this lesson, you should be able to;
describe the energy and the EM spectrum.
describe image acquisition methods.
discuss image formation model.
express sampling and quantization.
define dynamic range and image representation.
Adaptive Median Filters
Elements of visual perception
Representing Digital Images
Spatial and Intensity Resolution
cones and rods
Brightness Adaptation
Spatial and Intensity Resolution
1. Edge detection aims to identify discontinuities in images that encode shape and semantic information. The Canny edge detector is widely used due to its theoretical foundation and ability to optimize signal-to-noise ratio and localization.
2. The Hough transform is a technique to find straight lines in images by mapping edge points in image space to curves in a parameter space representing lines. It works by accumulating votes from edge points for parameter values corresponding to lines they could belong to.
3. Connected component analysis provides an alternative approach by grouping edge pixels into line segments, then analyzing each segment's pixels to determine orientation and straightness. This avoids explicitly searching a parameter space as in the Hough transform.
The document discusses various techniques for image segmentation including discontinuity-based approaches, similarity-based approaches, thresholding methods, region-based segmentation using region growing and region splitting/merging. Key techniques covered include edge detection using gradient operators, the Hough transform for edge linking, optimal thresholding, and split-and-merge segmentation using quadtrees.
3 intensity transformations and spatial filtering slidesBHAGYAPRASADBUGGE
This document discusses basics of intensity transformations and spatial filtering of digital images. It covers the following key points:
- Intensity transformations map input pixel intensities to output intensities using an operator T. Common transformations include log, power-law, and piecewise-linear functions.
- Spatial filters operate on neighborhoods of pixels. Linear filters perform averaging or correlation while non-linear filters use ordering like median.
- Basic filters include smoothing to reduce noise, sharpening to enhance edges using Laplacian or unsharp masking, and gradient for edge detection.
- Fuzzy set theory can be applied to intensity transformations by defining membership functions for concepts like dark/bright. It can also be used for spatial filtering by defining
This document provides an introduction to digital image processing. It discusses key topics like image representation as matrices, image digitization which involves sampling and quantization, and the basic steps in digital image processing such as image acquisition, preprocessing, segmentation, feature extraction, recognition and interpretation. Importance of image processing is highlighted for applications like remote sensing, machine vision, and medical imaging. Common techniques like noise filtering, contrast enhancement, compression and their importance are also summarized.
This document discusses image segmentation techniques, specifically linking edge points through local and global processing. Local processing involves linking edge-detected pixels that are similar in gradient strength and direction within a neighborhood. Global processing uses the Hough transform to link edge points into lines by mapping points in the image space to the parameter space of slope-intercept or polar coordinates. Thresholding in parameter space identifies coherent lines composed of edge points. The Hough transform allows finding lines even if there are gaps or other defects in detected edge points.
Edge detection identifies points in a digital image where brightness changes sharply. It is used for image segmentation to divide an image into regions of different objects. The Canny edge detection algorithm is commonly used as it has low error rates and well-localized edges. It applies noise reduction, finds intensity gradients, performs non-maximum suppression and hysteresis thresholding to detect a wide range of edges.
Image enhancement techniques can be used to improve image visual appearance and analysis by accentuating features like edges and boundaries. There are several techniques including:
1. Point operations like contrast stretching and thresholding that modify pixel values.
2. Spatial operations like noise smoothing and sharpening that apply neighborhood pixel averaging or differencing.
3. Transform domain techniques like filtering in the frequency domain to accelerate operations like noise removal.
4. Edge enhancement methods like the pyramid approach that detects edges across multiple image scales to isolate significant edges.
Denoising and Edge Detection Using SobelmethodIJMER
The main aim of our study is to detect edges in the image without any noise , In many of the images edges carry important information of the image, this paper presents a method which consists of sobel operator and discrete wavelet de-noising to do edge detection on images which include white Gaussian noises. There were so many methods for the edge detection, sobel is the one of the method, by using this sobel operator or median filtering, salt and pepper noise cannot be removed properly, so firstly we use complex wavelet to remove noise and sobel operator is used to do edge detection on the image. Through the pictures obtained by the experiment, we can observe that compared to other methods, the method has more obvious effect on edge detection.
Jerlyn Manohar uses Python for 2D and 3D image processing, managing digital assets, and testing tools and plugins. Python is widely used due to its readability, quick development, simple syntax, beginner friendliness, large community, and ability to interact with other languages. Python can be used for web development, machine learning, data analysis, desktop apps, games, image processing, and more. Setting up Python involves installing it and checking the environment. Python supports basic data types like integers, floats, strings, booleans, as well as collection types like lists, tuples, sets, and dictionaries. Other topics covered include conditions, loops, functions, exceptions, user input, and digital image processing concepts.
Hardware Unit for Edge Detection with Comparative Analysis of Different Edge ...paperpublications3
Abstract: An edge in an image is a contour across which the brightness of the image changes abruptly. In image processing, an edge is often interpreted as one class of singularities. Edge detection is an important task in image processing. It is a main tool in pattern recognition, image segmentation, and scene analysis. An edge detector is basically a high pass filter that can be applied to extract the edge points in an image. This topic has attracted many researchers and many achievements have been made. Many researchers provided different approaches based on mathematical calculations which some of them are either robust or cost effective. A new algorithm will be proposed to detect the edges of image with increased robustness and throughput. Using this algorithm we will reduce the time complexity problem which is faced by previous algorithm. We will also propose hardware unit for proposed algorithm which will reduce the area, power and speed problem. We will compare our proposed algorithm with previous approach. For image quality measurement we will use some scientific parameters those are PSNR, SSIM, FSIM. Implementation of proposed algorithm will be done by Matlab and hardware implementation will be done by using of Verilog on Xilinx 14.1 simulator. Verification will be done on Model sim.
A PROJECT REPORT ON REMOVAL OF UNNECESSARY OBJECTS FROM PHOTOS USING MASKINGIRJET Journal
This document presents a project report on removing unnecessary objects from photos using masking techniques. It discusses using algorithms like Fast Marching and Navier-Stokes to fill in missing image data and maintain continuity across boundaries. The Fast Marching method begins at region boundaries and works inward, prioritizing completion of boundary pixels first. Navier-Stokes uses fluid dynamics equations to continue intensity value functions and ensure they remain continuous at boundaries. Color filtering can also be used to segment specific colored objects or regions. The project aims to implement these techniques to remove unwanted objects from images and fill the resulting gaps seamlessly.
This document provides an overview of image filtering techniques in the spatial domain. It discusses smoothing filters using averaging and Gaussian weighting. It introduces first derivative filters like Sobel operators that detect edges, and second derivative filters like the Laplacian that are useful for sharpening. The Laplacian highlights edges by finding the second spatial derivative. Sharpening is done by subtracting the Laplacian from the original image. Variations are discussed.
This document summarizes the block matching based motion estimation algorithm. The algorithm estimates motion between two frames by comparing blocks in the reference frame to blocks in the target frame. It discusses key parameters like block size, search window, and matching criteria. Experimental results on example images demonstrate how varying these parameters affects the motion fields and computation time. The best results were found with a block size of 16x16, search window of 16, and threshold of 1.7.
This document summarizes an internship report on image analysis of SEM images. It discusses various image processing and analysis techniques used for SEM images, including:
- Converting RGB images to grayscale and binary images
- Segmentation techniques like thresholding, clustering, watershed segmentation, and quick shift segmentation
- Introduction to graphs and Markov chain Monte Carlo methods like the Swendsen Wang method
The document discusses image representation and feature extraction techniques. It describes how representation makes image information more accessible for computer interpretation using either boundaries or pixel regions. Feature extraction quantifies these representations by extracting descriptors like geometric properties, statistical moments, and textures. Desirable properties for descriptors include being invariant to transformations, compact, robust to noise, and having low complexity. Various boundary and regional descriptors are defined, such as chain codes, shape numbers, and moments.
This document provides information about a digital image processing lecture given by Dr. Moe Moe Myint from Technological University in Kyaukse, Myanmar. It includes the lecture schedule and contact information for Dr. Myint. The document also provides an overview of Chapter 2 which discusses elements of visual perception, light and the electromagnetic spectrum, image sensing and acquisition, image sampling and quantization, and basic relationships between pixels. It provides examples of different types of digital images including intensity, RGB, binary, and index images. It also discusses the effects of spatial and intensity level resolution on images.
At the end of this lesson, you should be able to;
describe the energy and the EM spectrum.
describe image acquisition methods.
discuss image formation model.
express sampling and quantization.
define dynamic range and image representation.
Adaptive Median Filters
Elements of visual perception
Representing Digital Images
Spatial and Intensity Resolution
cones and rods
Brightness Adaptation
Spatial and Intensity Resolution
1. Edge detection aims to identify discontinuities in images that encode shape and semantic information. The Canny edge detector is widely used due to its theoretical foundation and ability to optimize signal-to-noise ratio and localization.
2. The Hough transform is a technique to find straight lines in images by mapping edge points in image space to curves in a parameter space representing lines. It works by accumulating votes from edge points for parameter values corresponding to lines they could belong to.
3. Connected component analysis provides an alternative approach by grouping edge pixels into line segments, then analyzing each segment's pixels to determine orientation and straightness. This avoids explicitly searching a parameter space as in the Hough transform.
The document discusses various techniques for image segmentation including discontinuity-based approaches, similarity-based approaches, thresholding methods, region-based segmentation using region growing and region splitting/merging. Key techniques covered include edge detection using gradient operators, the Hough transform for edge linking, optimal thresholding, and split-and-merge segmentation using quadtrees.
3 intensity transformations and spatial filtering slidesBHAGYAPRASADBUGGE
This document discusses basics of intensity transformations and spatial filtering of digital images. It covers the following key points:
- Intensity transformations map input pixel intensities to output intensities using an operator T. Common transformations include log, power-law, and piecewise-linear functions.
- Spatial filters operate on neighborhoods of pixels. Linear filters perform averaging or correlation while non-linear filters use ordering like median.
- Basic filters include smoothing to reduce noise, sharpening to enhance edges using Laplacian or unsharp masking, and gradient for edge detection.
- Fuzzy set theory can be applied to intensity transformations by defining membership functions for concepts like dark/bright. It can also be used for spatial filtering by defining
This document provides an introduction to digital image processing. It discusses key topics like image representation as matrices, image digitization which involves sampling and quantization, and the basic steps in digital image processing such as image acquisition, preprocessing, segmentation, feature extraction, recognition and interpretation. Importance of image processing is highlighted for applications like remote sensing, machine vision, and medical imaging. Common techniques like noise filtering, contrast enhancement, compression and their importance are also summarized.
This document discusses image segmentation techniques, specifically linking edge points through local and global processing. Local processing involves linking edge-detected pixels that are similar in gradient strength and direction within a neighborhood. Global processing uses the Hough transform to link edge points into lines by mapping points in the image space to the parameter space of slope-intercept or polar coordinates. Thresholding in parameter space identifies coherent lines composed of edge points. The Hough transform allows finding lines even if there are gaps or other defects in detected edge points.
Edge detection identifies points in a digital image where brightness changes sharply. It is used for image segmentation to divide an image into regions of different objects. The Canny edge detection algorithm is commonly used as it has low error rates and well-localized edges. It applies noise reduction, finds intensity gradients, performs non-maximum suppression and hysteresis thresholding to detect a wide range of edges.
Image enhancement techniques can be used to improve image visual appearance and analysis by accentuating features like edges and boundaries. There are several techniques including:
1. Point operations like contrast stretching and thresholding that modify pixel values.
2. Spatial operations like noise smoothing and sharpening that apply neighborhood pixel averaging or differencing.
3. Transform domain techniques like filtering in the frequency domain to accelerate operations like noise removal.
4. Edge enhancement methods like the pyramid approach that detects edges across multiple image scales to isolate significant edges.
Denoising and Edge Detection Using SobelmethodIJMER
The main aim of our study is to detect edges in the image without any noise , In many of the images edges carry important information of the image, this paper presents a method which consists of sobel operator and discrete wavelet de-noising to do edge detection on images which include white Gaussian noises. There were so many methods for the edge detection, sobel is the one of the method, by using this sobel operator or median filtering, salt and pepper noise cannot be removed properly, so firstly we use complex wavelet to remove noise and sobel operator is used to do edge detection on the image. Through the pictures obtained by the experiment, we can observe that compared to other methods, the method has more obvious effect on edge detection.
Jerlyn Manohar uses Python for 2D and 3D image processing, managing digital assets, and testing tools and plugins. Python is widely used due to its readability, quick development, simple syntax, beginner friendliness, large community, and ability to interact with other languages. Python can be used for web development, machine learning, data analysis, desktop apps, games, image processing, and more. Setting up Python involves installing it and checking the environment. Python supports basic data types like integers, floats, strings, booleans, as well as collection types like lists, tuples, sets, and dictionaries. Other topics covered include conditions, loops, functions, exceptions, user input, and digital image processing concepts.
Hardware Unit for Edge Detection with Comparative Analysis of Different Edge ...paperpublications3
Abstract: An edge in an image is a contour across which the brightness of the image changes abruptly. In image processing, an edge is often interpreted as one class of singularities. Edge detection is an important task in image processing. It is a main tool in pattern recognition, image segmentation, and scene analysis. An edge detector is basically a high pass filter that can be applied to extract the edge points in an image. This topic has attracted many researchers and many achievements have been made. Many researchers provided different approaches based on mathematical calculations which some of them are either robust or cost effective. A new algorithm will be proposed to detect the edges of image with increased robustness and throughput. Using this algorithm we will reduce the time complexity problem which is faced by previous algorithm. We will also propose hardware unit for proposed algorithm which will reduce the area, power and speed problem. We will compare our proposed algorithm with previous approach. For image quality measurement we will use some scientific parameters those are PSNR, SSIM, FSIM. Implementation of proposed algorithm will be done by Matlab and hardware implementation will be done by using of Verilog on Xilinx 14.1 simulator. Verification will be done on Model sim.
A PROJECT REPORT ON REMOVAL OF UNNECESSARY OBJECTS FROM PHOTOS USING MASKINGIRJET Journal
This document presents a project report on removing unnecessary objects from photos using masking techniques. It discusses using algorithms like Fast Marching and Navier-Stokes to fill in missing image data and maintain continuity across boundaries. The Fast Marching method begins at region boundaries and works inward, prioritizing completion of boundary pixels first. Navier-Stokes uses fluid dynamics equations to continue intensity value functions and ensure they remain continuous at boundaries. Color filtering can also be used to segment specific colored objects or regions. The project aims to implement these techniques to remove unwanted objects from images and fill the resulting gaps seamlessly.
Edge detection is the name for a set of mathematical methods which aim at identifying points in a digital image at which the image brightness changes sharply or, more formally, has discontinuities.
This document discusses single object tracking and velocity determination. It begins with an introduction and objectives of the project which is to develop an algorithm for tracking a single object and determining its velocity in a sequence of video frames. It then provides details on preprocessing techniques like mean filtering, Gaussian smoothing and median filtering to reduce noise. It describes segmentation methods including histogram-based, single Gaussian background and frame difference approaches. Feature extraction methods like edges, bounding boxes and color are explained. Object detection using optical flow and block matching is covered. Finally, it discusses tracking and calculating velocity of the moving object. MATLAB is introduced as a technical computing language for solving these types of problems.
This document outlines an assignment for a computer vision course. Students are asked to implement 4 vision algorithms: 2 using OpenCV and 2 using MATLAB. The algorithms are the log-polar transform, background subtraction, histogram equalization, and contrast stretching. Students must also answer 3 short questions about orthographic vs perspective projection, efficient filtering, and sensors beyond cameras for computer vision.
User Interactive Color Transformation between ImagesIJMER
Abstract: In this paper we present a process called color
transfer which can borrow one image’s color
characteristics from another. Most current colorization
algorithms either require a significant user effort or have
large computational time. Here focus on orthogonal color
space i.e. lαβ color space without correlation between the
axes is given. Here we have implemented two global color
transfer algorithms in lαβ color space using simple color
statistical information such as mean, standard deviation
and covariance between the pixels of image. Our approach
is the extension of Reinhard's. Our local color transfer
algorithm uses simple color statistical analysis to recolor
the target image according to selected color range in
source image. Target image’s color influence mask is
prepared. It is a mask that specifies what parts of target
image will be affected according to selected color range.
After that target image is recolored in lαβ color space
according to prepared color influence map. In the lαβ
color space luminance and chrominance information is
separate so it allows making image recoloring optional.
The basic color transformation uses stored color statistics
of source and target image. All the algorithms are
implemented in JAVA object oriented language. The main
advantage of proposed method over the existing one is it
allows the user to recolor a part of the image in a simple &
intuitive way, preserving other color intact & achieving
natural look.
Index Terms: color transfer, local color statistics, color
characteristics, orthogonal color space, color influence
map.
Simple Pendulum Experiment and Automatic Survey Grading using Computer VisionAnish Patel
The document describes two computer vision projects: 1) A program that analyzes video from a webcam of a simple pendulum experiment and calculates physics quantities like angle, speed, and energy. 2) A program that grades scanned survey forms by analyzing pixel density to determine filled-in answers. The pendulum program displays angle measurements over time that match expected values. The survey program accurately grades forms with different levels of noise. Both were developed in C++ using OpenCV for computer vision processing.
The document discusses using Fast Fourier Transform (FFT) with Retinex and histogram equalization techniques for digital image enhancement. It begins with an introduction to digital image processing and common enhancement algorithms like histogram equalization, filtering, and Retinex. It then describes how FFT can be applied to images to perform operations like filtering more efficiently in the frequency domain. The document outlines the Retinex theory and algorithms like single-scale and multi-scale Retinex. It also describes histogram equalization. Experimental results using MATLAB show that FFT with histogram equalization provided better image quality improvement compared to multi-scale Retinex alone. The combination of techniques can enhance image details, contrast, and reduce computational time.
This project report discusses applying a Sobel edge detection algorithm and median filtering to colour JPEG images. It introduces the Sobel edge detection algorithm, which uses two 3x3 kernels to approximate horizontal and vertical derivatives in an image. It also discusses median filtering to reduce impulsive noise without blurring edges. The report outlines using the libjpeg library to read, write and process JPEG images in C code. It includes the source code for implementing Sobel edge detection and median filtering on JPEG images.
This document presents a method for identity recognition using edge suppression. It aims to recognize identity even under severe shadows. The method uses edge suppression through affine transformation and gradient field calculation to determine light source positions. K-nearest neighbor classification is used for matching identities in databases, along with principal component analysis for feature extraction. Diagonally projecting tensors are applied to suppress edges and remove shadows from images. The method is evaluated on standard databases and is proposed to work for real-time identity recognition applications.
This document provides an introduction to graphics programming and algorithms for modeling and drawing 2D and 3D objects on screen. It summarizes basic algorithms for drawing line segments, polygons, and transforming shapes. The algorithms are implemented in C++ code available on GitHub. It then discusses representing continuous lines and polygons on discrete screens, and introduces the Digital Differential Analyzer (DDA) algorithm for drawing line segments by incrementally moving across pixel columns based on the line's slope. An example of applying DDA to a line segment is shown step-by-step.
IJCER (www.ijceronline.com) International Journal of computational Engineerin...ijceronline
1) The document discusses various techniques for edge detection in digital images, including differential operators, log operators, Canny operators, and binary morphology.
2) It first performs wavelet-based denoising on input images to remove noise before edge detection.
3) It then applies different edge detection operators and compares their advantages and disadvantages through simulations. Binary morphology is shown to obtain better edge features compared to other operators.
4) The overall goal is to extract clear and complete edge profiles from images to aid in tasks like image segmentation.
This paper discusses techniques for digital image processing, including noise reduction, edge detection, and histogram equalization. Noise reduction techniques discussed include mean, Gaussian, and median filters to remove salt and pepper noise and Gaussian noise. Edge detection algorithms like Sobel and Laplacian are introduced to reduce image data while preserving object boundaries. Histogram equalization is used for image enhancement by spreading pixel values across the full intensity range for increased contrast. The goal is recognizing objects in images through these preprocessing steps.
Image Interpolation Techniques with Optical and Digital Zoom Concepts -semina...mmjalbiaty
full details about Spatial and Intensity Resolution , optical and digital zoom concepts and the common three interpolation algorithms for implementing zoom in image processing
This document discusses techniques for image segmentation and edge detection. It proposes a generalized boundary detection method called Gb that combines low-level and mid-level image representations in a single eigenvalue problem to detect boundaries. Gb achieves state-of-the-art results at low computational cost. Soft segmentation is also introduced to improve boundary detection accuracy with minimal extra computation. Common methods for edge detection are described, including gradient-based, texture-based, and projection profile-based approaches. Improved Harris and corner detection algorithms are presented to more accurately detect edges and corners. The output of Gb using soft segmentations as input is shown to correlate well with occlusions and whole object boundaries while capturing general boundaries.
Performance of Efficient Closed-Form Solution to Comprehensive Frontier Exposureiosrjce
This document discusses boundary detection techniques for images. It proposes a generalized boundary detection method (Gb) that combines low-level and mid-level image representations in a single eigenvalue problem to detect boundaries. Gb achieves state-of-the-art results at low computational cost. Soft segmentation and contour grouping methods are also introduced to further improve boundary detection accuracy with minimal extra computation. The document presents outputs of Gb on sample images and concludes that Gb effectively detects boundaries in a principled manner by jointly resolving constraints from multiple image interpretation layers in closed form.
2-Dimensional Wavelet pre-processing to extract IC-Pin information for disarr...IOSR Journals
Abstract: Due to higher processing power to cost ratio, it is now possible to replace the manual detection methods used in the IC (Integrated Circuit) industry by Image-processing based automated methods, to detect a broken pin of an IC connected on a PCB during manufacturing, which will make the process faster, easier and cheaper. In this paper an accurate and fast automatic detection method is used where the top view camera shots of PCBs are processed using advanced methods of 2-dimensional discrete wavelet pre-processing before applying edge-detection. Comparison with conventional edge detection methods such as Sobel, Prewitt and Canny edge detection without 2-D DWT is also performed. Keywords :2-dimensional wavelets, Edge detection, Machine vision, Image processing, Canny.
This document provides an overview of key concepts in digital image fundamentals. It discusses the human visual system and image formation in the eye. It also covers image acquisition, sampling, quantization, and representation. Additionally, it defines concepts like spatial and intensity resolution and describes basic image processing operations and transforms. The goal is to introduce fundamental digital image processing concepts.
A STUDY AND ANALYSIS OF DIFFERENT EDGE DETECTION TECHNIQUEScscpconf
In the first study [1], a combination of K-means, watershed segmentation method, and Difference In Strength (DIS) map were used to perform image segmentation and edge detection
tasks. We obtained an initial segmentation based on K-means clustering technique. Starting from this, we used two techniques; the first is watershed technique with new merging
procedures based on mean intensity value to segment the image regions and to detect their boundaries. The second is edge strength technique to obtain accurate edge maps of our images without using watershed method. In this technique: We solved the problem of undesirable over segmentation results produced by the watershed algorithm, when used directly with raw data images. Also, the edge maps we obtained have no broken lines on entire image. In the 2nd study level set methods are used for the implementation of curve/interface evolution under various forces. In the third study the main idea is to detect regions (objects) boundaries, to isolate and extract individual components from a medical image. This is done using an active contours to detect regions in a given image, based on techniques of curve evolution, Mumford–Shah functional for segmentation and level sets. Once we classified our images into different intensity regions based on Markov Random Field. Then we detect regions whose boundaries are not necessarily defined by gradient by minimize an energy of Mumford–Shah functional forsegmentation, where in the level set formulation, the problem becomes a mean-curvature which will stop on the desired boundary. The stopping term does not depend on the gradient of the image as in the classical active contour. The initial curve of level set can be anywhere in the image, and interior contours are automatically detected. The final image segmentation is one
closed boundary per actual region in the image.
This document provides an introduction to fundamentals of image processing. It defines key concepts such as digital images, image sampling, and common image processing tools. Digital images are represented as arrays of pixels with integer brightness values. Common image processing tools introduced include convolution, Fourier transforms, and different types of image operations and neighborhoods that can be used. The document also discusses video standards and parameters for digitized video images.
Similar to Estrazione automatica delle linee in un'immagine digitale (20)
Advanced control scheme of doubly fed induction generator for wind turbine us...IJECEIAES
This paper describes a speed control device for generating electrical energy on an electricity network based on the doubly fed induction generator (DFIG) used for wind power conversion systems. At first, a double-fed induction generator model was constructed. A control law is formulated to govern the flow of energy between the stator of a DFIG and the energy network using three types of controllers: proportional integral (PI), sliding mode controller (SMC) and second order sliding mode controller (SOSMC). Their different results in terms of power reference tracking, reaction to unexpected speed fluctuations, sensitivity to perturbations, and resilience against machine parameter alterations are compared. MATLAB/Simulink was used to conduct the simulations for the preceding study. Multiple simulations have shown very satisfying results, and the investigations demonstrate the efficacy and power-enhancing capabilities of the suggested control system.
Electric vehicle and photovoltaic advanced roles in enhancing the financial p...IJECEIAES
Climate change's impact on the planet forced the United Nations and governments to promote green energies and electric transportation. The deployments of photovoltaic (PV) and electric vehicle (EV) systems gained stronger momentum due to their numerous advantages over fossil fuel types. The advantages go beyond sustainability to reach financial support and stability. The work in this paper introduces the hybrid system between PV and EV to support industrial and commercial plants. This paper covers the theoretical framework of the proposed hybrid system including the required equation to complete the cost analysis when PV and EV are present. In addition, the proposed design diagram which sets the priorities and requirements of the system is presented. The proposed approach allows setup to advance their power stability, especially during power outages. The presented information supports researchers and plant owners to complete the necessary analysis while promoting the deployment of clean energy. The result of a case study that represents a dairy milk farmer supports the theoretical works and highlights its advanced benefits to existing plants. The short return on investment of the proposed approach supports the paper's novelty approach for the sustainable electrical system. In addition, the proposed system allows for an isolated power setup without the need for a transmission line which enhances the safety of the electrical network
DEEP LEARNING FOR SMART GRID INTRUSION DETECTION: A HYBRID CNN-LSTM-BASED MODELgerogepatton
As digital technology becomes more deeply embedded in power systems, protecting the communication
networks of Smart Grids (SG) has emerged as a critical concern. Distributed Network Protocol 3 (DNP3)
represents a multi-tiered application layer protocol extensively utilized in Supervisory Control and Data
Acquisition (SCADA)-based smart grids to facilitate real-time data gathering and control functionalities.
Robust Intrusion Detection Systems (IDS) are necessary for early threat detection and mitigation because
of the interconnection of these networks, which makes them vulnerable to a variety of cyberattacks. To
solve this issue, this paper develops a hybrid Deep Learning (DL) model specifically designed for intrusion
detection in smart grids. The proposed approach is a combination of the Convolutional Neural Network
(CNN) and the Long-Short-Term Memory algorithms (LSTM). We employed a recent intrusion detection
dataset (DNP3), which focuses on unauthorized commands and Denial of Service (DoS) cyberattacks, to
train and test our model. The results of our experiments show that our CNN-LSTM method is much better
at finding smart grid intrusions than other deep learning algorithms used for classification. In addition,
our proposed approach improves accuracy, precision, recall, and F1 score, achieving a high detection
accuracy rate of 99.50%.
A review on techniques and modelling methodologies used for checking electrom...nooriasukmaningtyas
The proper function of the integrated circuit (IC) in an inhibiting electromagnetic environment has always been a serious concern throughout the decades of revolution in the world of electronics, from disjunct devices to today’s integrated circuit technology, where billions of transistors are combined on a single chip. The automotive industry and smart vehicles in particular, are confronting design issues such as being prone to electromagnetic interference (EMI). Electronic control devices calculate incorrect outputs because of EMI and sensors give misleading values which can prove fatal in case of automotives. In this paper, the authors have non exhaustively tried to review research work concerned with the investigation of EMI in ICs and prediction of this EMI using various modelling methodologies and measurement setups.
ACEP Magazine edition 4th launched on 05.06.2024Rahul
This document provides information about the third edition of the magazine "Sthapatya" published by the Association of Civil Engineers (Practicing) Aurangabad. It includes messages from current and past presidents of ACEP, memories and photos from past ACEP events, information on life time achievement awards given by ACEP, and a technical article on concrete maintenance, repairs and strengthening. The document highlights activities of ACEP and provides a technical educational article for members.
Batteries -Introduction – Types of Batteries – discharging and charging of battery - characteristics of battery –battery rating- various tests on battery- – Primary battery: silver button cell- Secondary battery :Ni-Cd battery-modern battery: lithium ion battery-maintenance of batteries-choices of batteries for electric vehicle applications.
Fuel Cells: Introduction- importance and classification of fuel cells - description, principle, components, applications of fuel cells: H2-O2 fuel cell, alkaline fuel cell, molten carbonate fuel cell and direct methanol fuel cells.
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressionsVictor Morales
K8sGPT is a tool that analyzes and diagnoses Kubernetes clusters. This presentation was used to share the requirements and dependencies to deploy K8sGPT in a local environment.
Iron and Steel Technology Roadmap - Towards more sustainable steelmaking.pdf
Estrazione automatica delle linee in un'immagine digitale
1. UNIVERSITÀ DEGLI STUDI DI TRIESTE
Dipartimento di Ingegneria e Architettura
Corso di Studi in Ingegneria Elettronica e delle Telecomunicazioni
ESTRAZIONE AUTOMATICA DELLE LINEE IN
UN’IMMAGINE DIGITALE
Tesi di Laurea Magistrale
Laureanda: Relatore:
Francesca PADOIN Prof. Sergio CARRATO
Correlatore:
Ing. Marco FONTANI
_____________________________________________
ANNO ACCADEMICO 2020/2021
2. Indice
Introduzione 4
Capitolo primo - Individuazione dei contorni in un’immagine 5
1.1 Immagine digitale 5
1.2 Gradiente di intensità di un’immagine 6
1.3 Operatori di riconoscimento dei contorni di un’immagine digitale 7
1.3.1 Operatore di Sobel 7
1.3.2 Operatore di Canny 10
1.4 Confronto fra i due operatori 12
1.5 Utilizzo di maschere differenti per il prefiltraggio 14
1.6 Adaptative Threshold 18
1.7 Scelta di filtri finale 20
1.8 Altre metodologie prese in considerazione 20
1.8.1 Reti neurali 21
1.8.2 Algoritmo Haar-like 21
Capitolo secondo – Trasformata di Hough 23
2.1 Spazio delle immagini e spazio dei parametri 23
2.2 Meccanismo di voting 25
2.3 HOUGH_PROBABILISTIC e HOUGH_STANDARD 26
2.4 Confronto trasformata di Hough con i due operatori: Sobel e Canny 29
Capitolo terzo - Intersezione delle linee e stima dei punti di fuga 32
3.1 Track-bar 32
3.2 Intersezione fra linee 33
3.3 Tempistica di calcolo e complessità dell’algoritmo 34
3.4 Tecniche di clustering 35
3.5 Clustering partizionale 36
3.6 Confronto fra algoritmi 36
3.7 K-means 37
3.8 K-medoids 38
Capitolo quarto – Validazione sperimentale 43
4.1 Parametri di verifica 43
4. Introduzione
Questa tesi, svolta presso l’azienda Amped SRL di Trieste, si prefigge l’obiettivo di
automatizzare tramite algoritmi la ricerca delle righe in un’immagine digitale. Questo
al fine di individuare i punti di fuga di un’immagine e calcolare la prospettiva. Tale
ricerca è utile ai fini forensi per individuare le reali dimensioni di un oggetto
all’interno di un’immagine digitale, estrapolandolo dalla prospettiva. Il tutto è stato
svolto con linguaggio C++ utilizzando la libreria OpenCV. Il codice prodotto è
concepito per essere inserito in un software, che calcola, fra le altre cose la
prospettiva, e dovrà quindi rispettare la compatibilità col software preesistente in
termini di linguaggio di programmazione e di versione della libreria utilizzata. Si è
pertanto deciso di procedere usando la versione 3.4.8 della libreria OpenCV.
Il metodo utilizzato per ricercare le linee presenti in un’immagine si basa sulla
trasformata di Hough, già presente in libreria, e sull’ottimizzazione della stessa in
termini di rumore e quantità di linee trovate. La trasformata usa al suo ingresso
l’immagine già pulita da rumore, in bianco e nero, e filtrata in modo tale da
visualizzare solo i punti con un brusco cambio di colore, ovvero i contorni. La
letteratura offre molti metodi di rilevazione dei contorni e per questa tesi si è scelto di
valutare sia l’operatore di Canny sia l’operatore Sobel. Sono state scelti questi due
perché presenti nella libreria e già abbondantemente verificati come efficaci.
Entrambi danno ottimi risultati e sono di facile utilizzo con poco dispendio di
memoria e di calcolo da parte del processore.
In questo lavoro di tesi il suddetto metodo ha trovato applicazione nella ricerca
dell’intersezione fra le linee individuate. Si è poi passati all’utilizzo di un algoritmo
di clustering, nel nostro caso particolare, il k-means, per l’individuazione delle tre
coordinate che localizzano la maggior densità dei punti d’intersezione, ipotizzando
che esse possano identificare i punti di fuga dell’immagine. Alla fine, si è proceduto
alla validazione dei risultati tramite verifica empirica da parte degli utenti.
Prima di iniziare la trattazione dell’edge detection si introduce una breve spiegazione
della libreria e della piattaforma utilizzate e si specifica che in tutti i paragrafi si
utilizzerà la notazione per i filtri e gli algoritmi della libreria OpenCv.
5. Capitolo 1
Individuazione dei contorni in un’immagine
In questo capitolo vengono introdotti i due operatori utilizzati per individuare i
contorni di un’immagine digitale. Verranno valutate le performance e le
problematiche di entrambi gli operatori e saranno introdotti dei filtri per ottenere dei
contorni più netti possibili in modo da migliorare la ricerca di linee operata dalla
trasformata di Hough.
1.1 Immagine digitale
Per trattare l’individuazione di un oggetto all’interno di una fotografia bisogna
concentrare l’attenzione sui bordi che costituiscono l’oggetto di interesse.
Nell’ambito dell’elaborazione delle immagini una delle tematiche principali è
l’individuazione dei contorni di una figura e per fare questo ci sono molte tecniche
che principalmente si basano sullo studio del gradiente di un’immagine. Qui di
seguito, dopo un breve accenno alla tecnica di estrazione dei contorni, andremo ad
analizzare le due tecniche che si è scelto di valutare per la rilevazione di linee in
un’immagine digitale. Queste tecniche sono fondamentali come base per l’utilizzo
della trasformata di Hough, in seguito trattata, per estrarre le linee in un’immagine.
Iniziamo innanzitutto col definire l’immagine digitale come la rappresentazione
bidimensionale tramite una serie di valori numerici che ne descrivono le qualità
distintive: dimensione e colore. Ogni “punto” a cui assegnare un valore numerico
determinante la qualità luminosa dell’immagine è denominata pixel. L’informazione
contenuta in un pixel viene espressa in bit. Maggiore è il numero di bit che
rappresenta il pixel e maggiore sarà la dinamica dell’immagine. La profondità di
colore è il numero di bit riservati ad ogni pixel. Posto N la profondità di colore, il
numero di possibili tonalità sarà 2^N. Un altro termine che incontreremo spesso sarà
l’edge, che si definisce come una forte variazione locale dei livelli di grigio,
tipicamente associata al confine tra due regioni con valori di grigio diversi. Per
individuarlo vengono usati degli operatori locali, che solitamente hanno la funzione
di migliorare la qualità dell’immagine oppure di estrarne le caratteristiche. Noi lo
useremo nella seconda accezione.
Questi operatori lavorano tramite una maschera quadrata N x N, solitamente 3x3 o
5x5, per valutare l’intorno del punto di interesse. Si considera il punto centrale di
coordinata (x, y) e si vanno a valutare gli N x N - 1 punti del suo intorno con
coordinate che seguono la direzione degli assi come in Figura 1.2.
6. Fig. 1.1 Maschera 3x3 Fig. 1.2 Maschera 3x3
1.2 Gradiente di intensità di un’immagine
I punti in cui si hanno variazioni brusche dell’intensità possono essere individuati
tramite l’analisi delle derivate, per esempio si possono valutare i massimi e i minimi
della derivata prima, oppure gli zero-crossing della derivata seconda, ovvero i punti
per cui la derivata seconda passa per lo zero, che corrispondono a brusche variazioni
del gradiente. La derivata di un segnale denota la sua variabilità: a fronte di forti
variazioni locali (ad esempio contorni e altri bruschi cambiamenti di intensità) la
derivata assume valori elevati, altrimenti se il segnale è costante, la derivata è zero.
Nel nostro caso di segnali bidimensionali, si devono considerare le derivate parziali e
quindi il gradiente. Questo è il vettore le cui componenti sono le derivate parziali
nelle diverse direzioni (2 nel caso di immagini):
𝛻𝐼(𝑥, 𝑦) =
𝜕𝐼(𝑥, 𝑦)
𝜕𝑥
,
𝜕𝐼(𝑥, 𝑦)
𝜕𝑦
E riprendendo il concetto di derivata come limite del rapporto incrementale avremo:
𝜕(𝑥, 𝑦)
𝜕𝑥
= 𝑙𝑖𝑚
→
𝐼(𝑥 + 𝛥𝑥, 𝑦) − 𝐼(𝑥, 𝑦)
𝛥𝑥
≃ 𝐼(𝑥 + 1, 𝑦) − 𝐼(𝑥, 𝑦)
𝜕(𝑥, 𝑦)
𝜕𝑦
= 𝑙𝑖𝑚
→
𝐼(𝑥, 𝑦 + 𝛥𝑦) − 𝐼(𝑥, 𝑦)
𝛥𝑦
≃ 𝐼(𝑥, 𝑦 + 1) − 𝐼(𝑥, 𝑦)
L’orientazione del vettore gradiente in un punto indica la direzione di maggior
variazione d’intensità in quel punto dell’immagine.
7. Fig. 1.3 Angolo del vettore Fig. 1.4 Direzione gradiente rispetto all’edge
‖𝛻‖ = 𝛻𝑥 + 𝛻𝑦
𝜃 = 𝑎𝑟𝑐𝑜𝑡𝑔
𝛥𝑦
𝛥𝑥
1.3 Operatori di riconoscimento dei contorni di un’immagine
digitale.
Nel nostro caso abbiamo deciso di utilizzare due operatori: Sobel e Canny come base
per la trasformata di Hough. Tramite questa trasformata è possibile individuare le
linee presenti nell’immagine con una bassa percentuale di errore. Solitamente si
utilizza Canny, il quale comunque si basa su un operatore di tipo Sobel, per creare
l’immagine utilizzata poi per calcolare la trasformata di Hough. Si è scelto di valutare
anche il solo Sobel in quanto fornisce dei contorni netti ed è meno affetto da problemi
di rumore rispetto a Canny. Questi operatori consistono nella convoluzione
dell’immagine con una o più maschere.
1.3.1 Operatore di Sobel
L’operatore di Sobel applica due maschere, solitamente 3 x 3, di convoluzione. Se I è
l’immagine, i rispettivi contorni lungo x e lungo y sono calcolati da:
𝐼 =
−1 −2 −1
0 0 0
1 2 1
e 𝐼 =
−1 0 1
−2 0 2
−1 0 1
8. 𝐼 = I(x-1,y-1) - I(x+1,y-1) + 2I(x-1 ,y) - 2I(x+1,y) + I(x-1,y+1) - I(x+1,y+1)
𝐼 = I(x-1,y-1) + I(x+1,y-1) + 2I(x,y-1) - 2I(x,y+1) - I(x-1,y+1) - I(x+1,y+1)
L’operatore calcola il gradiente della luminosità dell’immagine in ogni punto,
trovando la direzione lungo la quale si ha il massimo incremento possibile dal chiaro
allo scuro e la velocità con cui avviene il cambiamento lungo quella direzione. Il
risultato ottenuto fornisce una stima di quanto l’immagine varia in quel punto, e
quindi della probabilità che quella parte di immagine rappresenti un contorno,
fornendo anche un’indicazione del suo probabile orientamento. In ciascun punto
dell’immagine il gradiente punta nella direzione del massimo aumento possibile di
luminosità e la lunghezza del vettore corrisponde alla rapidità con cui la luminosità
cambia lungo quella direzione.
Il problema di questa tecnica è il fatto di avere frammenti di edge non connessi
oppure punti o segmenti spuri a causa di rumore o piccole variazioni. Inoltre, essa
dipende molto dal settaggio della soglia: per immagini con molte variazioni di colore
o di toni di grigio è opportuno settare una soglia non molto alta (solitamente 60-90)
mentre per immagini abbastanza uniformi, conviene settare un valore alto intorno ai
200-250. Converrebbe in questi casi calcolare l’istogramma dell’immagine e andare a
valutare, in base al contrasto alto o basso, il valore da impostare alla soglia. Un valore
sbagliato può produrre importanti errori in fase di ricerca delle linee con la
trasformata di Hough non dando nessun risultato o linee non presenti nell’immagine.
9. Fig. 1.5 Utilizzo dell’operatore Sobel con soglia 70 sull’immagine di Lena (470x470).
Fig. 1.6 Utilizzo dell’operatore Sobel con soglia 150 sull’immagine di Lena (470x470).
10. 1.3.2 Operatore di Canny
Per questi motivi solitamente si utilizza Canny come metodo per rilevare i contorni in
quanto esso produce edge connessi e, utilizzando un corretto range, è meno sensibile
alla soglia proprio perché valuta se un pixel è di un contorno basandosi su due soglie.
Il metodo è suddiviso in 4 fasi:
1) Smoothing gaussiano dell’immagine
2) Calcolo del gradiente
3) Soppressione dei non-massimi in direzione ortogonale all’edge
4) Selezione degli edge significativi mediante isteresi
Anche qui, come per Sobel, i risultati varieranno in base ad alcuni parametri che per
Canny sono rispettivamente: l’ampiezza della gaussiana (), la dimensione del filtro
(N) e le soglie per l’isteresi, T1 e T2, nell’ultima fase. Dopo alcune prove, si è visto
che una maschera 3x3 o 5x5 ed una soglia che va da 50 a 200 riesce ad essere
un’ottima configurazione per svariati casi.
Poiché l'algoritmo di Canny utilizza le derivate per trovare i gradienti di intensità
dell'immagine, è altamente suscettibile al rumore. Se non lo si rimuove, l'algoritmo
potrebbe riconoscere le zone rumorose all'interno dell'immagine come bordi ed
etichettarle in modo errato.
Di solito si usa pre-elaborare l’immagine con un filtro gaussiano, che serve a
rimuovere la maggior parte del rumore, pur introducendo, come trade-off, distorsione
nell’immagine, in quanto sfoca i contorni. Perciò bisogna sempre trovare un buon
compromesso, a livello di maschera, fra la riduzione del rumore e il dettaglio ben
definito. In seguito, dopo aver applicato il filtro, il passo successivo è il calcolo del
gradiente per valutare i contorni. Qui vengono usati come operatori differenziali o
Sobel o Prewitt o Roberts, in base alle esigenze.
Il passo successivo è la soppressione dei non massimi. Lo scopo è di eliminare
dall’immagine, vista come modulo-gradiente, i pixel che non sono massimi locali
rispetto all’orientazione del gradiente. Spostandosi in direzione del gradiente, infatti,
non si considerano tutti quei punti il cui modulo è strettamente minore del modulo di
uno dei due punti ad esso adiacenti, andando così a costruire una nuova matrice su
cui poi applicare la soglia. Il massimo locale si ha nei punti in cui la derivata del
gradiente si annulla. Alla fine, si ottiene un'immagine binaria. In figura 1.5 si può
vedere il risultato dell’analisi dell’intorno con una maschera 5x5, eliminando i pixel
che non rispettano la condizione di massimo locale lungo la direzione del gradiente,
che è ortogonale all’edge e con una doppia soglia 50-200.
11. Fig. 1.7 Utilizzo dell’operatore Canny sull’immagine di Lena (470x470).
A questo punto, abbiamo i bordi più sottili, ma c'è un problema: vi saranno alcuni
falsi bordi causati da rumore e leggere variazioni di colore. Anche se il primo passo
dell'algoritmo è stato quello di rimuovere il rumore, non tutto è stato rimosso. Questo
perché la scelta di un filtro gaussiano è stata un compromesso tra eliminazione del
rumore e sfocatura dei contorni. Ed è qui che si utilizza la doppia soglia. Per prima
cosa scegliamo due valori di soglia: un minimo e un massimo. Successivamente,
confrontiamo il gradiente di intensità di ciascun bordo con entrambi i valori di soglia.
Se il gradiente di intensità di un bordo è maggiore del valore di soglia massimo, viene
contrassegnato come un bordo forte. Al contrario, se il gradiente di intensità del
bordo è inferiore al valore di soglia minimo, viene scartato. Infine, se il gradiente di
intensità del bordo si trova tra i valori di soglia minimo e massimo, viene
contrassegnato come bordo debole. L'algoritmo di Canny determina ciò considerando
ogni pixel del bordo debole e gli 8 pixel adiacenti circostanti. Se uno qualsiasi dei
suoi pixel adiacenti fa parte di un bordo forte, si considera collegato a un bordo forte.
E perciò questo pixel viene conservato nel nostro risultato finale. Viceversa, se
nessuno dei pixel vicini è forte, si presume che non faccia parte di un bordo forte e
viene quindi soppresso.
Nel nostro caso specifico si è utilizzata la funzione Canny della libreria OpenCV che
implementa tutte queste funzioni e trova i contorni in un’immagine d’ingresso e li
traccia in uscita in una mappa dei contorni.
Una soglia troppo alta può far perdere informazioni importanti. D'altra parte, una
soglia troppo bassa identificherà erroneamente le informazioni irrilevanti (come il
rumore) come importanti. Sono state scelte queste due soglie in seguito a delle prove
su alcune immagini e si è visto che la soluzione ottimale, che permette di avere buoni
12. risultati in condizioni di luminosità e contrasto diversi, è quella del range 50-200. Il
problema qui è impostare un corretto prefiltraggio per evitare l’individuazione di falsi
contorni.
1.4 Confronto fra i due operatori
Tutti e due gli operatori, Sobel e Canny, hanno i loro pro e contro e sono stati valutati
entrambi come base per la trasformata di Hough. Sobel permette minori passaggi non
richiedendo né un prefiltraggio né l’individuazione di due soglie né la soppressione
dei non massimi. Inoltre, su immagini più geometriche individua in maniera migliore
i contorni di interesse come si può vedere in figura 1.7. In figura 1.6 l’immagine di
partenza da cui si sono calcolati i contorni.
Fig. 1.8 Immagine di partenza
13. Fig. 1.9 Contorni rilevati a sinistra tramite Sobel, con soglia 200 e a destra tramite Canny con
doppia soglia 50-200.
Il problema di tale tecnica è la dipendenza da un settaggio di soglia corretto. Ad
esempio, usando la stessa immagine di partenza e impostando un valore di soglia pari
a 70 si otterrà il risultato di figura 1.10 che è ben diverso da quello ottenuto con una
soglia a 200.
Fig. 1.10 Contorni rilevati a sinistra tramite Sobel, con soglia 70 e a destra tramite Canny con
doppia soglia 50-200.
Come si può notare l’immagine è molto più rumorosa nel secondo caso e nel
dettaglio anche il bordo del tetto è un’unica fascia nera e non più distinguibile come
nell’immagine precedente. Tutto ciò porta in seguito, usando Hough, ad un’errata
rilevazione delle linee presenti e quindi ad errori anche grossolani.
La problematica invece riscontrata con Canny è il bisogno di pre-filtrare l’immagine
per evitare eccessivi edge, poi interpretati come linee. Una maschera troppo piccola o
viceversa troppo grande può fare più danni del mancato filtraggio. Quindi anche in
questo caso bisogna calibrare bene la tipologia di filtro e la grandezza della maschera.
14. 1.5 Utilizzo di maschere differenti per il prefiltraggio
Di seguito vengono riportate una serie di immagini a cui è stato applicato l’operatore
di Canny, prefiltrate con maschere di grandezza differente. Rispettivamente la foto a
destra viene filtrata con un filtro mediano 5x5 che elimina il rumore e introduce un
minimo di distorsione, sfocando i bordi. In figura ci sono vari esempi del risultato
della convoluzione con maschere differenti:
Fig. 1.11 Canny applicato all’immagine di partenza senza alcun filtro
15. Fig. 1.12 Canny applicato all’immagine di partenza elaborata con un filtro mediano con maschera
3x3
Fig. 1.13 Canny applicato all’immagine di partenza elaborata con un filtro mediano con maschera
5x5
16. Fig. 1.14 Canny applicato all’immagine di partenza elaborata con un filtro mediano con maschera
7x7
Fig. 1.15 Canny applicato all’immagine di partenza elaborata con un filtro mediano con maschera
9x9
17. Fig. 1.16 Canny applicato all’immagine di partenza elaborata con un filtro gaussiano con maschera
5x5 e sigma pari a 1
Fig. 1.17 Canny applicato all’immagine di partenza elaborata con un filtro gaussiano con maschera
9x5 e sigma pari a 15
18. Come si può notare una maschera troppo piccola non risulta utile, come pure una
eccessivamente grande. Non vi è inoltre particolare differenza fra un filtro mediano
ed uno gaussiano e qui si è scelto di utilizzare il primo perché richiede un minor
numero di variabili da inserire.
1.6 Adaptative Threshold
L’altro comando della riga di codice che si è utilizzato è l’adaptativeThreshold che
trasforma un’immagine in scala di grigi in una binaria tramite questa formula:
THRESH_BINARY
dst(x,y)={maxValue if src(x,y)>T(x,y)
0 otherwise
THRESH_BINARY_INV
dst(x,y)={ 0 if src(x,y)>T(x,y)
maxValue otherwise
dove T(x,y) è una soglia calcolata individualmente per ogni pixel.
In questo caso, prima di effettuare l’operazione di soglia vera e propria, si convolve
l’input con un particolare operatore, ADAPTIVE_THRESH_GAUSSIAN_C, che
trasforma l’immagine in una rappresentazione binaria, applicando la distribuzione di
Gauss. Si utilizza la binarizzazione in modo da eliminare ogni tipo di sfumatura e
gradazione di grigio. Tale soglia adattiva si utilizza quando si hanno situazioni di
illuminazione non uniforme, che rappresentano la maggior parte dei casi. Se non si
applicasse, pur applicando precedentemente il filtro mediano, otterremmo i risultati in
figura 1.18:
19. Fig 1.18 Utilizzo di Canny senza il comando adaptativeThreshold.
Infine, si applica un altro filtro per rimuovere il rumore che potrebbe essere stato
introdotto dall’operazione di soglia. Anche qui i risultati, senza l’applicazione di
questo filtro, sarebbero disastrosi:
Fig 1.19 Utilizzo di Canny senza applicare un filtro, dopo l’applicazione dell’AdaptativeThreshold
20. Come si può notare dalle figure precedenti un mancato prefiltraggio dell’immagine
può portare ad un’eccessiva e non voluta ricerca di contorni che in seguito porterà a
rilevare false linee nell’immagine.
1.7 Scelta di filtri finale
Pur tuttavia una serie di pre-filtri con una generica maschera 5x5 o 7x7 sono
sufficienti a pulire l’immagine dal rumore ed offrire un’accettabile base per la
trasformata di Hough. A differenza quindi di quanto avveniva con Sobel, non sarà
necessario settare una soglia ben precisa in base all’immagine di partenza ma basterà
implementare i giusti filtri ed una doppia soglia abbastanza ampia da comprendere
tutte le casistiche più comuni. Con questi valori difficilmente verranno prodotti falsi
contorni o false linee dell’immagine, mentre sbagliando la soglia di Sobel il nostro
programma interpreterà i dati che ha nella maniera scorretta, generando linee con
un’inclinazione anche di 90° diversa da quella originale.
In figura 1.20 l’immagine finale con operatore di Canny applicato con filtro mediano
7x7, adaptativeThreshold 7x7 ed infine filtro mediano 7x7.
Fig. 1.20 Canny applicata all’immagine di partenza con filtro mediano 7x7 e adaptativeThreshold
7x7.
1.8Altre metodologie prese in considerazione
In questo sotto capitolo si fa un breve accenno alle altre tecniche di estrazione delle
linee prese in considerazione.
21. 1.8.1 Reti neurali
Prima di scegliere la trasformata di Hough, si sono valutate varie tecniche di
estrazione delle linee da un’immagine, in primis quella tramite l’utilizzo delle reti
neurali oppure un affiancamento delle stesse per avvalorare i risultati trovati con altri
algoritmi. Le reti neurali sono degli algoritmi basati sulle connessioni fra il neurone
trasmettitore e quello ricevitore, dove ogni connessione è caratterizzata da un peso
che sarà quello che verrà modificato per ridurre l’errore. Queste reti spesso si basano
su un apprendimento supervised, ovvero vi sarà un external teacher che determinerà
la durata dell’apprendimento, la frequenza di presentazione degli esempi e la misura
degli errori. In pratica mentre si addestra la rete, si presenta un pattern di foto
all’ingresso e si vuole che la rete modifichi l’insieme dei pesi per avere le uscite
desiderate ai nodi di uscita.
Per non appesantire il codice e non occupare eccessiva memoria, si era valutato dal
Paper [2] “Deep Learning for Vanishing Point Detection Using an Inverse Gnomonic
Projection”: la Inverse Gnomonic Projection. Questa è una mappatura che trasforma
il piano dell’immagine illimitato in uno spazio limitato, rendendo in tal modo il punto
di fuga, lontano dal centro dell’immagine, più facile da trattare. L’approccio
consisteva nei seguenti passi: estrazione delle linee, mappatura delle linee nella sfera
gaussiana e visualizzazione dell’immagine. Questa immagine veniva poi usata come
input per un CNN, allenato solo con dati sintetici. Questo CNN dava una previsione
sui possibili punti di fuga. La mappatura era utile al fine di permettere l’utilizzo di
dati sintetici piuttosto che quelli reali, occupando così minore spazio e permettendo di
crearsi i dati da sé.
Però, sebbene questa tecnica offra dei risultati molto soddisfacenti e precisi, non è
adatta al nostro caso principalmente per due motivi. Il primo si basa sul fatto che, per
una questione di compatibilità, il codice deve essere scritto in linguaggio C++ ed
essere coerente con la versione di OpenCV, già utilizzata nel software preesistente
mentre per le reti neurali si usa utilizzare Python oppure le nuove versioni di
OpenCV, per sfruttare al meglio e non appesantire troppo il codice.
Il secondo motivo si basa sul fatto che i dati forniti dal codice saranno poi utilizzati in
ambito legale e l’utilizzo delle reti neurali non è avvalorato da tutte le legislazioni
proprio perché è l’utente che decide di addestrare la rete sulla base dei dati che lui
stesso carica, introducendo dunque una parte non oggettiva nel computo delle linee.
1.8.2 Algoritmo Haar-like
Si era valutato anche l’utilizzo di un algoritmo Haar-like[3], che si basa sulla
differenza di intensità luminosa fra aree vicine dell’immagine tramite la Haar
wavelets. Una Haar-like features considera regioni rettangolari adiacenti e somma le
22. intensità dei pixels in ogni regione e calcola la differenza tra queste somme. Questa
differenza viene poi usata per categorizzare le sottosezioni di un’immagine. Nella
fase di ricerca una finestra, di forma definita, si muove su tutta l’immagine e per ogni
sottosezione si calcola la Haar-like feature. Questa differenza viene poi confrontata
con una soglia precedentemente decisa che separa i non oggetti dagli oggetti. Il
problema di questa tecnica è la poca precisione, di conseguenza ci vorranno parecchie
Haar-like features per descrivere un oggetto con sufficiente accuratezza. Anche se
questa feature ha una velocità di calcolo elevata, perché viene calcolata in tempo
reale, in sede di studio questa tecnica è stata scartata poiché non presente in libreria
OpenCV e quindi meno pratica.
23. Capitolo 2
Trasformata di Hough
In questo capitolo verrà introdotta la trasformata di Hough e i risultati ottenuti
applicando su di essa l’operatore Sobel e l’operatore Canny. Inoltre verranno
introdotti i due comandi della libreria OpenCV per calcolare la trasformata e un breve
confronto fra i due.
2.1 Spazio delle immagini e spazio dei parametri
Nel nostro caso specifico si è scelto di adottare la trasformata di Hough quale metodo
di individuazione delle rette nelle immagini. Questo metodo consiste nel mappare
ogni punto presente nell’immagine in una retta nello spazio dei parametri. Si usa una
rappresentazione parametrica che viene utilizzata per descrivere le rette nel piano
immagine tramite i parametri m, per la pendenza, e c, per l’intercetta. Fissati i valori
di m e c, l’equazione può essere vista come una mappatura di tipo biunivoco dallo
spazio dei parametri allo spazio dell’immagine.
Consideriamo il punto (x', y') nel piano cartesiano (x, y) e la generica retta di
equazione y'=mx' + c passante per il punto (Figura 2.1). Variando m e c posso
rappresentare tutte le possibili rette del piano cartesiano passanti per il punto (x', y').
Si può ricavare ora la legge che da un punto (x', y') dello spazio immagine permette di
tracciare la curva nello spazio dei parametri (m, c). Dall'equazione y'=mx' + c si
ottiene infatti c=-mx' + y', dove ora x' e y' sono costanti, e m e c variabili. Come si
vede in Figura 4.2, il fascio di rette passante per il punto P dell'immagine viene
quindi rappresentato con una retta nello spazio (m, c).
Figura 2.1: spazio immagine Figura 2.2: spazio parametri
Se considero ora 2 punti P'(x', y') e P''(x", y") nello spazio (x, y), che giacciono sulla
stessa retta, per ognuno di essi si ha un corrispondente fascio di rette che nello spazio
immagine (m, c) viene rappresentato da una retta. Si avrà allora che nello spazio dei
24. parametri la retta c=-mx' + y' descrive i valori di (m, c) relativi alle rette passanti per
P' e la retta c=-mx'' + y'' descrive i valori di (m, c) relativi alle rette passanti per P'',
come si vede in Figura 2.4.
Figura 2.3: spazio immagine Figura 2.4: spazio parametri
Il punto di intersezione (m', c') nello spazio dei parametri descrive i valori dei
parametri (m, c) della retta passante per P' e P'' nello spazio originale (x, y) ed è
quindi facile risalirvi. Il problema di tale impostazione è che, nel caso limite di retta
parallela all’asse y, avremo un valore di m tendente all’infinito che non sarebbe
gestibile facilmente tramite un calcolatore. Per questo motivo si tende ad utilizzare un
diverso metodo di parametrizzazione, simile alle coordinate polari, per non incappare
nel problema della pendenza infinita. Anche in questo caso entrano in gioco due
parametri: la distanza, ρ, della retta dall’origine e θ, l’angolo fra la normale alla retta
dall’origine e l’asse x: ρ= x cosθ+ y sin θ. Con questa parametrizzazione, per i punti
che sono allineati nel piano immagine corrisponde, grazie alla mappatura, una
sinusoide nello spazio dei parametri e l’insieme di tutte queste sinusoidi,
corrispondenti ai punti allineati, individuerà un punto in comune tra di loro. Questo
punto nel piano (ρ, θ) denominato (ρ₀, θ₀), definisce la retta passante per i punti
collineari. Quando sul piano dell’immagine ci sono dei punti allineati su una stessa
retta, sul piano dei parametri, le curve si intersecano in un punto che è l’immagine
della retta su cui giacciono i punti.
25. Figura 2.5: spazio delle immagini Figura 2.6: spazio dei parametri
2.2 Meccanismo di voting
Un altro problema che si riscontra è legato al rumore. Una retta nello spazio di
partenza definita da N punti P1, ..., PN viene identificata come intersezione nello
spazio dei parametri di N rette, ognuna corrispondente a un Pi, come in figura 2.7.
Fig. 2.7 Rappresentazione in assenza di rumore di punti allineati nello spazio dei parametri
Col rumore non è detto che i punti Pi siano perfettamente allineati e di conseguenza
non ci sarà un’unica intersezione come si può vedere in figura 2.8.
26. Fig. 2.8 Rappresentazione in presenza di rumore di punti non più allineati nello spazio dei parametri
Per ovviare a questo problema, si introduce un meccanismo di voting, ovvero si
divide lo spazio dei parametri in una griglia finita di celle, e si associa ad ognuna un
contatore. Quelle col maggior numero di voti, ovvero punti all’interno della griglia,
saranno quelle con la maggior probabilità di essere linee.
A livello di codice l’immagine che viene data in ingresso, per calcolarne la
trasformata, è un’immagine già passata sotto l’operatore di Canny o di Sobel. Sarà
quindi in bianco e nero per una minore complessità. Le foto che vengono trattate sono
spesso di interni monocolori o con poca variazione tonale e quindi non si va a perdere
eccessiva informazione estromettendo le tre componenti R, G, B ma si guadagna in
termini di calcolo.
2.3 HOUGH_PROBABILISTIC e HOUGH_STANDARD
Inizialmente si sono valutate due diverse tipologie della trasformata di Hough: la
HOUGH_PROBABILISTIC e la HOUGH_STANDARD. La fondamentale
differenza fra le due è che la prima restituisce dei segmenti, dando le coordinate degli
estremi, mentre la seconda restituisce una linea rappresentata dai parametri ρ, θ.
La HOUGH_PROBABILISTIC richiede come parametri: threshold(t),
minLineLenght(l) e maxLineGap(g).
Il primo è un parametro di accumulazione: solo le linee che hanno un voto superiore
ad un certo valore vengono accettate; dove il voto è dato dal numero di rette che si
intersecano nello stesso punto nello spazio dei parametri, ovvero punti che
appartengono alla stessa linea nello spazio delle immagini.
Il secondo indica la lunghezza minima che deve avere il segmento. Tutti i valori al di
sotto di tale lunghezza verranno scartati.
Il terzo indica il massimo gap permesso fra due punti, appartenenti ad una stessa
linea, affinché si possano unire in un unico segmento.
27. Questa trasformata può essere molto utile se si è interessati ai segmenti o ad avere le
coordinate iniziali e finali degli stessi per trattare con dei punti. Infatti, in uscita
otterremmo un vettore a quattro elementi. Il problema è che bisogna impostare ben 3
parametri ed è difficile trovare dei valori che possano andare bene per una buona
parte dei casi d’esame. Quindi anche a livello di utenza, si richiederebbe al fruitore
del software di selezionare i valori di interesse con una certa precisione, cosa che non
richiede la STANDARD_HOUGH. Inoltre, questo metodo è sensibile al rumore se si
imposta un basso valore di threshold per avere più segmenti o un eccessivo valore di
maxLineGap per includere anche alcune linee che altrimenti risulterebbero spezzate,
si rischia di includere dei segmenti che non vogliamo o addirittura dei falsi segmenti.
Di seguito si possono vedere i vari casi per diversi valori di soglia e gap.
Fig. 2.9 Figura con parametro di voting 20, Fig. 2.10 Figura con parametro di voting 100,
tenendo fisso l a100 e g a 5. tenendo fisso l a100 e g a 5.
Fig. 2.11 Figura con parametro di gap 5, Fig. 2.12 Figura con parametro di gap 10,
tenendo fisso l a 100 e v a 50. tenendo fisso l a 100 e v a 50.
28. Fig. 2.13 Figura con parametro di length 20, Fig. 2.14 Figura con parametro di length 20,
gap 5 e voting 50. gap 15 e voting 50.
Come si può notare dalla figura 2.13 una lunghezza minima troppo piccola porta ad
un eccessivo numero di segmenti e pure a parecchi errori come segmenti con
inclinazione di 45° rispetto all’orizzontale sulle assi della casa o come quelli rilevati
per le foglie. Riducendo il gap, come in figura 2.11, si otterranno decisamente meno
segmenti ma molti non voluti. In più, come si può notare, a meno di settare
opportunamente i parametri, non si ottiene una gran quantità di linee.
Per questo motivo si è optato per la ricerca delle linee tramite la trasformata di
HOUGH_STANDARD che richiede un minor numero di parametri e in uscita dà un
vettore a due elementi. Per questo comando si devono impostare la distance e l’angle
resolution, in termini di ρ e θ, per definire la risoluzione dell’accumulatore che è la
zona, nel piano dei parametri, dove si accumulano le intersezioni fra curve che
individuano la presenza di una linea.
Solitamente per tale parametro si mette il valore di 1 pixel per la distance e di 𝜋/180
per l’angle resolution. Un altro parametro richiesto è la threshold per l’accumulatore,
ovvero vengono visualizzate solo le linee che ottengono abbastanza voti. Ma con un
valore di 150 standard si riesce a coprire bene le varie casistiche.
E il risultato sarà come quello in figura 2.15, dove sono rappresentate 15 linee:
29. Fig. 2.15 Rappresentazione delle linee tramite HOUGH_STANDARD
Tra queste due rappresentazioni, HOUGH_PROBABILISTIC e
HOUGH_STANDARD, si è scelto quindi di utilizzare la seconda in quanto meno
legata ad impostazioni da settare da parte dell’utente e perché fornisce linee infinite,
che sono più utili in vista dell’obiettivo di determinazione del punto di fuga per il
calcolo della prospettiva. Interessante poteva essere l’utilizzo dei segmenti, con la
trasformata HOUGH_PROBABILISTIC, per calcolare le distanze o le lunghezze di
alcuni contorni, in quanto in uscita venivano fornite le coordinate di inizio e fine dei
segmenti. Il problema è che gli stessi segmenti rimanevano vincolati a quali la
trasformata riuscisse ad estrarre.
2.4 Confronto trasformata di Hough con i due operatori: Sobel e
Canny
Nelle figure seguenti ci saranno alcune foto con le linee trovate tramite la trasformata
HOUGH_STANDARD con i due operatori per fare un confronto tra i due metodi. Su
tutte le immagini si sono estratte 15 linee.
30. Fig. 2.16 Nell’immagine a sinistra, in rosso, le linee estratte tramite la trasformata di Hough a
seguito dell’operatore Canny; a destra, in blu, le linee estratte a seguito dell’operatore Sobel
Fig. 2.17 Nell’immagine a sinistra, in rosso, le linee estratte tramite la trasformata di Hough a
seguito dell’operatore Canny; a destra, in blu, le linee estratte a seguito dell’operatore Sobel
31. Fig. 2.18 Nell’immagine a sinistra, in rosso, le linee estratte tramite la trasformata di Hough a
seguito dell’operatore Canny; a destra, in blu, le linee estratte a seguito dell’operatore Sobel
Come si può notare da questi tre esempi non vi sono molte differenze fra i due
metodi, se non una maggiore variabilità direzionale con quello che utilizza
l’operatore Canny. Infatti, già dalla prima immagine si nota che le linee rosse
individuano sia le assi della facciata principale ma anche quelle della parte lunga
della casa oltre alle colonne e al tetto, mentre le linee blu, associate all’operatore di
Sobel, individuano quasi tutte unicamente le assi della facciata principale, andando a
perdere l’informazione nelle altre direzioni. Pertanto, da questi esempi e considerate
le problematiche maggiori per impostare un valore di soglia corretto, viste al
paragrafo precedente, si è preferito utilizzare l’operatore di Canny come base per la
trasformata di Hough, tenendo comunque disponibile, come ulteriore opzione per una
valutazione di linee in più, l’operatore Sobel.
32. Capitolo 3
Intersezione delle rette e stima dei punti di fuga
In questo capitolo, dopo aver individuato le linee presenti nell’immagine, si prosegue
con la ricerca dei punti d’intersezione fra le suddette. Questo passaggio è intermedio
per la ricerca, tramite algoritmo k-medoids, di cui si parlerà nel capitolo seguente,
delle zone a maggior densità di punti d’intersezione. Ciò sarà utile per determinare i
tre punti di fuga, verso cui le rette convergono, e quindi le tre direzioni principali, al
fine di definire le reali dimensioni di un oggetto in un’immagine, estrapolandolo dalla
prospettiva in cui è costretto.
3.1 Track-bar
Prima di enunciare il metodo, utilizzato per individuare i punti d’incrocio fra le linee,
si introduce brevemente il concetto di track-bar, che serve a determinare la quantità di
rette che si vogliono trovare. Si è deciso di far scegliere all’utente il numero di linee
da individuare nell’immagine e per far questo si è introdotta un’interfaccia grafica
(GUI). La libreria OpenCV non offre molte funzionalità d’interfaccia utente e la più
immediata, senza dover inserire dati, è risultata essere la track-bar, che permette di
selezionare la quantità voluta in un intervallo di valori definito dal programmatore sul
codice. Cambiando la posizione sulla track-bar, il valore della variabile intera cambia
e usando quel nuovo valore andremo a variare una proprietà dell’immagine.
Nel nostro caso la scelta dell’utente determinerà la quantità di linee che l’algoritmo
dovrà trovare e, di conseguenza, il numero di confronti per trovare tutti i punti
d’intersezione con le linee appena trovate.
In figura 4.1 un esempio di utilizzo della track-bar, dove si è preimpostato un valore
di partenza di 5 linee:
33. Fig. 3.1 A sinistra immagine con 5 linee impostate già in partenza, a destra con 25.
Introdotta la track-bar, utile al fine di determinare il numero di linee che si devono
trovare, si può tornare a parlare del metodo utilizzato per la ricerca dei punti in
comune fra le linee trovate.
3.2 Intersezione fra linee
Il metodo che si utilizza per trovare l’intersezione fra due linee è quello algebrico del
sistema fra due rette r e s:
𝑦 = 𝑚 𝑥 + 𝑐
𝑦 = 𝑚 𝑥 + 𝑐
Andando a risolvere col metodo del confronto:
m₁x+c₁=m₂x+c₂;
quindi:
x= (c₂-c₁) / (m₁-m₂) ;
y = m₁ * (c₂-c₁) / (m₁-m₂) + c₁
Individueremo così tutti i punti di intersezione fra le linee trovate nella foto, la
maggior parte dei quali saranno fuori immagine. Risulta quindi utile riportare le
coordinate dei punti di incrocio sul terminale in modo da avere una chiara idea della
percentuale di punti presenti al di fuori dell’immagine. Si tratta di rette idealmente
34. infinite, nella realtà soggette alla lunghezza massima consentita dal calcolatore e
quindi trattabili per un confronto punto a punto per determinare dove le x e y delle
due rette coincidono.
3.3 Tempistica di calcolo e complessità dell’algoritmo
A livello di codice il tutto è strutturato con due cicli for. Uno serve a trovare le linee
presenti nell’immagine in quantità richiesta dall’utente, mentre l’altro esegue il
confronto a coppie, punto a punto, fra la prima linea con la seconda, la prima con la
terza e così via fino a esaurimento linee. Il ciclo riparte poi con la seconda linea che
confronta con la prima e così via per un totale di Nx(N-1)/2 confronti, dove N sta per
la quantità di linee inserite dall’utente.
Con questa tecnica vi è una problematica di cui si deve tenere conto: il denominatore
a zero, nel caso di rette parallele; e un minimo di lag in uscita per eseguire il ciclo per
il confronto fra le linee, per trovare punti d’incrocio, pari a Nx(N-1)/2 volte.
Per ovviare alla prima problematica, che porterebbe inevitabilmente ad un errore a
runtime, con conseguente blocco del programma, basta gestire l’eccezione che
sarebbe il caso in cui m1 = m2, ovvero le rette con coefficiente angolare identico e
quindi parallele. Perciò individuando quest’eccezione ed andandola a eliminare dalla
soluzione non si perderà nessuna informazione utile, in quanto due rette parallele non
si intersecano mai e quindi non avranno punti in comune da tenere in considerazione.
Per quanto riguarda la tempistica, seppure il doppio ciclo introduca tempi di calcolo
maggiori, si deve tenere conto che normalmente bastano quindici/venti linee per una
sufficiente densità di punti d’intersezione e perciò saranno richiesti 105 /190
confronti che, per un normale calcolatore, non sono eccessivi. E le tempistiche di
calcolo varieranno circa da 1,7 secondi per 15 linee a 1,9 secondi per 20 linee.
Fig. 3.2 Confronto intersezioni utilizzando Canny (a sinistra) e Sobel (a destra)
35. Fig. 3.3 Confronto intersezioni utilizzando Canny (a sinistra) e Sobel (a destra)
Una volta trovati i punti d’intersezione, si inseriscono le rispettive coordinate in un
vettore, che sarà la base di partenza per l’algoritmo di clustering.
3.4 Tecniche di clustering
Una volta trovati tutti i punti di intersezione fra le rette presenti nell’immagine, si
prosegue nella ricerca delle zone con una maggiore densità di punti. Lo scopo di tale
ricerca è l’individuazione delle tre direzioni principali di convergenza delle linee per
trovare i punti di fuga dell’immagine. Per fare questo si utilizzano degli algoritmi di
clustering, dove il clustering consiste nel raggruppare oggetti in classi omogenee. Un
cluster è un insieme di oggetti che presentano tra loro delle similarità, mentre per
contro presentano dissimilarità con oggetti in altri cluster. Come input nell’algoritmo
verrà dato un certo numero di elementi, che poi saranno suddivisi in base alle loro
similarità. In output avremo invece un certo numero di cluster, trovati dall’algoritmo.
In molti approcci, come pure nel nostro, questa similarità è concepita in termini di
distanza in uno spazio multidimensionale.
Vi sono varie tecniche di clustering, inizialmente suddivise in metodi aggregativi o
bottom-up e metodi divisivi o top-down. Nel primo caso si considera ogni singolo
dato come un cluster a sé e a successive iterazioni si raggruppa in base alla
somiglianza agli altri cluster; mentre il secondo considera inizialmente l’insieme dei
dati come un unico cluster e per successive iterazioni e confronti, li divide in un
numero minore di cluster.
Inoltre, vi sono altre due classificazioni importanti [3] in base all’algoritmo che si
vuole utilizzare: clustering partizionale e clustering gerarchico. Il primo definisce
l’appartenenza ad un gruppo in base alla distanza da un punto rappresentativo del
cluster (centroide, medioide, ecc…), dopo aver prefissato il numero di gruppi della
partizione. L’algoritmo gerarchico invece costruisce una gerarchia di partizioni
caratterizzata da un numero crescente o decrescente di gruppi. Da queste due
36. ripartizioni la scelta è ricaduta sull’algoritmo partizionale in quanto fin dall’inizio
sappiamo esattamente di quante direzioni abbiamo bisogno, ovvero tre, per poi
andare a calcolare la prospettiva.
3.5 Clustering partizionale
Il procedimento per il clustering partizionale prevede i seguenti passaggi:
inizialmente si suddivide l’insieme dei dati in K cluster e ad ognuno di essi si
assegnano degli elementi scelti casualmente. Dopodiché si vanno a calcolare i
centroidi di ciascun cluster:
𝑀 = ∑ 𝑥
dove Mk è il centroide per il cluster K, nk è il numero di elementi del cluster K e xik è
l’i-esimo elemento del cluster.
Il centroide è un punto appartenente allo spazio che media le distanze tra tutti i dati
appartenenti al cluster ad esso associato. Rappresenta quindi una sorta di baricentro
del cluster ed in generale, proprio per le sue caratteristiche, non è uno dei punti del
dataset. I centroidi vengono scelti casualmente e di solito hanno una certa distanza
l’uno dall’altro per fare in modo che l’algoritmo converga.
Si calcola poi la distanza degli elementi del cluster dal centroide e in base a quello si
valuta l’errore quadratico medio tramite:
𝑒 = (𝑥 − 𝑀 )
con ek errore quadratico medio per il cluster K. Questo serve a valutare gli errori di
tutti i cluster e sarà il parametro da minimizzare nelle varie iterazioni dell’algoritmo.
A questo punto, calcolato l’errore, si riassegnano gli elementi del campione in base al
centroide più vicino e si ripetono i passaggi finché non si raggiunge il valore minimo
desiderato dell’errore oppure finché i membri del cluster non si stabilizzano.
3.6 Confronto fra algoritmi
Tra questi algoritmi i principali sono il k-means, il fuzzy c-means e il k-medoids. I
primi due, anche se con implementazioni completamente diverse, portano a risultati e
problematiche molto simili. Entrambi scelgono inizialmente in modo casuale i dati (il
primo) e i coefficienti (il secondo) da assegnare ad ogni cluster ed entrambi cercano
di minimizzare l’errore quadratico medio di iterazione in iterazione. Il problema di
tutti e due i metodi è dovuto proprio alla scelta casuale iniziale dei dati che potrebbe
37. far convergere l’algoritmo ad un minimo locale e non assoluto. Inoltre, nel caso del
metodo fuzzy, il risultato dipenderà anche dalla scelta iniziale dei pesi. Risultati
migliori vengono invece dal metodo k-medoids in quanto, a differenza del k-means,
esso minimizza la somma delle dissimilarità tra punti in un cluster e un punto
indicato come centro di quel cluster. Infatti, al primo passaggio, l’algoritmo k-
medoids sceglie k punti arbitrari come punti centrali del cluster. Sebbene sulla carta il
k-medoids sia più robusto al rumore e più preciso in presenza di valori anomali, in
quanto minimizza la distanza dal centro, nel codice abbiamo implementato il k-
means. Questa scelta si è fatta perché la libreria OpenCV implementa già un metodo
k-means e questo algoritmo dà risultati più che soddisfacenti per la ricerca dei tre
punti di fuga, anche perché nel nostro caso spesso i valori anomali rappresentano
quelli di interesse.
3.7 K-means
Il k-means si basa sui cosiddetti centroidi. Questa tecnica raggruppa il set di dati in k
cluster diversi con un numero quasi uguale di punti. Dato un insieme di oggetti (x1,
x2, ..., xn), dove ognuno è un vettore reale bi-dimensionale, l’algoritmo di clustering
k-means ripartisce gli n oggetti in k ≤ n insiemi S = {S1, S2, ..., Sk} così da
minimizzare la varianza. In pratica l’obiettivo è trovare:
arg min ‖𝑥 − 𝜇 ‖
∈
In termini di codice, l’algoritmo darà un vettore in uscita contenente le coordinate dei
punti su cui convergono i tre cluster.
Fig. 3.4 Distanza di un punto x dai tre centroidi individuati.
38. 3.8 K-medoids
Il k-medoids parte con una selezione arbitraria di k oggetti, come punti medoids, da
un insieme di n oggetti e associa ogni elemento nel dato insieme al più simile
medoid, dove la similarità è data dalla funzione di costo che è definita
usando distanze come la distanza di Manhattan, nel nostro caso.
La distanza di Manhattan è la distanza tra due punti è la somma del valore assoluto
delle differenze delle loro coordinate.
Seleziona poi in modo casuale un elemento non medoid O’, calcola il costo
totale Si, che è la somma dei costi dei singoli elementi dal corrispondente medoid, nel
caso del medoid iniziale e il costo totale Sf nel caso del medoid O’ e ne calcola la
differenza S=Sf-Si. Se S<0 allora viene scambiato il medoid iniziale con il nuovo e si
ripetono i vari passi sino a quando si hanno cambiamenti nell'insieme dei medoid.
La bontà del clustering può essere negativamente influenzata dalla presenza di outlier
che tendono a spostare il centroide dei cluster al fine di ridurre l’aumento dell’SSE
determinato indotto dall’outlier. Dato che la somma del quadrato degli errori è un
quadrato di una distanza, i punti molto lontani incidono pesantemente sul suo valore.
Gli outlier se identificati possono essere eliminati in fase di preprocessing.
In figura degli esempi di cluster trovati; le linee azzurre collegano il centro
dell’immagine ai punti trovati dall’algoritmo così da dare un’idea visiva della
direzione trovata.
39. Fig. 3.5 Algoritmo di k-means nel caso di operatore di Sobel con 30 linee trovate
40. Fig. 3.6 Algoritmo k-means nel caso di operatore Canny con 25 linee trovate
Fig. 3.7 Confronto k-means tra operatore Canny (a sinistra) e Sobel (a destra) con 15 linee trovate
41. Fig. 3.8 Confronto k-means tra operatore Canny (a sinistra) e Sobel (a destra) con 25 linee trovate
Fig. 3.9 Algoritmo di k-means con operatore Sobel con 1) 15 linee, 2) 23 linee e 3) 27 linee.
42. Nell’ultima immagine si sono paragonate le tre diverse ricerche con l’algoritmo k-
means con una quantità di linee, e quindi intersezioni, man mano crescente. Come si
può vedere un valore intorno alle 20 linee trovate può risultare sufficiente per una
stabilizzazione dell’algoritmo.
43. Capitolo 4
Validazione Sperimentale
In questo capitolo si testa il programma secondo alcuni parametri per rilevarne le
problematiche e i punti di forza dell’algoritmo in base ai due operatori (Sobel e
Canny).
4.1 Parametri di verifica
Si è utilizzata una tabellina, inserita qui sotto, per valutare quattro casi su sei
immagini in modo da avere risultati su differenti tipologie di foto. La tabella è stata
poi suddivisa in due righe: una riservata ai risultati trovati per le linee ricavate usando
Sobel e l’altra per quelle ricavate usando Canny. Il software parte da un valore fisso
sullo slider pari a otto linee trovate.
Le quattro colonne sono suddivise in questo modo:
Colonna A: si devono contare quante linee concorrono a trovare un punto di fuga e
riportarne il numero.
Colonna B: si aumenta il numero delle linee da trovare, tramite slide, finché non si
trova una buona calibrazione fra linee per ogni direzione che concorre a trovare il
punto di fuga.
Colonna C: si devono contare quante linee azzurre si dirigono verso un corretto punto
di fuga.
Colonna D: si deve verificare se, rimuovendo determinate linee, la linea azzurra
cambia direzione e concorre verso un punto di fuga corretto.
Sample #1 A) Numero di linee che
concorrono ad un
punto di fuga (slider,
“Qt: 8”)
B) Variare lo slider per
avere almeno una linea
per direzione voluta.
C) Numero di linee
azzurre che vanno
verso un punto di fuga.
D) Numero di linee
azzurre che vanno
verso un punto di
fuga, dopo aver
rimosso alcune
linee trovate.
Blue-line image
(Sobel)
8 27 1 1
Red-line image
(Canny)
5 8 2 3
44. Sample #2 A) Numero di linee che
concorrono ad un
punto di fuga (slider,
“Qt: 8”)
B) Variare lo slider per
avere almeno una linea
per direzione voluta.
C) Numero di line
azzurre che vanno
verso un punto di fuga.
D) Numero di linee
azzurre che vanno
verso un punto di
fuga, dopo aver
rimosso alcune
linee trovate.
Blue-line image
(Sobel)
8 19 2 2
Red-line image
(Canny)
8 11 2 2
Sample #3 A) Numero di linee che
concorrono ad un
punto di fuga (slider,
“Qt: 8”)
B) Variare lo slider per
avere almeno una linea
per direzione voluta.
C) Numero di line
azzurre che vanno
verso un punto di fuga.
D) Numero di linee
azzurre che vanno
verso un punto di
fuga, dopo aver
rimosso alcune
linee trovate.
Blue-line image
(Sobel)
8 28 3 3
Red-line image
(Canny)
8 28 2 2
Sample #4 A) Numero di linee che
concorrono ad un
punto di fuga (slider,
“Qt: 8”)
B) Variare lo slider per
avere almeno una linea
per direzione voluta.
C) Numero di line
azzurre che vanno
verso un punto di fuga.
D) Numero di linee
azzurre che vanno
verso un punto di
fuga, dopo aver
rimosso alcune
linee trovate.
Blue-line image
(Sobel)
8 A 28 ne ha 2 2 2
Red-line image
(Canny)
8 Non riesce 2 2
45. Sample #5 A) Numero di linee che
concorrono ad un
punto di fuga (slider,
“Qt: 8”)
B) Variare lo slider per
avere almeno una linea
per direzione voluta.
C) Numero di line
azzurre che vanno
verso un punto di fuga.
D) Numero di linee
azzurre che vanno
verso un punto di
fuga, dopo aver
rimosso alcune
linee trovate.
Blue-line image
(Sobel)
8 Non riesce 2 2
Red-line image
(Canny)
8 Non riesce 2 2
Sample #6 A) Numero di linee che
concorrono ad un
punto di fuga (slider,
“Qt: 8”)
B) Variare lo slider per
avere almeno una linea
per direzione voluta.
C) Numero di line
azzurre che vanno
verso un punto di fuga.
D) Numero di linee
azzurre che vanno
verso un punto di
fuga, dopo aver
rimosso alcune
linee trovate.
Blue-line image
(Sobel)
8 20 2 2
Red-line image
(Canny)
8 20 2 3
Questo test è stato mandato a cinque persone differenti e i risultati in tabella sono dati
da una media delle risposte. In realtà il programma trova sempre le stesse linee quindi
in questo caso varia solo la modalità con cui l’utente percepisce e calcola il punto di
fuga di un’immagine.
Come si può notare dalle tabelle entrambi i metodi riescono ad individuare molto
bene e già con solo otto linee di partenza, due delle tre direzioni preferenziali. Il
problema è trovare la terza direzione, difatti il programma o non riesce ad individuare
nessuna linea oppure ne trova poche. Poiché il metodo di individuazione dei tre punti
di fuga è basato sulla ricerca delle tre zone con maggior densità di punti
d’intersezione fra le linee trovate, il fatto di individuare solamente una o due linee
nella terza direzione non porta ad un numero sufficientemente alto di punti da creare
un cluster. Quello che succede è che l’algoritmo calcola una media fra quei punti ed
altri trovati dentro o fuori dell’immagine, andando a sfalsare il terzo cluster. La
soluzione, di eliminare alcune linee non volute, aiuta in parte il programma a
ricalibrare correttamente la ricerca di cluster ma sarebbe d’aiuto anche eliminare
46. qualche linea in eccesso nelle due direzioni già trovate. Un’altra cosa che si nota è
che in generale bisogna aumentare ad almeno venti il valore dello slider per avere
almeno una linea nelle tre direzioni volute; conviene quindi partire da questo numero
di base e andare poi a sfoltire le linee non desiderate o quelle in eccesso. Un’ulteriore
valutazione che si può fare è che le linee rosse individuano più velocemente i punti di
fuga corretti. Sarebbe interessante aggiungere in seguito due punti nella colonna della
tabella; ovvero quante linee della direzione corretta sia necessario togliere e se
andando a modificare i filtri e introducendo uno slider per dare la possibilità
all’utente di variarli, si nota qualche cambiamento nell’individuazione delle linee. Si
potrebbe anche aggiungere una riga in cui si valuta il risultato su un’immagine in cui
il programma utilizza sia Sobel che Canny per individuare le linee.
47. Conclusioni
Dalla validazione sperimentale si evince che il metodo basato sulla trasformata di
Canny dà maggiore informazione direzionale, si trovano più linee con differente
direzione, mentre quello basato su Sobel spesso riesce ad individuare solo due
direzioni preferenziali su tre. Purtroppo, anche utilizzando la trasformata di Hough,
basata su Canny, il più delle volte non si riescono ad individuare i punti di fuga
corretti.
Questo è dovuto in parte alla trasformata che non individua abbastanza linee con
diversa direzione ed in parte alla scelta di usare il metodo dell’intersezione per
individuare le tre direzioni principali delle linee. Infatti, per immagini con poco
rumore visivo (case, uffici) non ci sono problemi perché la trasformata di Hough
individua correttamente le linee e sono tutte quelle che concorrono verso uno dei tre
punti di fuga, anche se spesso trova due direzioni su tre. Ma se vi sono elementi di
disturbo come alberi o mobilio allora iniziano le problematiche. Su rami e arbusti
qualcosa si può fare andando a lavorare con i filtri per cercare di sfocare un poco
l’immagine e quindi non far percepire i rami come bordi da includere nella ricerca
delle linee. Per i mobili o gli arredamenti interni il problema è diverso perché spesso
si tratta di pezzi squadrati e ben a fuoco nell’immagine e che in alcuni casi possono
concorrere alla corretta individuazione del punto di fuga. Si è pensato allora di
utilizzare l’informazione fornita dal colore ma spesso l’elemento di disturbo è dello
stesso colore delle pareti che ci interessano a livello di linee, oppure è un blocco di
colore diverso ma non lo si può escludere a priori non sapendo se è utile ai fini della
ricerca o meno. La soluzione adottata è stata quella di far scegliere all’utente quale
linea tenere e quale togliere ai fini dell’individuazione di un punto di fuga. L’utente
potrà quindi eliminare le linee non volute e il software eseguirà nell’immediato una
ricalibrazione con le linee rimaste. Se poi se ne vogliono aggiungere altre, il
programma, nel ricalcolo, non reinserirà quelle già eliminate.
Per quanto riguarda la scarsa scelta di linee da tutte e tre le direzioni, si è pensato di
inglobare in un’unica ricerca le direzioni trovate tramite Sobel con quelle trovate
tramite Canny, escludendo i doppioni, ma per una questione di tempo non si è riusciti
ad implementarlo sul software. Si è visto che la possibilità di scartare le linee non
volute migliora sensibilmente la capacità di trovare il punto di fuga, mentre sarebbe
d’aiuto una maggiore variabilità di linee individuate per avere un cluster più corposo
per alcune direzioni. Per fare questo un’altra soluzione potrebbe essere quella di
coadiuvare la ricerca stessa con un algoritmo genetico oppure con una rete neurale.
48. Appendice
Strumenti
In questo capitolo vengono introdotte brevemente gli strumenti utilizzati per scrivere
il codice.
I OpenCV
OpenCV (Open Source Computer Vision Library) è una libreria software
multipiattaforma nell’ambito della visione artificiale in tempo reale. Si è scelto di
utilizzarla poiché principalmente è scritta in C++ e la sua prima interfaccia è il C++,
linguaggio con cui è scritto il software della tesi. Inoltre, offre una struttura comune
su cui gli sviluppatori da cui possono partire, in modo tale che il codice sia più
leggibile e trasferibile.
II GitHub
GitHub, Inc. è un provider di hosting Internet basato su cloud per lo sviluppo di
software e il controllo della versione tramite Git, uno specifico sistema di controllo
versioni open-source creato da Linus Torvalds nel 2005.
In particolare, Git è un sistema di controllo versioni distribuito, il che significa che
l’intero codice base e la cronologia sono disponibili sul computer di ogni
sviluppatore, il che permette di creare facilmente ramificazioni e fusioni.
Il controllo delle versioni aiuta gli sviluppatori a tracciare e gestire le modifiche al
codice di un progetto software. Invece, il controllo delle versioni permette agli
sviluppatori di lavorare in sicurezza attraverso il branching (ramificazione) e
il merging (fusione). Con il branching, uno sviluppatore duplica parte del codice
sorgente (chiamato repository). Lo sviluppatore può quindi apportare in modo sicuro
modifiche a quella parte del codice senza influenzare il resto del progetto.
III Visual Studio
Microsoft Visual Studio (o più comunemente Visual Studio) è un ambiente di
sviluppo integrato sviluppato da Microsoft per lo sviluppo di applicazioni per tablet,
smartphone e computer, oltre a siti e servizi web. Come il suo predecessore, Visual
Studio integra la tecnologia IntelliSense che permette di correggere eventuali errori
sintattici, e anche alcuni logici, senza compilare l'applicazione, possiede un debugger
interno per il rilevamento e la correzione degli errori logici nel codice in runtime e
fornisce diversi strumenti per l'analisi delle prestazioni. Il futuro delle applicazioni
sarà basato interamente sull'integrazione tra i diversi dispostivi, mobile e fissi. I
49. programmatori dovranno cambiare l'approccio allo sviluppo delle app: il layout dovrà
adattarsi alla perfezione sia sul tablet sia su computer o smart Tv.
Microsoft Visual Studio è tra i programmi più utilizzati per sviluppare applicazioni
(code editor) e nelle ultime due versioni permette di creare applicazioni per Windows
8.1 (computer, tablet o smartphone) scrivendo il codice una sola volta.
50. Bibliografia
[1] Rafael C. Gonzalez - Richard E. Woods, Digital image processing (third edition),
Prentice Hall, 2008.
[2] Richard O.Duda and Peter E.Hart “Use of the Hough transformation to detect
lines and curves in pictures”, January 1972.
[2] Florian Kluger1 - Hanno Ackermann1 - Michael Ying Yang2 - Bodo
Rosenhahn1, “Deep Learning for Vanishing Point Detection Using an Inverse
Gnomonic Projection”, Leibniz Universit ̈at Hannover - University of Twente
[3] Heechul Jung – Junggon Min – Junmo Kim, “An efficient lane detection
algorithm for lane departure detection”, June 2013, Conference: Intelligent Vehicles
Symposium (IV), 2013 IEEE
[4] A. Rezzani, “Business Intelligence. Processi, metodi, utilizzo in azienda”,
APOGEO, 2012
[5] Mehmed Kantardzic “Data Mining: Concepts, Models, Methods, and
Algorithms”, John Wiley & Sons, 2003
[6] Jiawei Han, Micheline Kamber, “Data Mining:Concepts and Techniques” Second
Edition, Morgan Kaufmann Publishers, 2006
[7] https://docs.opencv.org/3.4.8/d9/df8/tutorial_root.html
[8] MacQueen J.B., Some Methods for Classification Analysis of Multivariate
Observations, Proceedings of 5-th Berkeley Symposium on Mathematical Statistics
and Probability, Berkeley, 1967, University of California Press, 1:281-297.
[9] Roiger R.J., Geatz M.W., Introduzione al Data Mining, McGraw-Hill, 2004.
[10] Tan P., Steinbach M., Kumar V., Introduction to Data Mining, Pearson Addison
Wesley, 2005.