\[ \begin{align}\begin{aligned}\newcommand\blank{~\underline{\hspace{1.2cm}}~}\\% Bold symbols (vectors) \newcommand\bs[1]{\mathbf{#1}}\\% Poor man's siunitx \newcommand\unit[1]{\mathrm{#1}} \newcommand\num[1]{#1} \newcommand\qty[2]{#1~\unit{#2}}\\\newcommand\per{/} \newcommand\squared{{}^2} \newcommand\cubed{{}^3} % % Scale \newcommand\milli{\unit{m}} \newcommand\centi{\unit{c}} \newcommand\kilo{\unit{k}} \newcommand\mega{\unit{M}} % % Percent \newcommand\percent{\unit{\%}} % % Angle \newcommand\radian{\unit{rad}} \newcommand\degree{\unit{{}^\circ}} % % Time \newcommand\second{\unit{s}} \newcommand\s{\second} \newcommand\minute{\unit{min}} \newcommand\hour{\unit{h}} % % Distance \newcommand\meter{\unit{m}} \newcommand\m{\meter} \newcommand\inch{\unit{in}} \newcommand\foot{\unit{ft}} % % Force \newcommand\newton{\unit{N}} \newcommand\kip{\unit{kip}} % kilopound in "freedom" units - edit made by Sri % % Mass \newcommand\gram{\unit{g}} \newcommand\g{\gram} \newcommand\kilogram{\unit{kg}} \newcommand\kg{\kilogram} \newcommand\grain{\unit{grain}} \newcommand\ounce{\unit{oz}} % % Temperature \newcommand\kelvin{\unit{K}} \newcommand\K{\kelvin} \newcommand\celsius{\unit{{}^\circ C}} \newcommand\C{\celsius} \newcommand\fahrenheit{\unit{{}^\circ F}} \newcommand\F{\fahrenheit} % % Area \newcommand\sqft{\unit{sq\,\foot}} % square foot % % Volume \newcommand\liter{\unit{L}} \newcommand\gallon{\unit{gal}} % % Frequency \newcommand\hertz{\unit{Hz}} \newcommand\rpm{\unit{rpm}} % % Voltage \newcommand\volt{\unit{V}} \newcommand\V{\volt} \newcommand\millivolt{\milli\volt} \newcommand\mV{\milli\volt} \newcommand\kilovolt{\kilo\volt} \newcommand\kV{\kilo\volt} % % Current \newcommand\ampere{\unit{A}} \newcommand\A{\ampere} \newcommand\milliampereA{\milli\ampere} \newcommand\mA{\milli\ampere} \newcommand\kiloampereA{\kilo\ampere} \newcommand\kA{\kilo\ampere} % % Resistance \newcommand\ohm{\Omega} \newcommand\milliohm{\milli\ohm} \newcommand\kiloohm{\kilo\ohm} % correct SI spelling \newcommand\kilohm{\kilo\ohm} % "American" spelling used in siunitx \newcommand\megaohm{\mega\ohm} % correct SI spelling \newcommand\megohm{\mega\ohm} % "American" spelling used in siunitx % % Inductance \newcommand\henry{\unit{H}} \newcommand\H{\henry} \newcommand\millihenry{\milli\henry} \newcommand\mH{\milli\henry} % % Power \newcommand\watt{\unit{W}} \newcommand\W{\watt} \newcommand\milliwatt{\milli\watt} \newcommand\mW{\milli\watt} \newcommand\kilowatt{\kilo\watt} \newcommand\kW{\kilo\watt} % % Energy \newcommand\joule{\unit{J}} \newcommand\J{\joule} % % Composite units % % Torque \newcommand\ozin{\unit{\ounce}\,\unit{in}} \newcommand\newtonmeter{\unit{\newton\,\meter}} % % Pressure \newcommand\psf{\unit{psf}} % pounds per square foot \newcommand\pcf{\unit{pcf}} % pounds per cubic foot \newcommand\pascal{\unit{Pa}} \newcommand\Pa{\pascal} \newcommand\ksi{\unit{ksi}} % kilopound per square inch \newcommand\bar{\unit{bar}} \end{aligned}\end{align} \]

Oct 24, 2024 | 315 words | 3 min read

10.2.1. Task 1#

Learning Objectives#

  • Compare images on a pixel-by-pixel basis.

Task Instructions#

Save the flowcharts for each of your tasks in tp2_team_teamnumber.pdf You will also need to include these flowcharts in your final report.

Write a Python function that compares two images at the pixel level to determine if a message is encoded in one of them. The function should accept three image filenames as inputs: the names of two input images which will be compared, and the name of an output image which will visually indicate any differences. If the images are not the same size or the same mode, the function should print an error message and return False. Otherwise, the function should create an output image that is the same shape as the input images. The byte values in the output image should be set to 0 anywhere the input images are the same, and to 255 anywhere they are different. This output image should then be saved to the specified file and displayed for the user. Finally, the function should return True if the images are identical and False if they differ.

In your main function, prompt the user to input names for each of the files. Then call the function you wrote to compare the two images and create the output image. Use the files provided in the Table 10.31 to test your code.

Save your program as tp2_team_1_teamnumber.py.

Table 10.31 Image Files#

Image File Name

Description

ref_gry.png

Original grayscale image

ref_gry_e.png

grayscale image with message encoded

ref_col.png

Original color image

ref_col_e.png

Color mage with message encoded

Sample Output#

Use the values in Table 10.32 below to test your program.

Table 10.32 Test Cases#

Case

Image 1

Image 2

Output Image

1

ref_gry.png

ref_gry.png

diff.png

2

ref_gry.png

ref_gry_e.png

diff.png

3

ref_col.png

ref_col_e.png

diff.png

4

ref_col.png

ref_gry.png

diff.png

Ensure your program’s output matches the provided samples exactly. This includes all characters, white space, and punctuation. In the samples, user input is highlighted like this for clarity, but your program should not highlight user input in this way.

Case 1 Sample Output

$ python3 tp2_team_1_teamnumber.py Enter the path of your first image: ref_gry.png Enter the path of your second image: ref_gry.png Enter the path for the output image: diff.png The images are the same.

Case_1_diff.png

Fig. 10.1 Case_1_diff.png#

Case 2 Sample Output

$ python3 tp2_team_1_teamnumber.py Enter the path of your first image: ref_gry.png Enter the path of your second image: ref_gry_e.png Enter the path for the output image: diff.png The images are different.

Case_2_diff.png

Fig. 10.2 Case_2_diff.png#

Case 3 Sample Output

$ python3 tp2_team_1_teamnumber.py Enter the path of your first image: ref_col.png Enter the path of your second image: ref_col_e.png Enter the path for the output image: diff.png The images are different.

Case_3_diff.png

Fig. 10.3 Case_3_diff.png#

Case 4 Sample Output

$ python3 tp2_team_1_teamnumber.py Enter the path of your first image: ref_col.png Enter the path of your second image: ref_gry.png Enter the path for the output image: diff.png Cannot compare images in different modes (RGB and L). The images are different.