Color Image Transmission via BPSK Modulation with Difference Mapping

BPSK Modulation in Image Transfer

Binary Phase Shift Keying (BPSK) encodes digital data by altering the carrier wave's phase. Binary 0 and 1 are represented by distinct phase shifts, typically 0 and 180 degrees.

Color Image Transmission Pipeline

  • Preprocessing: Decouple the input color image into its Red, Green, and Blue (RGB) components. Normalize these matrices and convert the pixel values into binary bitstreams.
  • Modulation: Apply BPSK modulation to the serialized bitstreams of each color channel, yielding three distinct phase-shifted carrier signals.
  • Channel Propagation: Transmit the modulated signals across an Additive White Gaussian Noise (AWGN) channel.
  • Demodulation: At the receiver, perform BPSK demodulation on the corrupted signals to retrieve the binary sequences for the RGB channels.
  • Reconstruction: Reassemble the decoded binary data into the respective RGB matrices and merge them to reconstruct the color image.

Difference Mapping

A difference map highlights the pixel-wise absolute discrepancies between the transmitted and original images. Brighter pixels in this map signify higher distortion, providing a clear visual metric for signal degradation.

Simulation Insights

Utilizing a 256x256 pixel color image over an AWGN channel, simulations reveal a direct correlation between Signal-to-Noise Ratio (SNR) and transmission fidelity. At 10 dB SNR, the reconstructed image closely matches the source, with the difference map showing minimal variance. Conversely, lower SNR levels introduce substantial visual artifacts, prominently displayed in the difference map.

Matlab Implementation

function recovered_bits = simulate_bpsk_link(bit_stream, f_carrier, f_sample, snr_db)
    CHUNK_SIZE = 100000;
    total_bits = length(bit_stream);
    recovered_bits = zeros(1, total_bits);
    num_full_chunks = floor(total_bits / CHUNK_SIZE);
    
    for idx = 0:num_full_chunks-1
        start_idx = idx * CHUNK_SIZE + 1;
        end_idx = start_idx + CHUNK_SIZE - 1;
        chunk_data = bit_stream(start_idx:end_idx);
        
        mod_signal = modulate_bpsk(chunk_data, f_carrier, f_sample);
        noisy_signal = add_awgn_noise(mod_signal, snr_db);
        demod_bits = demodulate_bpsk(noisy_signal, f_carrier, f_sample);
        
        recovered_bits(start_idx:end_idx) = demod_bits;
    end
    
    % Handle remaining bits
    remaining = mod(total_bits, CHUNK_SIZE);
    if remaining > 0
        start_idx = num_full_chunks * CHUNK_SIZE + 1;
        chunk_data = bit_stream(start_idx:end);
        
        mod_signal = modulate_bpsk(chunk_data, f_carrier, f_sample);
        noisy_signal = add_awgn_noise(mod_signal, snr_db);
        demod_bits = demodulate_bpsk(noisy_signal, f_carrier, f_sample);
        
        recovered_bits(start_idx:end) = demod_bits(1:remaining);
    end
end

Tags: BPSK Color Image Transmission AWGN Difference Map MATLAB

Posted on Fri, 06 Nov 2026 16:11:47 +0000 by Casalen