对图象进行求反的matlab程序

对图象进行求反的matlab程序,第1张

好多人回答啊!

图像求反两种方法都可以

>> g1=imgdjust(f,[0 1],[1 0])%f为输入图像,此为第一种方法

>> g2=imcomplement(f)%f同样为输入图像,此为第二种方法

至于邻域均值嘛,主要用 fspecial和imfilter 两个函数,具体可以看一下帮助 ^_^

下面的两个例子分别用正方形和圆形的模板进行邻域均值。

>>w1=fspecial('average') %产生一个3x3大小的方形平均滤波模板w1

>>g1=imfilter(f,w1,'replicate') % g1为处理后的图像。'replicate'指卷积填充边缘时用复制边界的值来扩展。

>>w2=fspecial('disk') %产生一个半径为5的圆形平均滤波模板w2

>>g2=imfilter(f,w2,'replicate') % 同样,g2为处理后的图像,'replicate'指卷积填充边缘时用复制边界的值来扩展。

1.PCM 编码实现(M函数)

function code=PCMcoding(Range,S)

code=zeros(1,8)

Normalization=abs(S)/Range

deta=1/2048

if sign(S)==1

code(1)=1

else

code(1)=0

end

detas=ceil(Normalization/deta)

if detas>128

code(2)=1

if detas>512

code(3)=1

if detas>1024

code(4)=1

end

elseif detas>256

code(4)=1

end

elseif detas>32

code(3)=1

if detas>64

code(4)=1

end

elseif detas>16

code(4)=1

end

Tribal=bin2dec(num2str(code(2:4)))+1

if Tribal==1

Interval=1

else Interval=(2^(Tribal+2))/16

end

if Tribal==1

code(5)=(2^3)*Interval<detas

code(6)=code(5)*(2^3)*Interval+(2^2)*Interval<detas

code(7)=code(5)*(2^3)*Interval+code(6)*(2^2)*Interval+(2^1)*Interval<detas

code(8)=code(5)*(2^3)*Interval+code(6)*(2^2)*Interval+code(7)*(2^1)*Interval+(2^0)*Interval<detas

else

code(5)=2^(Tribal+2)+(2^3)*Interval<detas

code(6)=2^(Tribal+2)+code(5)*(2^3)*Interval+(2^2)*Interval<detas

code(7)=2^(Tribal+2)+code(5)*(2^3)*Interval+code(6)*(2^2)*Interval+(2^1)*Interval<detas

code(8)=2^(Tribal+2)+code(5)*(2^3)*Interval+code(6)*(2^2)*Interval+code(7)*(2^1)*Interval+(2^0)*Interval<detas

end

2。PCM 解码实现(M函数)

%PCM Decoding

function S=PCMdecoding(Range,code)

deta=Range/2048

Tribal=bin2dec(num2str(code(2:4)))+1

if Tribal==1

Interval=1

else Interval=(2^(Tribal+2))/16

end

if Tribal==1

S=code(5)*(2^3)*Interval+code(6)*(2^2)*Interval+code(7)*(2^1)*Interval+code(8)*(2^0)*Interval+Interval

else

S=2^(Tribal+2)+code(5)*(2^3)*Interval+code(6)*(2^2)*Interval+code(7)*(2^1)*Interval+code(8)*(2^0)*Interval+Interval

end

S=S*deta

程序如下

t=0:1/pi:100*pi

x=sin(100*pi*t)+sin(200*pi*t)+sin(400*pi*t)

X=fft(x)

f = fftshift(X)

w = linspace(0, 250, length(t))%频率坐标

subplot(211)

plot(t,x)

xlabel('t/s')

ylabel('幅值')

subplot(212)

plot(w,abs(f))%频谱图

title('信号的频谱')

xlabel('频率(Hz)')

ylabel('幅值')


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8058082.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存