Fix up Image Processing and include figures
authorSam Moore <[email protected]>
Fri, 1 Nov 2013 03:49:01 +0000 (11:49 +0800)
committerSam Moore <[email protected]>
Fri, 1 Nov 2013 03:49:01 +0000 (11:49 +0800)
I think they are right :S

reports/final/chapters/Design.tex
reports/final/chapters/Results.tex
reports/final/figures/dila_blur5thresh30.png [new file with mode: 0644]
reports/final/figures/dila_blur7thresh36.png [new file with mode: 0644]
reports/final/figures/dila_blur9thresh35.png [new file with mode: 0644]
reports/final/figures/dila_blur9thresh35_2.png [new file with mode: 0644]
reports/final/figures/dilatometer_blurred [new file with mode: 0644]
reports/final/figures/dilatometer_edge.jpg [new file with mode: 0644]
reports/final/figures/dilatometer_test.jpg [new file with mode: 0644]
reports/final/references/refs.bib
reports/final/report.pdf

index 0294e0d..6bf4d60 100644 (file)
@@ -155,7 +155,7 @@ Code to set actuator values is located in the \gitref{server}{actuators} subdire
 
 \subsubsection{Relay Controls}
 
-The electrical team employed three relays (model: ) for control over digital devices. The relays are switched using the GPIO outputs of the BeagleBone Black.
+The electrical team employed three relays for control over digital devices. The relays are switched using the GPIO outputs of the BeagleBone Black.
 
 \begin{itemize}
        \item Can select - Chooses which can can be pressurised (0 for strain, 1 for explode)
@@ -168,7 +168,7 @@ The use of a ``can select'' and ``can enable'' means that it is not a software p
 
 \subsubsection{PWM Outputs}
 
-A single PWM output is used to control a pressure regulator (model: ). The electrical team constructed an RC filter circuit which effectively averages the PWM signal to produce an almost constant analogue output. The period of the PWM is $2\text{kHz}$. This actuator has been calibrated, which allows the user to input the pressure value in kPa rather than having to control the PWM duty cycle correctly.
+A single PWM output is used to control a pressure regulator. The electrical team constructed an RC filter circuit which effectively averages the PWM signal to produce an almost constant analogue output. The period of the PWM is $2\text{kHz}$. This actuator has been calibrated, which allows the user to input the pressure value in kPa rather than having to control the PWM duty cycle correctly.
 
 
 \begin{figure}[H]
@@ -188,18 +188,18 @@ Several authentication methods are supported by the server; the method to use ca
   \item {\bf Unix style authentication}
 
 
-  Unix like operating systems store a plain text file (/etc/shadow) of usernames and encrypted passwords. To check a password is valid, it is encrypted and then compared to the stored encrypted password. The actual password is never stored anywhere. The /etc/shadow file must be maintained by shell commands run directly from the BeagleBone. Alternatively a web based system to upload a similar file may be created.
+  Unix like operating systems store a plain text file (/etc/shadow) of usernames and encrypted passwords\cite{shadow}. To check a password is valid, it is encrypted and then compared to the stored encrypted password. The actual password is never stored anywhere. The /etc/shadow file must be maintained by shell commands run directly from the BeagleBone. Alternatively a web based system to upload a similar file may be created.
 
   \item {\bf Lightweight Directory Access Protocol (LDAP)}
 
-  LDAP is a widely used data base for storing user information. A central server is required to maintain the LDAP database; programs running on the same network can query the server for authentication purposes.
+  LDAP\cite{ldap, ldap_man} is a widely used data base for storing user information. A central server is required to maintain the LDAP database; programs running on the same network can query the server for authentication purposes.
 
   The UWA user management system (Pheme) employs an LDAP server for storing user information and passwords. The software has been designed so that it can interface with an LDAP server configured similarly to the server on UWA's network. Unfortunately we were unable to gain permission to query this server. However an alternative server could be setup to provide this authentication mechanism for our system.
 
 
   \item {\bf MySQL Database}
 
-        MySQL is a popular and free database system that is widely used in web applications. The ability to search for a user in a MySQL database and check their encrypted password was added late in the design as an alternative to LDAP. There are several existing online user management systems which interface with a MySQL database, and so it is feasible to employ one of these to maintain a list of users authorised to access the experiment. UserCake is recommended, as it is both minimalistic and open source, so can be modified to suit future requirements. We have already begun integration of the UserCake system into the project, however a great deal of work is still required.
+        MySQL\cite{mysql} is a popular and free database system that is widely used in web applications. The ability to search for a user in a MySQL database and check their encrypted password was added late in the design as an alternative to LDAP. There are several existing online user management systems which interface with a MySQL database, and so it is feasible to employ one of these to maintain a list of users authorised to access the experiment. UserCake\cite{UserCake} is recommended, as it is both minimalistic and open source, so can be modified to suit future requirements. We have already begun integration of the UserCake system into the project, however a great deal of work is still required.
 
 
   MySQL and other databases are vulnerable to many different security issues which we did not have sufficient time to fully explore. Care should be taken to ensure that all these issues are addressed before deploying the system.
@@ -394,8 +394,8 @@ Initially, a system known as ``Common Gateway Interface'', or CGI was explored.
        \caption{Block Diagram of a request to a custom web server} 
        \label{custom_webserver.png}
 \end{figure}
-\r
-Another system considered was to build a custom web server (Figure \ref{custom_webserver.png} that used threading, integrating both the control and web components. This option was primarily discarded because it was inflexible to supporting extended services like PHP and TLS encryption. See \href{https://github.com/szmoore/MCTX3420/issues/6}{Issue 6} on GitHub for more information.\r
+
+Another system considered was to build a custom web server (Figure \ref{custom_webserver.png} that used threading, integrating both the control and web components. This option was primarily discarded because it was inflexible to supporting extended services like PHP and TLS encryption. See \href{https://github.com/szmoore/MCTX3420/issues/6}{Issue 6} on GitHub for more information.
 
 \begin{figure}[H]
        \centering
@@ -416,7 +416,7 @@ In comparison, FastCGI (Figure \ref{fastcgi.png}) can be seen as the ``best of b
        \item Consider using X-Accel-Redirect along with UserCake (Section \ref{Authentication}) to make a finer-grained access control system to information such as the system logs
 \end{enumerate}
 
-\section{Server Configuration}
+\section{BeagleBone Configuration}\label{Configuration}
 
 \subsection{Operating system}
 The Beaglebone has been configured to use the Ubuntu operating system. The original operating system was Angstrom, which was unsuitable because it lacked a number of software packages required. Detailed instructions on how to install this operating system exist on the project wiki\cite{mctx3420_wiki}.
@@ -529,7 +529,7 @@ To increase the accuracy in finding the edge, I considered the Canny Edge theore
        \label{canny_edges_noise.png}
 \end{figure}
 
-After the Sensors Team relayed that they were now attaching something to the can in order to measure the change position, I decided to simply stick with the Canny Edge algorithm and implement something similar to what I had in my previous testing.  The figures in appendix A shows the progression of the image through the algorithm.  Figure 2A shows the original image, whereas 2B shows the blurred (with a BLUR value of 5) gray scale image.  Whereas figure 2C shows the image after going through the Canny Edge algorithm with a low threshold of 35.   Figures 3A and 3B both have the same input image, however different input values.  It can be seen how tweaking the values can remove outliers, as figure 3B is skewed to the right due to the outliers.  From figure 4 it can be seen that despite there being no points in the edge in the top half of the image, the edge has still been accurately determined.  
+After the Sensors Team relayed that they were now attaching something to the can in order to measure the change position, I decided to simply stick with the Canny Edge algorithm and implement something similar to what I had in my previous testing.  The images in Figure \ref{canny_demo} shows the progression of the image through the algorithm.  Figure \ref{canny_demo} A shows the original image, whereas \ref{canny_demo}B shows the blurred (with a BLUR value of 5) gray scale image.  Whereas figure \ref{canny_demo}C shows the image after going through the Canny Edge algorithm with a low threshold of 35.   Figures \ref{canny_demo}D and \ref{canny_demo}E both have the same input image, however different input values.  It can be seen how tweaking the values can remove outliers, as figure \ref{canny_demo}E is skewed to the right due to the outliers.  From figure \ref{canny_demo}F it can be seen that despite there being no points in the edge in the top half of the image, the edge has still been accurately determined.  
 
 The testing done shows that given a rough edge with few outliers an edge can be determined, however there is an obvious degree of inaccuracy the greater the variance of the edge. The best solution to this however does not lie in software.  If an edge was used that was straight even at that magnification with a good contrast then the results would be much more accurate (i.e. the accuracy of the dilatometer is currently more dependent on the object used than the software). 
 
@@ -547,8 +547,6 @@ Earlier in the semester we were informed by the Sensors Team that instead of a d
        \item The algorithm can be improved to try and neglect outliers in the edge image; however this is not as necessary if the original object used gives a sufficiently smooth and straight edge.
 \end{itemize}
 
-% END Callum's section
-
 \subsection{Results}
 
 Figure \ref{image_in_api.png} shows an image obtained from one of two dilatometers used in the system setup with collaboration between all teams. The image is of a white Lego tile attached to the can. This image was successfully streamed using the server software, and results of the dilatometer readings were monitored using the same software. Unfortunately we were unable to maintain a constant value for a stationary can, indicating that the algorithm needs further development. Due to a leak in the can seal we were unable to pressurize the can sufficiently to see a noticeable change in the edge position.
@@ -560,6 +558,25 @@ Figure \ref{image_in_api.png} shows an image obtained from one of two dilatomete
        \label{image_in_api.png}
 \end{figure}
 
+\begin{figure}[H]
+       \centering
+
+       \begin{tabular}{cc}
+               \includegraphics[width=0.4\textwidth]{figures/dilatometer_test.jpg} A &
+               \includegraphics[width=0.4\textwidth]{figures/dilatometer_test.jpg} B  \\
+               \includegraphics[width=0.4\textwidth]{figures/dila_blur7thresh36.png} C &
+               \includegraphics[width=0.4\textwidth]{figures/dila_blur5thresh30.png} D \\
+               \includegraphics[width=0.4\textwidth]{figures/dila_blur9thresh35.png} E &
+               \includegraphics[width=0.4\textwidth]{figures/dila_blur9thresh35_2.png} F
+       \end{tabular}
+       \caption{Canny Edge Algorithm in Action}
+       \label{canny_demo}
+\end{figure}
+
+% END Callum's section
+
+
+
 
 \section{Human Computer Interaction and the Graphical User Interface}
 
index cc314a2..39b727b 100644 (file)
@@ -5,14 +5,15 @@ In summary, we have succeeded in the following goals:
 
 \begin{enumerate}
        \item Design and implementation of a multithreaded process for providing continuous control over real hardware in response to intermittent user actions (Section \ref{Server Program}, \ref{Hardware})
-       \item Design and implementation of a configuration allowing this process to interface with the \emph{nginx} HTTP server (Sections \ref{Communications}, \ref{Configuration}
+       \item Design and implementation of a configuration allowing this process to interface with the \emph{nginx} HTTP server (Sections \ref{Communications}, \ref{Configuration})
+       \item Use of image processing both for streaming images through the API and for use as a dilatometer (Section \ref{Image Processing})
        \item Design and implementation of a API using the HTTP protocol to allow a client process to supply user commands to the system (Section \ref{Communications})
        \item Design and implementation of the client process using a web browser based GUI that requires no additional software to be installed on the client PC (Section \ref{Communications}, \ref{GUI})
        \item Design and implementation of several alternative authentication mechanisms for the system which can be integrated with different user management solutions (Section \ref{Authentication})
        \item Design and implementation of image streaming and image processing for use with a dilatometer (Section \ref{Image Processing})
        \item Partial design and implementation of a system for managing the datafiles of different users (Section \ref{API})
        \item Partial design and implementation of a user management system in PHP based upon UserCake (Sections \ref{Authentication}, \ref{Cookies})
-       \item Integration and partial testing of the software with the overall MCTX3420 2013 Exploding Cans project (All sections)
+       \item Integration and partial testing of the software with the overall MCTX3420 2013 Exploding Cans project involving extensive collaboration with a class of over 30 students (All sections)
 \end{enumerate}
 
 We make the following general recommendations for further development of the system software (with more specific recommendations discussed in the relevant sections):
diff --git a/reports/final/figures/dila_blur5thresh30.png b/reports/final/figures/dila_blur5thresh30.png
new file mode 100644 (file)
index 0000000..5145596
Binary files /dev/null and b/reports/final/figures/dila_blur5thresh30.png differ
diff --git a/reports/final/figures/dila_blur7thresh36.png b/reports/final/figures/dila_blur7thresh36.png
new file mode 100644 (file)
index 0000000..9164c26
Binary files /dev/null and b/reports/final/figures/dila_blur7thresh36.png differ
diff --git a/reports/final/figures/dila_blur9thresh35.png b/reports/final/figures/dila_blur9thresh35.png
new file mode 100644 (file)
index 0000000..6e2f915
Binary files /dev/null and b/reports/final/figures/dila_blur9thresh35.png differ
diff --git a/reports/final/figures/dila_blur9thresh35_2.png b/reports/final/figures/dila_blur9thresh35_2.png
new file mode 100644 (file)
index 0000000..3958a4e
Binary files /dev/null and b/reports/final/figures/dila_blur9thresh35_2.png differ
diff --git a/reports/final/figures/dilatometer_blurred b/reports/final/figures/dilatometer_blurred
new file mode 100644 (file)
index 0000000..54d73fb
Binary files /dev/null and b/reports/final/figures/dilatometer_blurred differ
diff --git a/reports/final/figures/dilatometer_edge.jpg b/reports/final/figures/dilatometer_edge.jpg
new file mode 100644 (file)
index 0000000..783e97f
Binary files /dev/null and b/reports/final/figures/dilatometer_edge.jpg differ
diff --git a/reports/final/figures/dilatometer_test.jpg b/reports/final/figures/dilatometer_test.jpg
new file mode 100644 (file)
index 0000000..e9dcc4f
Binary files /dev/null and b/reports/final/figures/dilatometer_test.jpg differ
index e17d740..15b1da8 100644 (file)
        howpublished = "\url{http://beaglebone.cameon.net/home/set-cpu-speed}"
 }
 
+@misc{ldap,
+       title = "Lightweight Directory Access Protocol",
+       author = "Wikipedia",
+       howpublished = "\url{http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol}"
+}
+
+@misc{ldap_man,
+       title = "LDAP Man Pages",
+       howpublished = "\url{http://linux.die.net/man/3/ldap}",
+       note = "(API for \verb/libldab2-dev/)"
+}
+
+@misc{shadow,
+       title = "Shadow Man Pages",
+       howpublished = "\url{http://linux.die.net/man/3/shadow}",
+}
+
+@misc{mysql,
+       title = "MySQL: The world's most popular open source database",
+       author = "MySQL.com",
+       howpublished = "\url{http://www.mysql.com/}"
+}
        
index 7ab4f02..e282b20 100644 (file)
Binary files a/reports/final/report.pdf and b/reports/final/report.pdf differ

UCC git Repository :: git.ucc.asn.au