我是靠谱客的博主 大力毛巾,最近开发中收集的这篇文章主要介绍二元固定信道(BSC)信道的MATLAB实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

二元固定信道(BSC)信道参数p(转移概率)如图所示:

其中错误转移概率为p,正确转移概率为1-pp(0|0)=1-pp(1|0)=pp(0|1)=pp(1|1)=1-p

现通过MATLAB编程实现该信道,由于该信道的转移特性与输入输出特性可知,该信道可通过一个二元信源与一个同维的仅含0或1的矩阵通过以概率p进行异或操作实现0。此函数可以采用两种方法编写,一种方法是将图片转换为列向量或者行向量与同维的矩阵异或;另外一种方法为与同维矩阵直接异或,无需转换。

信道函数如下,函数1:

function [A] = MYBSC1(I,p)
%MYBSC1 bsc信道函数
%   I-输入的二值图像或0,1矩阵;p-BSC信道参数
[m,n]=size(I);
I=reshape(I,m*n,1);   %二值矩阵转为列向量
x=rand(m*n,1);
for i=1:m*n
    if x(i)<p
        x(i)=1;
    else
        x(i)=0;
    end
end
A=xor(I,x);
A=reshape(A,m,n);   %列向量转为二值矩阵
end

函数2:

function [ A ] = MYBSC2(I,p)
%MYBSC2 bsc信道函数
%   I-输入的二值图像或0,1矩阵;p-BSC信道参数
[m,n]=size(I);
x=rand(m,n);
for i=1:m
    for j=1:n
        if x(i,j)<p
            x(i,j)=1;
        else
            x(i,j)=0;
        end
    end
end
A=xor(I,x);
end

接下来,通过MATLAB的系统函数与自己编写的函数进行对比验证,测试程序为:

clc
clear all
Pic=imread('star.jpg');
Pi_gray=rgb2gray(Pic);   %灰度化
thresh=graythresh(Pi_gray);   %灰度阈值
Pi_2=im2bw(Pi_gray,thresh);   %二值化
Pi_2=im2double(Pi_2);        %将逻辑值转换为双精度
Pi_01=bsc(Pi_2,0.01);       %经过bsc信道(系统函数)
MyPi1=MYBSC1(Pi_2,0.01);    %自写函数  
MyPi2=MYBSC2(Pi_2,0.01);
figure
subplot(2,2,1);imshow(Pic,[]);title('原图');
subplot(2,2,2);imshow(Pi_gray,[]);title('灰度图');
subplot(2,2,3);imshow(Pi_2,[]);title('二值图');
subplot(2,2,4);imshow(Pi_01,[]);title('经过p=0.1bsc信道');
figure
subplot(2,2,1);imshow(Pic,[]);title('原图');
subplot(2,2,2);imshow(Pi_gray,[]);title('灰度图');
subplot(2,2,3);imshow(MyPi1,[]);title('经过信道1,p=0.01');
subplot(2,2,4);imshow(MyPi2,[]);title('经过信道2,p=0.01');

程序运行结果如下:

通过经过相同参数的BSC信道后的三幅图片的对比可知,编写的信道函数符合BSC信道。

最后

以上就是大力毛巾为你收集整理的二元固定信道(BSC)信道的MATLAB实现的全部内容,希望文章能够帮你解决二元固定信道(BSC)信道的MATLAB实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部