一、简介
基于matlab的DTMF进行图像传输
二、部分源码
clear; clc;close all;
I=imread('1.bmp'); %读取图片
info=imfinfo('1.bmp');
w=info.Width;%获取图片信息 宽、高赋值
h=info.Height;
figure,imshow(I);%显示原图
title('原图');
%显示灰度图
ig=rgb2gray(I);
figure,imshow(ig);
title('灰度图');
%图片数据编码:把3位灰度值拆成3个个位数数字
for i=1:h
for j=1:w
g=ig(i,j);%遍历获取灰度值
gb=double(g)
s(3*(w*(i-1)+j)-2)=floor(gb/100);%百位 floor(x)小于等于x的最大整数
s(3*(w*(i-1)+j)-1)=floor(mod(gb,100)/10);%十位
s(3*(w*(i-1)+j))=mod(gb,10);%个位
end
end
L=length(s);%获取发送数组长度
SN=10; %信噪比
for i=1:L
ss=send(s(i)); %发送自定义函数
ssa=awgn(ss,SN); %噪声
ssar=receive(ssa); %接收自定义
r(i)=ssar;
end
for i=1:h %解码:把每3个个位数变为三位数
for j=1:w
re=r(3*(w*(i-1)+j)-2)*100+r(3*(w*(i-1)+j)-1)*10+r(3*(w*(i-1)+j));
rec(i,j)=re; %把解码出来的灰度值存到数组rec
end
end
rece=uint8(rec);
figure,imshow(rece); %显示接收的图片
title('接收图片');
三、运行结果
四、matlab版本
MATLAB R2019a
五、学习与交流
文中不足之处请大家多多指教,学习与交流可以联系企鹅:3752243968
文中部分源码仅供参考,若需要全部代码可以私信