1. Results Review of Detecting ofHuman Errors Algorithm for image files
Author: Minh Anh Nguyen
Email: minhanhnguyen@q.com
Purpose
The purpose of this analysis is to determine if the method of comparing two image files can be
used for detecting of human errors for channel-not-loaded-correctly issue. There are many
algorithms which can be used to compare two image files. These algorithms are: edge detection,
Short Time Fourier Transform (STFT), wavelet, and histogram. In this project, histogram
algorithm is used to compare two image files.
Why use Histogram
Histogram is a way of visualizing the largest intensities of an image. It is used to depict problems
which originate during image acquisition such as exposure, contrast, dynamic range. The
contrast of a grayscale image shows how easily objects in the image can be distinguished. The
dynamic range is the number of distinct pixel value in an image. It is used to show image
statistics in an easily interpreted visual format. It is also a graph showing the number of pixels in
an image at each different intensity value found in that image. The histogram of a digital image
is a distribution of its discrete intensity levels in the range [0, L-1]. The number of possible
intensity values depends on the numerical type encoding the image.
For example, a grayscale image encoded with n=8 bits, it will has an array of size L=28=256.
The number of possible intensity values go from 0 representing black to L-1=255 representing
white. Since there are 256 different possible intensities, the histogram will graphically display
256 numbers showing the distribution of pixels amongst those greyscale values. When
represented as a plot, the x-axis is the intensity value from 0 to 255, and the y-axis is the number
of pixels with that intensity value. The y-axis varies depending on the number of the pixels in
the image and how their intensities are distributed as shown in figure 2. An image has only one
histogram, but many images may have the same histogram.
Histograms have many uses. One of the more common is to determine if the overall intensity in
the image is high enough for this inspection task. Histogram is used to determine whether an
image contains distinct regions of certain grayscale values. If the image has poor dynamic range,
then the histogram confirms what one can see by visual inspection. It provides a general
description of the appearance of an image and helps identify various components such as the
background, objects, and noise.
How Histogram Works
The operation is very simple. The image is scanned in a single pass and a running count of the
number of pixels found at each intensity value is kept. This is then used to construct a suitable
histogram. The histogram of an 8-bit image, for example can be thought of as a table with 256
entries, or ‘bins’, indexed from 0 to 255. In bin 0 we record the number of times a gray level of 0
occurs; in bin 1 we record the number of times a grey level of 1 occurs, and so on, up to bin 255.
2. Techniques for comparing two image files
Step1: read images
Read two grayscale images into the workspace.
Step 2: Resize images
To make the image comparison easier, resize the images to have the same width.
Step 3: Find matching features between images
Step 4: Display error message on the computer monitor screen, if images are not matched.
Flow chart for comparing two image files
Figure1. Flow chart for comparing two image files
Image test in simulation mode
The following steps are a procedure to test the image in simulation mode.
1. Make sure image files are loaded into the workspace without any issues.
2. Make sure a correct file is loaded
3. Plot histogram of the image
4. Verify that the histogram value is correct.
5. Positive test: load two image files which have 2 different images and verify that the test
results show the difference.
3. 6. Negative test: load two image files which have 2 similar images and verify that the test
results show the same thing or match.
Software
Matlab R2015b
Labview 2014
Summary of results
The following figure illustrates the difference between the displays of the histogram of the same
image in a linear and the results of the techniques and flow chart for comparing two image files
above.
Figure2. Matlab results for comparing two images which are identical.
4. Figure3. Matlab results for comparing two images which are not identical. The object being
viewed is light in color and it is placed on a dark background, and so the histogram exhibits a
good bi-modal distribution. One peak represents the object pixels, other represents the
background.
5. Figure4. Matlab results for comparing two images which are not identical. The object being
viewed is dark in color and it is placed on a light background, and so the histogram exhibits a
good bi-modal distribution. One peak represents the object pixels, one represents the
background. The peak represents of back ground is at the highest intensity value, X = 241.
6. Figure5. Matlab results for comparing two hex pin images which are identical. The resulting of
histograms above showed a large spike at 250 intensity value which results in the rest of the
histogram being scaled up to 256.
9. Figure8. Labview results for comparing two image files which are not identical
These results showed that the method of comparing two image files can be used for detecting of
human errors for channel-not-loaded-correctly issue. A histogram is the frequency distribution
of the gray levels with the number of pure black values displayed on the left and number of pure
white values on the right.
10. Matlab Code for comparing two image files.
%% Matlab Code:
% Author: Minh Anh Nguyen (minhanhnguyen@q.com)
%This function will perform the followign tasks:
%1. read in two ".png" file, display both images on the computer screen.
%2. histogram of the images
% 3. compare both image files.
% 4. display a message on the computer screen if both image are not the
% same.
function [imagefunction] = imagefunction( file1, file2 );
% clear all; % Erase all existing variables.
close all; % Close all figures (except those of imtool.)
clc;% Clear the command window.
imtool close all; % Close all imtool figures.
workspace; % Make sure the workspace panel is showing.
fontSize = 20;
%%%%%%%%%%%%%
% %% team: edit your file here
% %%% set the path
% folder = 'I:F2015_486Aimage';
% %reading images as array to variable 'a' & 'b'.
image1 = imread( file1 );
image2= imread( file2 );
%
% %reading images as array to variable 'a' & 'b'.
% image1 = imread('Loaded-Mid Channel.PNG');
% image2= imread('Gross Misloaded-Mid Channel.PNG');
%
% %% info
imfinfo( file1 )
imfinfo( file2)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% do not edit anything below here!!!!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a = image1;
b = image2;
%% size
a1= size(a);
b1= size (b);
figure;
[rows columns numberOfColorBands] = size(a);
subplot(2, 2, 1); imshow(a, []);
title('Reference image', 'Fontsize', fontSize);
set(gcf, 'Position', get(0,'Screensize')); % Maximize figure.
redPlane = a(:, :, 1);
11. greenPlane = a(:, :, 2);
bluePlane = a(:, :, 3);
[rows columns numberOfColorBands] = size(b);
subplot(2, 2, 3); imshow(b, []);
title('Image2', 'Fontsize', fontSize);
set(gcf, 'Position', get(0,'Screensize')); % Maximize figure.
redPlane1 = b(:, :, 1);
greenPlane1 = b(:, :, 2);
bluePlane1 = b(:, :, 3);
% Let's get its histograms.
[pixelCountR grayLevelsR] = imhist(redPlane);
subplot(2, 2, 2); %plot(pixelCountR, 'r');
stem(grayLevelsR,pixelCountR, 'r');
title('Histogram of Reference image', 'Fontsize', fontSize);
xlabel('Intensity values','Fontsize', fontSize);
ylabel('Number of pixels', 'Fontsize', fontSize);
xlim([0 grayLevelsR(end)]); % Scale x axis manually.
[pixelCountR1 grayLevelsR1] = imhist(redPlane1);
subplot(2, 2, 4);
%plot(pixelCountR1, 'r');
stem(grayLevelsR1,pixelCountR1);
title('Histogram of Image2', 'Fontsize', fontSize);
xlabel('Intensity values','Fontsize', fontSize);
ylabel('Number of pixels','Fontsize', fontSize);
xlim([0 grayLevelsR1(end)]); % Scale x axis manually.
%check image for different
different = a1- b1
if different==0
disp('The images are same')%output display
else
disp('the images are not same')
msgbox('Test error. Please check your setting', 'Error')
end;