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.
IRJET- 3D Vision System using Calibrated Stereo CameraIRJET Journal
This document describes a 3D vision system that uses calibrated stereo cameras to estimate the depth of objects. It discusses using two digital cameras placed at different positions to capture images of the same object. Feature matching and disparity calculation algorithms are used to calculate depth based on the difference between images. The cameras are calibrated using camera parameters derived from images of a checkerboard pattern. Trigonometry formulas are then used to calculate depth based on the camera positions and disparity. A servo system is used to independently and synchronously move the cameras along the x and y axes to capture views of objects from different angles.
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.
The document discusses different types of images in Matlab including binary, grayscale, indexed, and RGB images. It also summarizes commands to convert between image types such as converting grayscale to indexed or truecolor to binary. Finally, it provides examples of how to view images, measure pixel values and distances, and crop images using the imtool command.
This document discusses working with images in MATLAB. It defines what an image is as a set of pixel intensity data stored in a 3D matrix with planes for red, green, and blue values. Popular image functions like imread, imshow, rgb2gray and imhist are introduced. Examples are given for loading an image, displaying it, converting it to grayscale, and viewing its histogram. Further image adjustments like contrast ratio changes and conversions to black and white or other formats are demonstrated.
The students can learn about basics of image processing using matlab.
It explains the image operations with the help of examples and Matlab codes.
Students can fine sample images and .m code from the link given in slides.
Introduction to Image Processing with MATLABSriram Emarose
The document discusses various concepts related to computer vision and image processing including:
1. It describes how the human eye works as an optical sensor and the brain acts as a processor to interpret visual signals.
2. It explains different types of images like RGB, grayscale, binary and their pixel representations.
3. It provides algorithms to extract specific colors from an image, count objects, apply thresholding, and perform morphological operations.
4. Concepts of feature detection using kernels and image filtering are also covered along with examples.
This document discusses computer graphics and its various aspects. It defines computer graphics as the field concerned with digitally synthesizing and manipulating visual content. The two main types of computer graphics are raster (composed of pixels) and vector (composed of paths). Raster images are bitmap images mapped to a grid of pixels that can be edited at the pixel level. Vector images use mathematical formulas to draw objects like lines and curves. Common graphics applications include paint programs, animation software, CAD, and desktop publishing. Cathode ray tubes are used to display images by scanning an electron beam across a screen coated with phosphors.
This document discusses computer graphics and its applications. It defines computer graphics as the field concerned with digitally synthesizing and manipulating visual content. The two main types are raster (composed of pixels) and vector (composed of paths). Raster images are bitmaps mapped to a grid, while vector images use mathematical formulas. Common graphics applications include paint programs, animation software, CAD, and desktop publishing. Cathode ray tubes are used to display images by scanning an electron beam across a screen coated with phosphors.
IRJET- 3D Vision System using Calibrated Stereo CameraIRJET Journal
This document describes a 3D vision system that uses calibrated stereo cameras to estimate the depth of objects. It discusses using two digital cameras placed at different positions to capture images of the same object. Feature matching and disparity calculation algorithms are used to calculate depth based on the difference between images. The cameras are calibrated using camera parameters derived from images of a checkerboard pattern. Trigonometry formulas are then used to calculate depth based on the camera positions and disparity. A servo system is used to independently and synchronously move the cameras along the x and y axes to capture views of objects from different angles.
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.
The document discusses different types of images in Matlab including binary, grayscale, indexed, and RGB images. It also summarizes commands to convert between image types such as converting grayscale to indexed or truecolor to binary. Finally, it provides examples of how to view images, measure pixel values and distances, and crop images using the imtool command.
This document discusses working with images in MATLAB. It defines what an image is as a set of pixel intensity data stored in a 3D matrix with planes for red, green, and blue values. Popular image functions like imread, imshow, rgb2gray and imhist are introduced. Examples are given for loading an image, displaying it, converting it to grayscale, and viewing its histogram. Further image adjustments like contrast ratio changes and conversions to black and white or other formats are demonstrated.
The students can learn about basics of image processing using matlab.
It explains the image operations with the help of examples and Matlab codes.
Students can fine sample images and .m code from the link given in slides.
Introduction to Image Processing with MATLABSriram Emarose
The document discusses various concepts related to computer vision and image processing including:
1. It describes how the human eye works as an optical sensor and the brain acts as a processor to interpret visual signals.
2. It explains different types of images like RGB, grayscale, binary and their pixel representations.
3. It provides algorithms to extract specific colors from an image, count objects, apply thresholding, and perform morphological operations.
4. Concepts of feature detection using kernels and image filtering are also covered along with examples.
This document discusses computer graphics and its various aspects. It defines computer graphics as the field concerned with digitally synthesizing and manipulating visual content. The two main types of computer graphics are raster (composed of pixels) and vector (composed of paths). Raster images are bitmap images mapped to a grid of pixels that can be edited at the pixel level. Vector images use mathematical formulas to draw objects like lines and curves. Common graphics applications include paint programs, animation software, CAD, and desktop publishing. Cathode ray tubes are used to display images by scanning an electron beam across a screen coated with phosphors.
This document discusses computer graphics and its applications. It defines computer graphics as the field concerned with digitally synthesizing and manipulating visual content. The two main types are raster (composed of pixels) and vector (composed of paths). Raster images are bitmaps mapped to a grid, while vector images use mathematical formulas. Common graphics applications include paint programs, animation software, CAD, and desktop publishing. Cathode ray tubes are used to display images by scanning an electron beam across a screen coated with phosphors.
This document discusses digital image processing using MATLAB. It begins by defining digital images and how they are represented by arrays of pixels in computer memory. It then discusses how images can be read into MATLAB and converted between color, grayscale, and binary representations. Various image processing operations are described such as edge detection, dilation, filling, and calculating region properties. Finally, examples are given of processing color images using intensity transformations and gamma correction.
Sign Language Recognition Using Image Processing For Mute Peoplepaperpublications3
Abstract: Computer recognition of sign language is an important research problem for enabling communication with mute people. This project introduces an efficient and fast algorithm for identification of the number of fingers opened in a gesture representing an alphabet of the Binary Sign Language.
The system does not require the hand to be perfectly aligned to the camera. The project uses image processing system to identify, especially English alphabetic sign language used by the mute people to communicate. The basic objective of this project is to develop a computer based intelligent system that will enable mute people significantly to communicate with all other people using their natural hand gestures.
The idea consisted of designing and building up an intelligent system using image processing, machine learning and artificial intelligence concepts to take visual inputs of sign language’s hand gestures and generate easily recognizable form of outputs.
Hence the objective of this project is to develop an intelligent system which can act as a translator between the sign language and the spoken language dynamically and can make the communication between people with mute and normal people both effective and efficient. The system is we are implementing for Binary sign language but it can detect any sign language with prior image processing.
The document provides an overview of image processing in MATLAB. It discusses the basic data structures used to represent images as matrices and different image types (binary, indexed, grayscale, truecolor). It provides examples of reading and displaying images, enhancing contrast, and calculating basic image statistics. Functions covered include imread, imshow, imhist, histeq, imwrite, imopen, imadjust, im2bw, bwlabel, and regionprops.
The document discusses a workshop on image processing using MATLAB. It provides an overview of MATLAB and its image processing toolbox. It describes how to read, display, and convert between different image formats in MATLAB. It also demonstrates various image processing operations that can be performed, such as arithmetic operations, conversion between color and grayscale, image rotation, blurring and deblurring, and filling regions of interest. The document aims to introduce the basics of working with images in the MATLAB environment.
This document summarizes a research paper that presents a real-time 3D reconstruction method using stereo vision from a driving car. The method extends LSD-SLAM with stereo capabilities to simultaneously track camera pose and reconstruct semi-dense depth maps. It is evaluated on the KITTI dataset and compared to laser scans and traditional stereo methods. Results show the direct SLAM technique generates visually pleasing and globally consistent semi-dense reconstructions in real-time on a single CPU.
Continuing the presentation series, the fourth part is about the blurring and sharpening of images. the manual method of doing the operations is given along with some functions for blurring. the next is about edge detection algorithms like Canny, Sobel, and Prewitt. also, the dilates and the eroded images are provided along with the canny ones.
I HAVE WORKED HARD FOR THIS PRESENTATION!! SO PLEASE SUPPORT GUYS!!!
This document summarizes a research paper that proposes a new technique for binarizing images captured of black/green boards using a mobile camera. It begins with an abstract that overviews binarizing degraded images from mobile-captured black/green board images to extract text with 92.589% accuracy. It then reviews existing binarization techniques in the literature and describes common global and local thresholding methods. The proposed technique enhances the input image, segments it into 3x3 parts, computes local thresholds using OTSU for each part, binarizes the parts, and joins them. Experimental results on a database of 50 mobile-captured board images show the technique achieves better accuracy than other algorithms according to evaluation metrics.
FORGERY (COPY-MOVE) DETECTION IN DIGITAL IMAGES USING BLOCK METHODeditorijcres
AKHILESH KUMAR YADAV, DEENBANDHU SINGH, VIVEK KUMAR
Department of Computer Science and Engineering
Babu Banarasi Das University, Lucknow
akhi2232232@gmail.com, deenbandhusingh85@gmail.com, vivek.kumar0091@gmail.com
ABSTRACT- Digital images can be easily modified using powerful image editing software. Determining whether a manipulation is innocent of sharpening from those which are malicious, such as removing or adding parts to an image is the topic of this paper. In this paper we focus on detection of a special type of forgery-the Copy-Move forgery, in this part of the original image is copied moved to desired location in the same image and pasted. The proposed method compress images using DWT (discrete wavelet transform) and divided into blocks and choose blocks than perform feature vector calculation and lexicographical sorting and duplicated blocks are identified after sorting. This method is good at some manipulation/attack likes scaling, rotation, Gaussian noise, smoothing, JPEG compression etc.
INDEX TERMS- Copy-Move forgery, Wavelet Transform, Lexicographical Sorting, Region Duplication Detection.
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 introduces image processing with MatLab. It discusses downloading image files, setting the directory in MatLab, and reading images using imread(). It then covers storing an image, creating the negative of an image, viewing RGB components, gamma scaling to adjust intensities, converting to grayscale, brightening images, and creating histograms to analyze pixel intensity distributions. Key steps include using imshow() to view images, imadjust() for gamma scaling, rgb2gray() for conversion, and imhist() to plot histograms.
Structure and Motion - 3D Reconstruction of Cameras and StructureGiovanni Murru
The document discusses structure from motion reconstruction from multiple images. It provides an overview of the steps to:
1. Estimate camera motion and 3D structure from a sequence of images using a stratified approach, starting with projective reconstruction and refining to affine and metric reconstruction.
2. Reconstruct structure and motion for two datasets - a public dataset and a personal dataset acquired by the student.
3. The key steps are feature detection, matching, estimating the fundamental matrix, triangulating 3D points, identifying the plane at infinity to upgrade from projective to affine reconstruction, and further refinement to metric reconstruction if possible.
3D Reconstruction from Multiple uncalibrated 2D Images of an ObjectAnkur Tyagi
3D reconstruction is the process of capturing the shape and appearance of real objects. In this project we are using passive methods which only use sensors to measure the radiance reflected or emitted by the objects surface to infer its 3D structure.
Image pre-processing involves operations on images to improve image data by suppressing distortions or enhancing features. There are four categories of pre-processing methods based on pixel neighborhood size used: pixel brightness transformations, geometric transformations, local neighborhood methods, and global image restoration. Pre-processing aims to correct degradations by using prior knowledge about the degradation, image acquisition device, or objects in the image. Common pre-processing methods include brightness and geometric transformations as well as brightness interpolation when re-sampling images.
1. The document describes a system that uses 2D image matching into a database of images rendered from a 3D visual model to enable visual autonomy for robots.
2. Key aspects of the system include using a Matterport camera to create detailed 3D models, rendering 2D images from various viewpoints in the 3D model to create a database, and then matching live camera images to this database for localization and navigation tasks.
3. The system achieves accurate localization through a three-step image matching process involving color histograms, keypoint matching, and geometric consistency checks. Validation tests on robots demonstrate it enables localization and homing capabilities.
IJERA (International journal of Engineering Research and Applications) is International online, ... peer reviewed journal. For more detail or submit your article, please visit www.ijera.com
This document describes the design and implementation of a 3D graphics rasterizer with texture mapping and shading capabilities on an FPGA. Key aspects include:
1. The rasterizer implements the main components of the 3D graphics pipeline including vertex shader, pixel shader, triangle setup engine, and rasterization engine.
2. Texture mapping and shading are supported through a "slim shader" design that divides triangles into strips and gates unnecessary shading and texturing to improve performance.
3. Address alignment logic is used to reduce power consumption by identifying overlapping texture requests and only fetching unique texels from memory each cycle.
This document discusses image processing with MATLAB. It provides an overview of the different image formats supported by MATLAB, including JPEG, TIFF, and BMP. It also describes the different types of images like binary, grayscale, and RGB images. It explains how to read images into MATLAB, extract color channels, remove noise, and find properties like the centroid and area. Finally, it discusses how to do serial communication between MATLAB and an Arduino board to process images in real-time and send signals to a microcontroller.
The document provides an analysis and suggestions for improving the social media efforts of Mattie McGurk. It analyzes current page likes, strengths, and areas for improvement. Suggestions are made to add Twitter, schedule posts, include more advocate stories and inspirational content, and engage more with followers. Strategies are outlined for increasing followers through current advocates sharing content and monitoring trends. Responding quickly to negative comments and creating positive content is advised. The evaluation recommends posting 1-2 times daily and including more advocate stories and experiences to inspire followers.
This document contains the resume of Amit Kr Basu, who has over 10 years of experience in design, development, and validation of computer-based control systems for nuclear power plants in India. He currently works as a Scientific Officer-D at Nuclear Power Corporation of India, where his responsibilities include designing reactor control systems, writing computer programs, and providing technical support. He has expertise in various programming languages and software related to nuclear power plant control systems.
This document discusses digital image processing using MATLAB. It begins by defining digital images and how they are represented by arrays of pixels in computer memory. It then discusses how images can be read into MATLAB and converted between color, grayscale, and binary representations. Various image processing operations are described such as edge detection, dilation, filling, and calculating region properties. Finally, examples are given of processing color images using intensity transformations and gamma correction.
Sign Language Recognition Using Image Processing For Mute Peoplepaperpublications3
Abstract: Computer recognition of sign language is an important research problem for enabling communication with mute people. This project introduces an efficient and fast algorithm for identification of the number of fingers opened in a gesture representing an alphabet of the Binary Sign Language.
The system does not require the hand to be perfectly aligned to the camera. The project uses image processing system to identify, especially English alphabetic sign language used by the mute people to communicate. The basic objective of this project is to develop a computer based intelligent system that will enable mute people significantly to communicate with all other people using their natural hand gestures.
The idea consisted of designing and building up an intelligent system using image processing, machine learning and artificial intelligence concepts to take visual inputs of sign language’s hand gestures and generate easily recognizable form of outputs.
Hence the objective of this project is to develop an intelligent system which can act as a translator between the sign language and the spoken language dynamically and can make the communication between people with mute and normal people both effective and efficient. The system is we are implementing for Binary sign language but it can detect any sign language with prior image processing.
The document provides an overview of image processing in MATLAB. It discusses the basic data structures used to represent images as matrices and different image types (binary, indexed, grayscale, truecolor). It provides examples of reading and displaying images, enhancing contrast, and calculating basic image statistics. Functions covered include imread, imshow, imhist, histeq, imwrite, imopen, imadjust, im2bw, bwlabel, and regionprops.
The document discusses a workshop on image processing using MATLAB. It provides an overview of MATLAB and its image processing toolbox. It describes how to read, display, and convert between different image formats in MATLAB. It also demonstrates various image processing operations that can be performed, such as arithmetic operations, conversion between color and grayscale, image rotation, blurring and deblurring, and filling regions of interest. The document aims to introduce the basics of working with images in the MATLAB environment.
This document summarizes a research paper that presents a real-time 3D reconstruction method using stereo vision from a driving car. The method extends LSD-SLAM with stereo capabilities to simultaneously track camera pose and reconstruct semi-dense depth maps. It is evaluated on the KITTI dataset and compared to laser scans and traditional stereo methods. Results show the direct SLAM technique generates visually pleasing and globally consistent semi-dense reconstructions in real-time on a single CPU.
Continuing the presentation series, the fourth part is about the blurring and sharpening of images. the manual method of doing the operations is given along with some functions for blurring. the next is about edge detection algorithms like Canny, Sobel, and Prewitt. also, the dilates and the eroded images are provided along with the canny ones.
I HAVE WORKED HARD FOR THIS PRESENTATION!! SO PLEASE SUPPORT GUYS!!!
This document summarizes a research paper that proposes a new technique for binarizing images captured of black/green boards using a mobile camera. It begins with an abstract that overviews binarizing degraded images from mobile-captured black/green board images to extract text with 92.589% accuracy. It then reviews existing binarization techniques in the literature and describes common global and local thresholding methods. The proposed technique enhances the input image, segments it into 3x3 parts, computes local thresholds using OTSU for each part, binarizes the parts, and joins them. Experimental results on a database of 50 mobile-captured board images show the technique achieves better accuracy than other algorithms according to evaluation metrics.
FORGERY (COPY-MOVE) DETECTION IN DIGITAL IMAGES USING BLOCK METHODeditorijcres
AKHILESH KUMAR YADAV, DEENBANDHU SINGH, VIVEK KUMAR
Department of Computer Science and Engineering
Babu Banarasi Das University, Lucknow
akhi2232232@gmail.com, deenbandhusingh85@gmail.com, vivek.kumar0091@gmail.com
ABSTRACT- Digital images can be easily modified using powerful image editing software. Determining whether a manipulation is innocent of sharpening from those which are malicious, such as removing or adding parts to an image is the topic of this paper. In this paper we focus on detection of a special type of forgery-the Copy-Move forgery, in this part of the original image is copied moved to desired location in the same image and pasted. The proposed method compress images using DWT (discrete wavelet transform) and divided into blocks and choose blocks than perform feature vector calculation and lexicographical sorting and duplicated blocks are identified after sorting. This method is good at some manipulation/attack likes scaling, rotation, Gaussian noise, smoothing, JPEG compression etc.
INDEX TERMS- Copy-Move forgery, Wavelet Transform, Lexicographical Sorting, Region Duplication Detection.
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 introduces image processing with MatLab. It discusses downloading image files, setting the directory in MatLab, and reading images using imread(). It then covers storing an image, creating the negative of an image, viewing RGB components, gamma scaling to adjust intensities, converting to grayscale, brightening images, and creating histograms to analyze pixel intensity distributions. Key steps include using imshow() to view images, imadjust() for gamma scaling, rgb2gray() for conversion, and imhist() to plot histograms.
Structure and Motion - 3D Reconstruction of Cameras and StructureGiovanni Murru
The document discusses structure from motion reconstruction from multiple images. It provides an overview of the steps to:
1. Estimate camera motion and 3D structure from a sequence of images using a stratified approach, starting with projective reconstruction and refining to affine and metric reconstruction.
2. Reconstruct structure and motion for two datasets - a public dataset and a personal dataset acquired by the student.
3. The key steps are feature detection, matching, estimating the fundamental matrix, triangulating 3D points, identifying the plane at infinity to upgrade from projective to affine reconstruction, and further refinement to metric reconstruction if possible.
3D Reconstruction from Multiple uncalibrated 2D Images of an ObjectAnkur Tyagi
3D reconstruction is the process of capturing the shape and appearance of real objects. In this project we are using passive methods which only use sensors to measure the radiance reflected or emitted by the objects surface to infer its 3D structure.
Image pre-processing involves operations on images to improve image data by suppressing distortions or enhancing features. There are four categories of pre-processing methods based on pixel neighborhood size used: pixel brightness transformations, geometric transformations, local neighborhood methods, and global image restoration. Pre-processing aims to correct degradations by using prior knowledge about the degradation, image acquisition device, or objects in the image. Common pre-processing methods include brightness and geometric transformations as well as brightness interpolation when re-sampling images.
1. The document describes a system that uses 2D image matching into a database of images rendered from a 3D visual model to enable visual autonomy for robots.
2. Key aspects of the system include using a Matterport camera to create detailed 3D models, rendering 2D images from various viewpoints in the 3D model to create a database, and then matching live camera images to this database for localization and navigation tasks.
3. The system achieves accurate localization through a three-step image matching process involving color histograms, keypoint matching, and geometric consistency checks. Validation tests on robots demonstrate it enables localization and homing capabilities.
IJERA (International journal of Engineering Research and Applications) is International online, ... peer reviewed journal. For more detail or submit your article, please visit www.ijera.com
This document describes the design and implementation of a 3D graphics rasterizer with texture mapping and shading capabilities on an FPGA. Key aspects include:
1. The rasterizer implements the main components of the 3D graphics pipeline including vertex shader, pixel shader, triangle setup engine, and rasterization engine.
2. Texture mapping and shading are supported through a "slim shader" design that divides triangles into strips and gates unnecessary shading and texturing to improve performance.
3. Address alignment logic is used to reduce power consumption by identifying overlapping texture requests and only fetching unique texels from memory each cycle.
This document discusses image processing with MATLAB. It provides an overview of the different image formats supported by MATLAB, including JPEG, TIFF, and BMP. It also describes the different types of images like binary, grayscale, and RGB images. It explains how to read images into MATLAB, extract color channels, remove noise, and find properties like the centroid and area. Finally, it discusses how to do serial communication between MATLAB and an Arduino board to process images in real-time and send signals to a microcontroller.
The document provides an analysis and suggestions for improving the social media efforts of Mattie McGurk. It analyzes current page likes, strengths, and areas for improvement. Suggestions are made to add Twitter, schedule posts, include more advocate stories and inspirational content, and engage more with followers. Strategies are outlined for increasing followers through current advocates sharing content and monitoring trends. Responding quickly to negative comments and creating positive content is advised. The evaluation recommends posting 1-2 times daily and including more advocate stories and experiences to inspire followers.
This document contains the resume of Amit Kr Basu, who has over 10 years of experience in design, development, and validation of computer-based control systems for nuclear power plants in India. He currently works as a Scientific Officer-D at Nuclear Power Corporation of India, where his responsibilities include designing reactor control systems, writing computer programs, and providing technical support. He has expertise in various programming languages and software related to nuclear power plant control systems.
Sebuah gerakan yang mengajak para dermawan untuk memberikan beasiswa kepada anak anak indonesia yang kurang beruntung anak yatim piatu dan dhuafa dari sisi pendanaan
Case Study - Implementing DevOps for a complex hardware/software-based networ...Sailaja Tennati
This talk explained experiences and challenges implementing DevOps for a complex hardware/software-based network product with a large multi-site development team. DevOps was implemented across multiple organizations and system layers overcoming DevOps implementation challenges in a step-wise fashion. DevOps can be applied to complex multi-layer hardware/software based network products but be prepared for implementation challenges in the team and especially test orchestration and automation.
This document discusses writing HTTP middleware in Go. It begins by introducing HTTP middleware and how it can wrap HTTP handlers to execute logic before and after handlers. It then demonstrates how to write middleware that logs requests, and how middleware can be chained together. Finally, it shows how to use the Negroni package to write middleware and apply middleware to specific routes.
Effective Java - Chapter 3: Methods Common to All Objectsİbrahim Kürce
This document summarizes Chapter 3 of Effective Java by Joshua Bloch on methods common to all objects in Java. It discusses overriding the equals, hashCode, toString, clone, and Comparable methods while obeying their general contracts. When overriding equals, you must ensure the method is reflexive, symmetric, transitive, consistent and returns false for null. hashCode must be overridden whenever equals is overridden to satisfy its contract. toString should provide a concise representation of the object. clone should only be overridden judiciously and super.clone invoked for non-final classes.
International Journal of Computational Engineering Research(IJCER) ijceronline
nternational Journal of Computational Engineering Research (IJCER) is dedicated to protecting personal information and will make every reasonable effort to handle collected information appropriately. All information collected, as well as related requests, will be handled as carefully and efficiently as possible in accordance with IJCER standards for integrity and objectivity.
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.
Enhanced Optimization of Edge Detection for High Resolution Images Using Veri...ijcisjournal
dge Detection plays a crucial role in Image Processing and Segmentation where a set of algorithms aims
to identify various portions of a digital image at which a sharpened image is observed in the output or
more formally has discontinuities. The contour of Edge Detection also helps in Object Detection and
Recognition. Image edges can be detected by using two attributes such as Gradient and Laplacian. In our
Paper, we proposed a system which utilizes Canny and Sobel Operators for Edge Detection which is a
Gradient First order derivative function for edge detection by using Verilog Hardware Description
Language and in turn compared with the results of the previous paper in Matlab. The process of edge
detection in Verilog significantly reduces the processing time and filters out unneeded information, while
preserving the important structural properties of an image. This edge detection can be used to detect
vehicles in Traffic Jam, Medical imaging system for analysing MRI, x-rays by using Xilinx ISE Design
Suite 14.2.
This document is a mini project report on digital image processing using MATLAB. It discusses various image processing techniques and applications implemented in MATLAB, including image formats, operations, and tools. Applications demonstrated include text recognition, color tracking, solving an engineering problem using image processing, creating a virtual slate using laser tracking, face detection, and distance estimation. The report provides examples of MATLAB functions used for tasks like importing, displaying, converting and cropping images, as well as analyzing and manipulating them.
Use of Wavelet Transform Extension for Graphics Image Compression using JPEG2...CSCJournals
The new image compression standard JPEG2000, provides high compression rates for the same visual quality for gray and color images than JPEG. JPEG2000 is being adopted for image compression and transmission in mobile phones, PDA and computers. An image may contain the formatted text and graphics data. The compression performance of the JPEG2000 behaves poorly when compressing an image with low color depth such as graphics images. In this paper, we propose a technique to distinguish the true color images from graphics images and to compress graphics images using a simplified JPEG2000 compression method that will improve the compression performance. This method can be easily adapted in image compression applications without changing the syntax of compressed stream.
COMPARISON OF GPU AND FPGA HARDWARE ACCELERATION OF LANE DETECTION ALGORITHMsipij
The two fundamental components of a complete computer vision system are detection and classification.
The Lane detection algorithm, which is used in autonomous driving and smart vehicle systems, is within the
computer vision detection area. In a sophisticated road environment, lane marking is the responsibility of
the lane detection system. The warning system for a car that leaves its lane also heavily relies on lane
detection. The two primary stages of the implemented lane detection algorithm are edge detection and line
detection. In order to assess the trade-offs for latency, power consumption, and utilisation, we will
compare the state-of-the-art implementation performance attained with both FPGA and GPU in this work.
Our analysis highlights the benefits and drawbacks of the two systems.
Comparison of GPU and FPGA Hardware Acceleration of Lane Detection Algorithmsipij
The two fundamental components of a complete computer vision system are detection and classification.
The Lane detection algorithm, which is used in autonomous driving and smart vehicle systems, is within the
computer vision detection area. In a sophisticated road environment, lane marking is the responsibility of
the lane detection system. The warning system for a car that leaves its lane also heavily relies on lane
detection. The two primary stages of the implemented lane detection algorithm are edge detection and line
detection. In order to assess the trade-offs for latency, power consumption, and utilisation, we will
compare the state-of-the-art implementation performance attained with both FPGA and GPU in this work.
Our analysis highlights the benefits and drawbacks of the two systems.
1. ImageJ is an open source image processing and analysis tool that can run on any computer with Java.
2. It allows users to perform operations on pixels like adjusting brightness and contrast, apply color look-up tables, and measure properties of images.
3. The document demonstrates how to use ImageJ to analyze a sample image by separating color channels, applying filters, and counting spots.
This presentation is about JPEG compression algorithm. It briefly describes all the underlying steps in JPEG compression like picture preparation, DCT, Quantization, Rendering and Encoding.
1) The document proposes a method for color image enhancement using Laplacian pyramid decomposition and histogram equalization. It separates an input image into red, green, and blue color channels.
2) Each color channel is decomposed into a Laplacian pyramid, and histogram equalization is applied to enhance the contrast in each band-pass image.
3) The enhanced band-pass images are then recombined using the Laplacian pyramid reconstruction equation to produce enhanced color channels, which are combined to generate the output enhanced color image. The method aims to improve both local and global contrast while maintaining natural image quality.
1) The document proposes a method for color image enhancement using Laplacian pyramid decomposition and histogram equalization. It separates an input image into red, green, and blue color channels.
2) Each color channel is decomposed into a Laplacian pyramid, and histogram equalization is applied to enhance the contrast in each level. The enhanced levels are then recombined to improve both local and global contrast.
3) The method aims to overcome issues with traditional histogram equalization like over-enhancement, by applying a smoothing technique before contrast adjustment in each level of the pyramid. The final enhanced image is reconstructed by combining the processed color channels.
11.0003www.iiste.org call for paper_d_discrete cosine transform for image com...Alexander Decker
This document summarizes a research paper on 3D discrete cosine transform (DCT) for image compression. It discusses how 3D-DCT video compression works by dividing video streams into groups of 8 frames treated as 3D images with 2 spatial and 1 temporal component. Each frame is divided into 8x8 blocks and each 8x8x8 cube is independently encoded using 3D-DCT, quantization, and entropy encoding. It achieves better compression ratios than 2D JPEG by exploiting correlations across multiple frames. The document provides details on the 3D-DCT compression and decompression process. It reports that testing on a set of 8 images achieved a compression ratio of around 27 with this technique.
A Biometric Approach to Encrypt a File with the Help of Session KeySougata Das
The main objective of this work is to provide a two layer authentication system through biometric (face) and conventional session based password authentication. The encryption key for this authentication will be generated with the combination of the biometric key and session based password.
This document presents a probabilistic approach to rate control for optimal color image compression and video transmission. It summarizes a rate-distortion model for color image compression that was previously introduced. Based on this model, the document proposes an improved color image compression algorithm that uses the discrete cosine transform and models subband coefficients with a Laplacian distribution. It shows how the rate-distortion model can be used for rate control of compression, allowing target rates or bitrates to be achieved for still images and video sequences. Simulation results demonstrate that the new algorithm outperforms other available compression systems such as JPEG in terms of peak signal-to-noise ratio and a perceptual quality metric.
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 describes an image preprocessing scheme for line detection using the Hough transform in a mobile robot vision system. The preprocessing includes resizing images to 128x96 pixels, converting to grayscale, performing edge detection using Sobel filters, and edge thinning. A newly developed edge thinning method is found to produce images better suited for the Hough transform than other thinning methods. The preprocessed images are then used as input for line detection and the robot's self-navigation system.
Hardware software co simulation of edge detection for image processing system...eSAT Publishing House
IJRET : International Journal of Research in Engineering and Technology is an international peer reviewed, online journal published by eSAT Publishing House for the enhancement of research in various disciplines of Engineering and Technology. The aim and scope of the journal is to provide an academic medium and an important reference for the advancement and dissemination of research results that support high-level learning, teaching and research in the fields of Engineering and Technology. We bring together Scientists, Academician, Field Engineers, Scholars and Students of related fields of Engineering and Technology
Information search using text and image queryeSAT Journals
Abstract An image retrieval and re-ranking system utilizing a visual re-ranking framework which is proposed in this paper the system retrieves a dataset from the World Wide Web based on textual query submitted by the user. These results are kept as data set for information retrieval. This dataset is then re-ranked using a visual query (multiple images selected by user from the dataset) which conveys user’s intention semantically. Visual descriptors (MPEG-7) which describe image with respect to low-level feature like color, texture, etc are used for calculating distances. These distances are a measure of similarity between query images and members of the dataset. Our proposed system has been assessed on different types of queries such as apples, Console, Paris, etc. It shows significant improvement on initial text-based search results.This system is well suitable for online shopping application. Index Terms: MPEG-7, Color Layout Descriptor (CLD), Edge Histogram Descriptor (EHD), image retrieval and re-ranking system
Efficient Image Compression Technique using JPEG2000 with Adaptive ThresholdCSCJournals
Image compression is a technique to reduce the size of image which is helpful for transforms. Due to the limited communication bandwidth we have to need optimum compressed image with good visual quality. Although the JPEG2000 compression technique is ideal for image processing as it uses DWT (Discrete Wavelet Transform).But in this paper we proposed fast and efficient image compression scheme using JPEG2000 technique with adaptive subband threshold. Actually we used subband adaptive threshold in decomposition section which gives us more compression ratio and good visual quality other than existing compression techniques. The subband adaptive threshold that concentrates on denoising each subband (except lowest coefficient subbands) by minimizing insignificant coefficients and adapt with modified coefficients which are significant and more responsible for image reconstruction. Finally we use embedded block coding with optimized truncation (EBCOT) entropy coder that gives three different passes which gives more compressed image. This proposed method is compared to other existing approach and give superior result that satisfy the human visual quality and also these resulting compressed images are evaluated by the performance parameter PSNR.
The document discusses low-rank matrix optimization problems and heuristics for solving rank minimization problems. It covers the following key points in 3 sentences:
The document outlines motivation for extracting low-dimensional structures from high-dimensional data using rank minimization. It then discusses several heuristics for approximating the non-convex rank minimization problem, including replacing the rank with the nuclear norm, using the log-det heuristic as a smooth surrogate, matrix factorization methods, and iteratively solving a sequence of rank-constrained convex problems. Applications mentioned include the Netflix Prize and video intrusion detection.
Implementation of a Localization System for Sensor Networks-berkleyFarhad Gholami
This dissertation discusses the implementation of a localization system for sensor networks. It addresses two main tasks: establishing relationships to reference points (e.g. distance measurements) and using those relationships and reference point positions to calculate sensor positions algorithmically.
The dissertation first presents various centralized and distributed localization algorithms from existing research. It then focuses on implementing a distributed, least-squares-based localization algorithm and designing an ultra-low power hardware architecture for it. Measurement errors due to fixed-point arithmetic are also analyzed.
The second part of the dissertation proposes, designs and prototypes an RF signal-based time-of-flight ranging system. The prototype achieves a measurement error within -0.5m to 2m at 100
Zero-padding a signal involves appending artificial zeros to increase the length of the signal. This increases the frequency resolution of the discrete Fourier transform (DFT) by changing the implicit periodicity assumption made about the signal. Specifically, zero-padding moves the DFT closer to approximating the true discrete-time Fourier transform (DTFT) by changing the assumption from periodicity to assuming the signal is zero outside the observed range. While zero-padding does not provide new information, it can help reveal features of a signal by modifying the implicit assumptions of the DFT.
This document presents a new method called the Real-valued Iterative Adaptive Approach (RIAA) for estimating the power spectral density of nonuniformly sampled data. It aims to improve upon the periodogram, which suffers from poor resolution and leakage. RIAA is an iteratively weighted least squares periodogram that uses an adaptive weighting matrix built from the most recent spectral estimate. It is shown to have significantly less leakage than the least squares periodogram through its use of an adaptive filter. The Bayesian Information Criterion is also discussed as a way to test the significance of peaks in the estimated spectrum.
The document discusses weighted nuclear norm minimization and its applications to image denoising. It provides background on key concepts from linear algebra and optimization theory needed to understand the denoising problem, such as convex optimization, affine transformations, singular value decomposition, and eigendecomposition. The objective of denoising is to extract the low-rank original image from a noisy high-dimensional image, modeled as the sum of the original image and white noise.
This document describes an RSSI (received signal strength indicator) based localization algorithm for wireless sensor networks. It discusses using RSSI values measured from reference nodes to estimate distances and perform trilateration to locate a target sensor node. The algorithm design includes RSSI to distance conversion using a path loss model, trilateration implementation using circle intersections, and simplifying computations for resource-limited sensor node processors through techniques like Taylor series approximations of exponential functions. Pseudocode is provided for RSSI to distance conversion and trilateration calculations.
1. The wavelet transform can be used to detect singularities or discontinuities in signals by identifying large wavelet coefficients around points of abrupt change across multiple scales.
2. The wavelet transform modulus maxima (WTMM) method uses successive derivative wavelets to identify singularities by removing lower order polynomial terms from the signal at each scale.
3. Local maxima of the continuous wavelet transform are related to singularities in the signal, and their behavior across scales can be used to characterize the point-wise regularity of the signal, detect noise, and reconstruct the signal from its singularities.
1. Project Report
Edge Detection and median filtering for colour JPEG images
By: Farhad Gholami
EE8220: Advanced Digital Filters
April 2013
1
2. Table of Contents
Introduction :...........................................................................................................................................................................3
Gradient : ................................................................................................................................................................................3
Image gradient : ......................................................................................................................................................................3
Sobel Algorithm : ....................................................................................................................................................................4
JPEG Overview ........................................................................................................................................................................5
JPEG Images processing software : ........................................................................................................................................6
Median Filter ...........................................................................................................................................................................7
2D median filter: .....................................................................................................................................................................7
Sorting algorthm: ....................................................................................................................................................................7
Setting up Compile and Linker : ..............................................................................................................................................8
Appendix A: Install open source JPEG library for VisualStudio...............................................................................................10
JPEG Library construction steps:............................................................................................................................................10
Appendix B: Source code.......................................................................................................................................................11
2
3. Introduction :
JPEG is a widely used standard to compress digital images and bbject detection using edges is a common task in
machine vision and there are algorithms to highlight the edges of the objects using a mathematical operator to achieve
this task .
In this project we will introduce a “Sobel edge detection” algorithm working on JPEG colour images and also introduce a
median filter implementation to reject impulsive noise. We use a PC running Windows7 for our development .Source code
is in C and IDE is MSVisualStudio10.
Digital Image:
A (digital) color image is includes color information for each pixel.For visually acceptable results, it is necessary to provide
three values(color channels) for each pixel. The RGB color space is commonly used in computer displays.A color image
has three values per pixel and they measure the intensity and chrominance of light. The actual information stored in the
digital image data is the brightness information in each spectral band. Eight bits per sample (3x8=24 bits per pixel) is
adequate for most applications.
Gradient :
The gradient of a scalar field points in the direction of the greatest rate of increase of the scalar field, and whose
magnitude is that rate of increase. In simple terms, the variation in space of any quantity can be represented (e.g.
graphically) by a slope. The gradient represents the steepness and direction of that slope.
In below two images, the scalar field is in black and white, black representing higher values, and its corresponding gradient
is represented by blue arrows.
The gradient at a point is a vector pointing in the direction of the steepest slope at that point. The steepness of the slope at
any point is given by the magnitude of the gradient vector
Image gradient :
Mathematically, the gradient of a two-variable function (here the image intensity function) at each image point is a 2D vector
with the components given by the derivatives in the horizontal and vertical directions.
At each image point, the gradient vector points in the direction of largest possible intensity increase, and the length of the
gradient vector corresponds to the rate of change in that direction.
Since the intensity function of a digital image is only known at discrete points, derivatives of this function cannot be defined
unless we assume that there is an underlying continious intensity function which has been sampled at the image points.
With some additional assumptions, the derivative of the continuous intensity function can be computed as a function on the
3
4. sampled intensity function, i.e., the digital image. It turns out that the derivatives at any particular point are functions of the
intensity values at virtually all image points. However, approximations of these derivative functions can be defined at lesser
or larger degrees of accuracy.
Sobel Algorithm :
The Sobel operator represents a rather inaccurate approximation of the image gradient, but is still of sufficient quality to be
of practical use in many applications. More precisely, it uses intensity values only in a 3×3 region around each image point
to approximate the corresponding image gradient, and it uses only integer values for the coefficients which weight the
image intensities to produce the gradient approximation.
Mathematically, the sobel uses two 3×3 kernels which are convolved with the original image to calculate approximations
of the derivatives - one for horizontal changes, and one for vertical as below shows:
The operator uses two 3×3 kernels which are convolved with the original image to calculate approximations of the
derivatives - one for horizontal changes, and one for vertical. If we define A as the source image, and Gx and Gy are two
images which at each point contain the horizontal and vertical derivative approximations, the computations are as follows:
4
5. Below is algorithm implemented in C:
JPEG Overview
JPEG (Joint Photographic Experts Group) [ISO] is a compression scheme to reduce the size of continuous-tone digital
images. It is particularly useful to save space on storage devices, where compression ratio and image quality are more
important than compression speed or delay. Many of those applications use JPEG or a related image compression method.
JPEG lossy process is based on the Discrete Cosine Transform (DCT). It packs the transformed data in sequential order,
using zero suppression in combination with Huffman symbol coding. We will focus on the IDCT related steps to show where
our improvements apply.
5
6. JPEG Images processing software :
Pixels are points in a graphical image and colour channels being used to show relative intensity. For example Gray scale
has 1 channel and RGB have 3 channels for each pixel. Size of an image contains three dimensions: width, height,
channels(3 for RGB).
To use JPEG image read and write functions in our c code , we use open source libjpeg library which implements
decoding and encoding functions and utilities for handling JPEG images. This library is maintained by the Independent
JPEG Group (IJG). For example this is how we read an image file:
Appendix-A includes information for compile and setting up this library.
6
7. Median Filter
Neighbourhood averaging can suppress isolated out-of-range noise, but the side effect is that it also blurs sudden changes
(corresponding to high spatial frequencies) such as sharp edges.
The median filter is an effective method that can suppress isolated noise without blurring sharp edges. Specifically, the
median filter replaces a pixel by the median of all pixels in the neighbourhood:
2D median filter:
The window of a 2D median filter can be of any central symmetric shape. The pixel at the center will be replaced by the
median of all pixel values inside the window.
Sorting algorthm:
Sorting is necessary for finding the median of a set of values. Various sorting algorithm with complexity of O(n log2
n)However in this case, assuming the number of pixels is quite limited, a simple sorting method with complexity )(n**2) can
be used. The code segment below sorts an array of k elements:
Below diagram illustrates how different tools take various input files and generate appropriate output files to ultimately be
used in building an executable image. mpi.lib and jpeg.lib libraries will be added to final image using linker.
7
8. Setting up Compile and Linker :
Below pictures shows how to set up IDE and other details:
8
10. Appendix A: Install open source JPEG library for VisualStudio
First we need to download jpeg free library from here : http://www.ijg.org/
Library makefile builds the IJG library as a static Win32 library, and optional application make files builds the sample
applications as Win32 console applications. (building the applications lets us run the self-test.)
Provided make files we used work as project files in Visual Studio 2010 or later.
JPEG Library construction steps:
1. Open the command prompt, change to the main directory and execute the
command line NMAKE /f makefile.vc setup-v10
This will move jconfig.vc to jconfig.h and makefiles to project files. (Note that the renaming is critical!)
2. Open the solution file jpeg.sln, build the library project. (If you are using Visual Studio more recent than 2010 (v10),
you'll probably get a message saying that the project files are being updated.)
3. Open the solution file apps.sln, build the application projects.
4. To perform the self-test, execute the command line : NMAKE /f makefile.vc test-build
5. Move the application .exe files from `app`Release to an appropriate location on your path.
Below pictures shows how to configure and install the IJG software for MS-VC++ 2010 Developer Studio :
10
11. Note: You might need to installing Windows SDK if your host dose not have win32.mak file.
Appendix B: Source code
// jpeg_io.c
//
// Revision History
// ----------------
//
// F. Gholami 2013-04-12 - Original
11
23. //sobel operator
void sobel_filtering(image_s *im, image_s *new_im,
int sx, int ex, int sy,int ey)
{
int i,j,k;
int x,y,sum;
JSAMPLE **buf;
buf = im->buffer;
k = im->components;
for(i = sy; i<ey+1; i++)
for(j = sx*k;j < (ex+1)*k; j++)
{
x = buf[i+1][j-k]+2*buf[i+1][j]+buf[i+1][j+k]- (buf[i-1][j-k]+2*buf[i-1][j]+buf[i-1][j+k]);
y = buf[i-1][j+k]+2*buf[i][j+k]+buf[i+1][j+k]- (buf[i-1][j-k]+2*buf[i][j-k]+buf[i+1][j-k]);
sum = abs(x/4) + abs(y/4);
if(sum > 255) //255 = 0xff
sum = 255;
new_im->buffer[i-sy][j-(sx*k)] = sum;
}
}
// jpeg_io.h
//
// Revision History
// ----------------
//
// F. Gholami 2013-04-12 - Original
//
//
// Description:
// ------------------
// JPEG related APIs header
//
#ifndef JPEG_IO_H
#define JPEG_IO_H
#include <stdio.h>
#include <setjmp.h>
#include "jpeglib.h"
#define TRUE 1
#define FALSE 0
typedef struct jpeg_compress_struct jpeg_com_struct;
typedef struct jpeg_decompress_struct jpeg_decom_struct;
struct image_s
{
JSAMPLE **buffer;
int height;
int width;
int components;
};
23
24. typedef struct image_s image_s;
//->
struct my_error_mgr
{
struct jpeg_error_mgr pub; // "public" elds
jmp_buf setjmp_buffer; // for return to caller
};
typedef struct my_error_mgr * my_error_ptr;
void image_write_JPEG_file (char *filename,image_s *iamge,int quality);
image_s *image_read_JPEG_file (char * filename);
image_s *image_new (int h, int w, int c);
void put_scanline_in_image_s (JSAMPROW buffer, image_s *image,
int row_stride,int current_row);
#endif
// mpi_decomp.h
//
// Revision History
// ----------------
//
// F. Gholami 2013-04-16 - Original
//
//
// Description:
// ------------------
// Header file for image filter
//
#ifndef MATRIX_DECOMP_H
#define MATRIX_DECOMP_H
#include <stdio.h>
#include <stdlib.h>
#include "mpi.h"
#include "mylib.h"
#define TRUE 1
#define FALSE 0
// matrix_2D_neighbors: This routine show the neighbors in a 2D decomposition of
// the domain. This assumes that MPI_Cart_create has already been called
void matrix_2D_neighbors(MPI_Comm comm, int *nbr_up,
int *nbr_down, int *nbr_left, int *nbr_right);
// matrix_2D_decomp : This routine computes the decomposition
void matrix_2D_decomp(MPI_Comm comm, int nodes_x, int nodes_y, int comp,
int *start_x, int *end_x, int *start_y, int *end_y, int *block);
#endif
// mylib.h
//
24
25. // Revision History
// ----------------
//
// F. Gholami 2013-04-16 - Original
//
//
// Description:
// ------------------
// Auxiliarry functions for parallel soble edge detection
//
#ifndef MYLIB_H
#define MYLIB_H
#include <stdlib.h>
#include <stdio.h>
void *safe_malloc(size_t size);
void *safe_calloc(size_t nelem, size_t elsize);
#endif
// sobel_filter.h
//
// Revision History
// ----------------
//
// F. Gholami 2013-04-18 - Original
//
//
// Description:
// ------------------
// Image filter header file for parallel soble edge detection
//
#ifndef FILTER_MASK_H
#define FILTER_MASK_H
#include "jpeg_io.h"
void sobel_filtering(image_s *im, image_s *new_im,
int sx, int ex, int sy, int ey);
#endif
//image median_filter(image in, int size)
#ifndef _MEDIANFILTER_H_
#define _MEDIANFILTER_H_
// Signal/image element type
typedef double element;
// 1D MEDIAN FILTER, window size 5
// signal - input signal
// result - output signal, NULL for inplace processing
// N - length of the signal
//void medianfilter(element* signal, element* result, int N);
25
26. // 2D MEDIAN FILTER, window size 3x3
// image - input image
// result - output image, NULL for inplace processing
// N - width of the image
// M - height of the image
void medianfilter(element* image, element* result, int N, int M);
#endif
// median_filter.c
//
// Revision History
// ----------------
//
// F. Gholami 2013-03-18 - Original
//
//
// Description:
// ------------------
// Image spatial filter
//
//http://www.librow.com/articles/article-1/appendix-a-2
// 2D MEDIAN FILTER implementation
// image - input image
// result - output image
// N - width of the image
// M - height of the image
void _medianfilter(const element* image, element* result, int N, int M)
{
// Move window through all elements of the image
for (int m = 1; m < M - 1; ++m)
for (int n = 1; n < N - 1; ++n)
{
// Pick up window elements
int k = 0;
element window[9];
for (int j = m - 1; j < m + 2; ++j)
for (int i = n - 1; i < n + 2; ++i)
window[k++] = image[j * N + i];
// Order elements (only half of them)
for (int j = 0; j < 5; ++j)
{
// Find position of minimum element
int min = j;
for (int l = j + 1; l < 9; ++l)
if (window[l] < window[min])
min = l;
// Put found minimum element in its place
const element temp = window[j];
window[j] = window[min];
window[min] = temp;
}
// Get result - the middle element
result[(m - 1) * (N - 2) + n - 1] = window[4];
}
}
26
27. // 2D MEDIAN FILTER wrapper
// image - input image
// result - output image
// N - width of the image
// M - height of the image
void medianfilter(element* image, element* result, int N, int M)
{
// Check arguments
if (!image || N < 1 || M < 1)
return;
// Allocate memory for signal extension
element* extension = new element[(N + 2) * (M + 2)];
// Check memory allocation
if (!extension)
return;
// Create image extension
for (int i = 0; i < M; ++i)
{
memcpy(extension + (N + 2) * (i + 1) + 1, image + N * i, N * sizeof(element));
extension[(N + 2) * (i + 1)] = image[N * i];
extension[(N + 2) * (i + 2) - 1] = image[N * (i + 1) - 1];
}
// Fill first line of image extension
memcpy(extension, extension + N + 2, (N + 2) * sizeof(element));
// Fill last line of image extension
memcpy(extension + (N + 2) * (M + 1), extension + (N + 2) * M, (N + 2) * sizeof(element));
// Call median filter implementation
_medianfilter(extension, result ? result : image, N + 2, M + 2);
// Free memory
delete[] extension;
}
27