Augmented Reality application to display paintings on a surface.
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
The idea of this project is to give a user the ability to create a virtual museum in whatever physical space they have (home, office, etc.). The goal is to create framed paintings/photos to be "hung" on a wall as one would normally do.
Presentation video and demo can be found here!
IEEE Conference Write up can be found here
To get a local copy up and running follow these simple example steps. This application was built and tested on a Mac OS using g++ and Make to compile the code.
- Make
- OpenCV
- Clone the repo
git clone https://github.com/Kevin-Heleodoro/Augmented-Museum.git
- Run Make from the root directory
make
- To compile the project using the
makefile
simply execute themake
command with no parameters at the root of the project. - To run the program execute
./bin/main.exe
Available parameters:
-h --help
This parameter is optional. The default value is ''.
-p --path
Set path for directory containing images. Defaults to bin/paintings directory which contains a handful of assorted artworks.
This parameter is optional. The default value is 'bin/paintings'.
-c --calibration
Path to camera calibration file
This parameter is optional. The default value is 'bin/calibration.xml'.
-a --aruco
If true, creates an ArUco marker and saves it
This parameter is optional. The default value is '0'.
-
ArUco Marker detection
-
Placing image over ArUco Marker
-
Test image can be placed over ArUco marker. However the image sizing needs to be adjusted. The left border also sticks to the edge of the frame.
-
I was incorrectly calculating new marker corners instead of using the known marker corners that were gathered during detection. Overlay image now covers ArUco marker and rotates/translates along with it.
-
-
I want to paste the overlay image using the first ArUco marker corner while maintaining the original size of the image. The overlay should still rotate and translate with the ArUco marker, it will just be bigger.
-
First attempt was able to match the first corners but the translation/rotation does not happen as expected. With this attempt I was using the difference between the starting points and the overlay's rows and columns. This did not account for the 3rd dimension translations.
-
Was able to get the image to overlay in a large format relative to the aruco marker and maintaining its original aspect ratio. However, it was not completely stable at certain angles.
-
Using a 560x720 frame I was able to overlay the image onto a marker. (Marker located on bookshelf)
-
-
Application stops rendering overlay if the ArUco marker moves too quickly within the frame.
- Using
SOLVEPNP_ITERATIVE
which is faster at the expense of accuracy. Provides negligible differences to the eye. - Storing the last known position of the overlay if detector disappears briefly.
- This caused a lot of movement in the image and left a transparent ghost of the overlay frozen
- Using
-
Allow user to cycle through images.
- User can select a directory containing images that will be loaded into the program. Using the
a
andd
keys will allow the user to cycle through them.
- User can select a directory containing images that will be loaded into the program. Using the
-
User can display multiple images at a given time on different ArUco markers.
-
Clicking on an image will display some metadata in a pop up.
-
Users can dynamically resize the image in real time.
-
Users can assign an image to a particular marker.
See the open issues for a full list of proposed features (and known issues). -->
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License.
Your Name - @Golden_Sun_Kev - [email protected]
Project Link: https://github.com/Kevin-Heleodoro/Augmented-Museum
-
Salin Boonbrahm et al., "The Use of Marker-Based Augmented Reality in Space Measurement," in Procedia Manufacturing, vol. 42, pp. 337-343, 2020, doi: 10.1016/j.promfg.2020.02.081.
-
Rusnida Romli et al., "Mobile Augmented Reality (AR) Marker-based for Indoor Library Navigation," in IOP Conference Series: Materials Science and Engineering, vol. 767, 012062, 2020.
-
Tommaso Tocci et al., "ArUco marker-based displacement measurement technique: uncertainty analysis," in Engineering Research Express, vol. 3, 035032, 2021.
-
OpenCV Contributors, "Camera Calibration and 3D Reconstruction," 2024, OpenCV documentation.
-
OpenCV Contributors, "ArucoDetector Class Reference," 2024, OpenCV documentation.
-
Ikarus777, "Best Artworks of All Time," 2024, Kaggle dataset.
-
Rahul Kedia, "Augmented Reality Television with ArUco Markers: OpenCV, Python, C++," 2021, Medium article.