A program in Python that reads an image and whitens a rectangular block of pixels starting from (m, n) with size r × c.
Bit-Plane Steganography & Noise-Averaging Denoising
We work with an 8-bit grayscale image as the host.
Part 1 (Steganography): Hide the binary emblem of Noshirvani University inside the host by replacing a chosen bit-plane x∈{0,…,7}. Implement the embedding routine, compare results across bit-planes, and identify which bit-plane yields the best visual quality. Quantify quality using objective metrics (e.g., MSE/PSNR/SSIM between the original and stego images).
Part 2 (Denoising by Averaging): Generate zero-mean, unit-variance Gaussian noise images the same size as the host, and create K=20 independent noisy observations by adding these to the original. Reconstruct a cleaner image by averaging the first k noisy images, for k∈{1,5,10,15,20}, display the results, and plot the reconstruction error versus k (e.g., MSE relative to the original).
Perspective Correction An image is given, retrieve its front-view image.
Camera Calibration with 2D-3D Features
In this assignment,a basic camera calibration method should be implemented using known 2D–3D feature correspondences.
The task is to estimate the camera intrinsic matrix and evaluate the projection accuracy of 3D points into the image plane.
The exercise is based on a cube-shaped object with dimensions of 0.5 meters, captured in a 640×640 image. Keypoints of the object in both 2D image space and 3D scene space are provided.
The dataset contains:
Features2D.mat → 2D coordinates of keypoints in the image
Features3D.mat → 3D coordinates of keypoints in the scene
Contrast Enhancement and Illumination Normalization
contrast enhancement and illumination normalization should be done on a low-contrast input image f(x,y).
The workflow includes:
Histogram Equalization (HE): Enhance global contrast.
The code enhances a low-contrast image using Histogram Equalization, then applies Gaussian Blur to create a smoothed version.
Smoothing: Apply a kernel filter to obtain g(x,y). In the code a Gaussian kernel(based on sigma) is built and is applied via a custom convolution to smooth the image, producing the low-frequency illumination estimate g(x,y).
This smoothed image is then used in r(x,y)=f(x,y)/(g(x,y)+ε) to normalize illumination and highlight details.
In first part the Fourier transform magnitude and phase of two images is computed and they are visualized.
By swapping their Fourier phases while keeping the original magnitudes, it reconstructs new images to show the role of phase in image structure.
In second part a chest X-ray image is processed using a Gaussian high-pass filter to emphasize fine details.
This highlights edges and structures, producing a sharper and clearer visualization of the image.
In third part the image is corrupted with periodic noise, which is analyzed in the Fourier spectrum.
By designing notch filters(IdealNotchFilter, ButterworthNotchFilter, GaussianNotchFilter) to remove the noise frequencies and the image is reconstructed without the artifacts.
In fourth part a local adaptive noise reduction filter is implemented to remove Gaussian noise using known noise variance.
The method adjusts pixel values based on local mean and variance, producing a cleaner and more accurate restored image.
In this part, the gear image is analyzed to extract the teeth edges from the binary mask.
Additionally, the centers of the circular holes in th other image are detected and measured for shape analysis.
The bone image with porous structures are analyzed to design a machine vision–based system (without CNNs) for measuring the average pore size.