Nonlinear Digital Filtering with Python


Book Description

Nonlinear Digital Filtering with Python: An Introduction discusses important structural filter classes including the median filter and a number of its extensions (e.g., weighted and recursive median filters), and Volterra filters based on polynomial nonlinearities. Adopting both structural and behavioral approaches in characterizing and designing nonlinear digital filters, this book: Begins with an expedient introduction to programming in the free, open-source computing environment of Python Uses results from algebra and the theory of functional equations to construct and characterize behaviorally defined nonlinear filter classes Analyzes the impact of a range of useful interconnection strategies on filter behavior, providing Python implementations of the presented filters and interconnection strategies Proposes practical, bottom-up strategies for designing more complex and capable filters from simpler components in a way that preserves the key properties of these components Illustrates the behavioral consequences of allowing recursive (i.e., feedback) interconnections in nonlinear digital filters while highlighting a challenging but promising research frontier Nonlinear Digital Filtering with Python: An Introduction supplies essential knowledge useful for developing and implementing data cleaning filters for dynamic data analysis and time-series modeling.




Nonlinear Digital Filtering with Python


Book Description

Nonlinear Digital Filtering with Python: An Introduction discusses important structural filter classes including the median filter and a number of its extensions (e.g., weighted and recursive median filters), and Volterra filters based on polynomial nonlinearities. Adopting both structural and behavioral approaches in characterizing and designing nonlinear digital filters, this book: Begins with an expedient introduction to programming in the free, open-source computing environment of Python Uses results from algebra and the theory of functional equations to construct and characterize behaviorally defined nonlinear filter classes Analyzes the impact of a range of useful interconnection strategies on filter behavior, providing Python implementations of the presented filters and interconnection strategies Proposes practical, bottom-up strategies for designing more complex and capable filters from simpler components in a way that preserves the key properties of these components Illustrates the behavioral consequences of allowing recursive (i.e., feedback) interconnections in nonlinear digital filters while highlighting a challenging but promising research frontier Nonlinear Digital Filtering with Python: An Introduction supplies essential knowledge useful for developing and implementing data cleaning filters for dynamic data analysis and time-series modeling.




Digital Filter Design using Python for Power Engineering Applications


Book Description

This book is an in-depth description on how to design digital filters. The presentation is geared for practicing engineers, using open source computational tools, while incorporating fundamental signal processing theory. The author includes theory as-needed, with an emphasis on translating to practical application. The book describes tools in detail that can be used for filter design, along with the steps needed to automate the entire process. Breaks down signal processing theory into simple, understandable language for practicing engineers; Provides readers with a highly-practical introduction to digital filter design; Uses open source computational tools, while incorporating fundamental signal processing theory; Describes examples of digital systems in engineering and a description of how they are implemented in practice; Includes case studies where filter design is described in depth from inception to final implementation.




Exploratory Data Analysis Using R


Book Description

Exploratory Data Analysis Using R provides a classroom-tested introduction to exploratory data analysis (EDA) and introduces the range of "interesting" – good, bad, and ugly – features that can be found in data, and why it is important to find them. It also introduces the mechanics of using R to explore and explain data. The book begins with a detailed overview of data, exploratory analysis, and R, as well as graphics in R. It then explores working with external data, linear regression models, and crafting data stories. The second part of the book focuses on developing R programs, including good programming practices and examples, working with text data, and general predictive models. The book ends with a chapter on "keeping it all together" that includes managing the R installation, managing files, documenting, and an introduction to reproducible computing. The book is designed for both advanced undergraduate, entry-level graduate students, and working professionals with little to no prior exposure to data analysis, modeling, statistics, or programming. it keeps the treatment relatively non-mathematical, even though data analysis is an inherently mathematical subject. Exercises are included at the end of most chapters, and an instructor's solution manual is available. About the Author: Ronald K. Pearson holds the position of Senior Data Scientist with GeoVera, a property insurance company in Fairfield, California, and he has previously held similar positions in a variety of application areas, including software development, drug safety data analysis, and the analysis of industrial process data. He holds a PhD in Electrical Engineering and Computer Science from the Massachusetts Institute of Technology and has published conference and journal papers on topics ranging from nonlinear dynamic model structure selection to the problems of disguised missing data in predictive modeling. Dr. Pearson has authored or co-authored books including Exploring Data in Engineering, the Sciences, and Medicine (Oxford University Press, 2011) and Nonlinear Digital Filtering with Python. He is also the developer of the DataCamp course on base R graphics and is an author of the datarobot and GoodmanKruskal R packages available from CRAN (the Comprehensive R Archive Network).




Mining Imperfect Data


Book Description

It has been estimated that as much as 80% of the total effort in a typical data analysis project is taken up with data preparation, including reconciling and merging data from different sources, identifying and interpreting various data anomalies, and selecting and implementing appropriate treatment strategies for the anomalies that are found. This book focuses on the identification and treatment of data anomalies, including examples that highlight different types of anomalies, their potential consequences if left undetected and untreated, and options for dealing with them. As both data sources and free, open-source data analysis software environments proliferate, more people and organizations are motivated to extract useful insights and information from data of many different kinds (e.g., numerical, categorical, and text). The book emphasizes the range of open-source tools available for identifying and treating data anomalies, mostly in R but also with several examples in Python. Mining Imperfect Data: With Examples in R and Python, Second Edition presents a unified coverage of 10 different types of data anomalies (outliers, missing data, inliers, metadata errors, misalignment errors, thin levels in categorical variables, noninformative variables, duplicated records, coarsening of numerical data, and target leakage). It includes an in-depth treatment of time-series outliers and simple nonlinear digital filtering strategies for dealing with them, and it provides a detailed introduction to several useful mathematical characteristics of important data characterizations that do not appear to be widely known among practitioners, such as functional equations and key inequalities. While this book is primarily for data scientists, researchers in a variety of fields—namely statistics, machine learning, physics, engineering, medicine, social sciences, economics, and business—will also find it useful.




Innovations in Computational Intelligence


Book Description

The present book includes a set of selected best papers from the 3rd International Conference on Recent Developments in Science, Engineering and Technology (REDSET 2016), held in Gurgaon, India, from 21 to 22 October 2016. The conference focused on the experimental, theoretical and application aspects of innovations in computational intelligence and provided a platform for the academicians and scientists. This book provides an insight into ongoing research and future directions in this novel, continuously evolving field. Many decades have been devoted to creating and refining methods and tools for computational intelligence such as Artificial Neural Networks, Evolutionary Computation, Fuzzy Logic, Computational Swarm Intelligence and Artificial Immune Systems. However, their applications have not yet been broadly disseminated. Computational intelligence can be used to provide solutions to many real-life problems, which could be translated into binary languages, allowing computers to process them. These problems, which involve various fields such as robotics, bioinformatics, computational biology, gene expression, cancer classification, protein function prediction, etc., could potentially be solved using computational intelligence techniques.




Proceedings of the Future Technologies Conference (FTC) 2020, Volume 1


Book Description

This book provides the state-of-the-art intelligent methods and techniques for solving real-world problems along with a vision of the future research. The fifth 2020 Future Technologies Conference was organized virtually and received a total of 590 submissions from academic pioneering researchers, scientists, industrial engineers, and students from all over the world. The submitted papers covered a wide range of important topics including but not limited to computing, electronics, artificial intelligence, robotics, security and communications and their applications to the real world. After a double-blind peer review process, 210 submissions (including 6 poster papers) have been selected to be included in these proceedings. One of the meaningful and valuable dimensions of this conference is the way it brings together a large group of technology geniuses in one venue to not only present breakthrough research in future technologies, but also to promote discussions and debate of relevant issues, challenges, opportunities and research findings. The authors hope that readers find the book interesting, exciting and inspiring




Fundamentals of Nonlinear Digital Filtering


Book Description

Fundamentals of Nonlinear Digital Filtering is the first book of its kind, presenting and evaluating current methods and applications in nonlinear digital filtering. Written for professors, researchers, and application engineers, as well as for serious students of signal processing, this is the only book available that functions as both a reference handbook and a textbook. Solid introductory material, balanced coverage of theoretical and practical aspects, and dozens of examples provide you with a self-contained, comprehensive information source on nonlinear filtering and its applications.




DIGITAL VIDEO PROCESSING PROJECTS USING PYTHON AND TKINTER


Book Description

The first project is a video player application with an additional feature to compute and display the MD5 hash of each frame in a video. The user interface is built using Tkinter, a Python GUI toolkit, providing buttons for opening a video file, playing, pausing, and stopping the video playback. Upon opening a video file, the application displays metadata such as filename, duration, resolution, FPS, and codec information in a table. The video can be navigated using a slider to seek to a specific time point. When the video is played, the application iterates through each frame, extracts it from the video clip, calculates its MD5 hash, and displays the frame along with its histogram and MD5 hash. The histogram represents the pixel intensity distribution of each color channel (red, green, blue) in the frame. The computed MD5 hash for each frame is displayed in a label below the video frame. Additionally, the frame hash along with its index is saved to a text file for further analysis or verification purposes. The class encapsulates the functionality of the application, providing methods for opening a video file, playing and controlling video playback, updating metadata, computing frame histogram, plotting histogram, calculating MD5 hash for each frame, and saving frame hashes to a file. The main function initializes the Tkinter root window, instantiates the class, and starts the Tkinter event loop to handle user interactions and update the GUI accordingly. The second project is a video player application with additional features for frame extraction and visualization of RGB histograms for each frame. Developed using Tkinter, a Python GUI toolkit, the application provides functionalities such as opening a video file, playing, pausing, and stopping video playback. The user interface includes buttons for controlling video playback, a combobox for selecting zoom scale, an entry for specifying a time point to jump to, and buttons for frame extraction and opening another instance of the application. Upon opening a video file, the application loads it using the imageio library and displays the frames in a canvas. Users can play, pause, and stop the video using dedicated buttons. The zoom scale can be adjusted, and the video can be navigated using scrollbar or time entry. Additionally, users can extract a specific frame by entering its frame number, which opens a new window displaying the extracted frame along with its RGB histograms and MD5 hash value. The class encapsulates the application's functionalities, including methods for opening a video file, playing/pausing/stopping video, updating zoom scale, displaying frames, handling mouse events for dragging and scrolling, jumping to a specified time, and extracting frames. The main function initializes the Tkinter root window and starts the application's event loop to handle user interactions and update the GUI accordingly. Users can also open multiple instances of the application simultaneously to work with different video files concurrently. The third project is a GUI application built with Tkinter for calculating hash values of video frames and displaying them in a listbox. The interface consists of different frames for video display and hash values, along with buttons for controlling video playback, calculating hashes, saving hash values to a file, and opening a new instance of the application. Users can open a video file using the "Open Video" button, after which they can play, pause, or stop the video using corresponding buttons. Upon opening a video file, the application reads frames from the video capture and displays them in the designated frame. Users can interact with the video using playback buttons to control the video's flow. Hash values for each frame are calculated using various hashing algorithms such as MD5, SHA-1, SHA-256, and others. These hash values are then displayed in the listbox, allowing users to view the hash values corresponding to each algorithm. Additionally, users can save the calculated hash values to a text file by clicking the "Save Hashes" button, providing a convenient way to store and analyze the hash data. Lastly, users can open multiple instances of the application simultaneously by clicking the "Open New Instance" button, facilitating concurrent processing of different video files. The fourth project is a GUI application developed using Tkinter for analyzing video frames through frame hashing and histogram visualization. The interface presents a canvas for displaying the video frames along with control buttons for video playback, frame extraction, and zoom control. Users can open a video file using the "Open Video" button, and the application provides functionality to play, pause, and stop the video playback. Additionally, users can jump to specific time points within the video using the time entry field and "Jump to Time" button. Upon extracting a frame, the application opens a new window displaying the selected frame along with its histogram and multiple hash values calculated using various algorithms such as MD5, SHA-1, SHA-256, and others. The histogram visualization presents the distribution of pixel values across the RGB channels, aiding in the analysis of color composition within the frame. The hash values are displayed in a listbox within the frame extraction window, providing users with comprehensive information about the frame's content and characteristics. Furthermore, users can open multiple instances of the application simultaneously, enabling concurrent analysis of different video files. The fifth project implements a video player application with edge detection capabilities using various algorithms. The application is designed using the Tkinter library for the graphical user interface (GUI). Upon execution, the user is presented with a window containing control buttons and panels for displaying the video and extracted frames. The main functionalities of the application include opening a video file, playing, pausing, and stopping the video playback. Additionally, users can jump to a specific time in the video, extract frames, and open another instance of the video player application. The video playback is displayed on a canvas, allowing for zooming in and out using a combobox to adjust the scale. One of the key features of this application is the ability to perform edge detection on frames extracted from the video. When a frame is extracted, the application displays the original frame alongside its edge detection result using various algorithms such as Canny, Sobel, Prewitt, Laplacian, Scharr, Roberts, FreiChen, Kirsch, Robinson, Gaussian, or no edge detection. Histogram plots for each RGB channel of the frame are also displayed, along with hash values computed using different hashing algorithms for integrity verification. The edge detection result and histogram plots are updated dynamically based on the selected edge detection algorithm. Overall, this application provides a convenient platform for visualizing video content and performing edge detection analysis on individual frames, making it useful for tasks such as video processing, computer vision, and image analysis. The sixth project is a Python application built using the Tkinter library for creating a graphical user interface (GUI) to play videos and apply various filtering techniques to individual frames. The application allows users to open video files in common formats such as MP4, AVI, and MKV. Once a video is opened, users can play, pause, stop, and jump to specific times within the video. The GUI consists of two main panels: one for displaying the video and another for control buttons. The video panel contains a canvas where the frames of the video are displayed. Users can zoom in or out on the video frames using a combobox, and they can also scroll horizontally through the video using a scrollbar. Control buttons such as play/pause, stop, extract frame, and open another video player are provided in the control panel. When a frame is extracted, the application opens a new window displaying the extracted frame along with options to apply various filtering methods. These methods include Gaussian blur, mean blur, median blur, bilateral filtering, non-local means denoising, anisotropic diffusion, total variation denoising, Wiener filter, adaptive thresholding, and wavelet transform. Users can select a filtering method from a dropdown menu, and the filtered result along with the histogram and hash values of the frame are displayed in real-time. The application also provides functionality to open another instance of the video player, allowing users to work with multiple videos simultaneously. Overall, this project provides a user-friendly interface for playing videos and applying filtering techniques to individual frames, making it useful for tasks such as video processing, analysis, and editing.




Digital Signal Processing (DSP) with Python Programming


Book Description

The parameter estimation and hypothesis testing are the basic tools in statistical inference. These techniques occur in many applications of data processing., and methods of Monte Carlo have become an essential tool to assess performance. For pedagogical purposes the book includes several computational problems and exercices. To prevent students from getting stuck on exercises, detailed corrections are provided.