最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

卷积分析文档Matlab数字图像处理

来源:动视网 责编:小OO 时间:2025-10-01 23:53:10
文档

卷积分析文档Matlab数字图像处理

讲义1公式2图解3计算步骤4实例编程测试1代码functionce_conv2()clc;F=[1234];G=[-11-22];R=com_conv2(F,G);%调用自编函数R1=conv2(F,G);%调用自带函数disp(R)disp(R1)F=[3141];G=[0101-41010];R=com_conv2(F,G);%调用自编函数R1=conv2(F,G);%调用自带函数disp(R)disp(R1)F=[221123111];G=[11233412334152712221111
推荐度:
导读讲义1公式2图解3计算步骤4实例编程测试1代码functionce_conv2()clc;F=[1234];G=[-11-22];R=com_conv2(F,G);%调用自编函数R1=conv2(F,G);%调用自带函数disp(R)disp(R1)F=[3141];G=[0101-41010];R=com_conv2(F,G);%调用自编函数R1=conv2(F,G);%调用自带函数disp(R)disp(R1)F=[221123111];G=[11233412334152712221111
讲义

1 公式

2 图解

3 计算步骤

4 实例

编程测试

1 代码

function ce_conv2()

clc;

F = [1 2

    3 4];

G = [-1 1

    -2 2];

R = com_conv2(F, G); % 调用自编函数

R1 = conv2(F, G); % 调用自带函数

disp(R)

disp(R1)

 

F = [3 1

    4 1];

G = [0 1 0

    1 -4 1

    0 1 0];

R = com_conv2(F, G); % 调用自编函数

R1 = conv2(F, G); % 调用自带函数

disp(R)

disp(R1)

 

F = [2 2 1

    1 2 3

    1 1 1];

G = [11 2 3 3 4 1

    2 3 3 4 1 5

    2 7 12 22 11 11

    21 22 11 3 4 5

    7 8 6 2 1 2

    4 5 3 32 1 21];

R = com_conv2(F, G); % 调用自编函数

R1 = conv2(F, G); % 调用自带函数

disp(R)

disp(R1)

 

function R = com_conv2(F, G)

% 计算两个二维矩阵的卷积

% 返回R

% 主要方法为卷积的矩阵化操作

if nargin == 0

    F = [3 1

        4 1];

    G = [0 1 0

        1 -4 1

        0 1 0];

end

[m1, n1] = size(F);

[m2, n2] = size(G);

F(m1+m2-1, n1+n2-1) = 0; % 维数扩展

G(m1+m2-1, n1+n2-1) = 0; % 维数扩展

F1 = F';

FP = F1(:); % 得到FP

% 下面得到G1~GN(其中N=m1+m2-1)

for i = 1 : size(G, 1)

    temp = G(i, :); temp = temp';

    num = length(temp);

    Gi = temp;

    for j = 2 : num

        tempj = [temp(num-j+2:num); temp(1:num-j+1)];

        Gi = [Gi tempj];

    end

    GP{i} = Gi;

end

% 下面得到GF

GF = cat(1, GP{1:end});

for j = 2 : size(G, 1)

    temp = cat(1, GP{[num-j+2:num 1:num-j+1]});

    GF = [GF temp];

end

% 得到结果矩阵

R = GF*FP;

R = reshape(R, [m1+m2-1, n1+n2-1])';

2 实验结果

结果1:

结果2:

结果3:

fft与conv2计算卷积

示例

利用fft2和conv2做卷积

Code:

clc; clear all;

%% 利用fft2计算二维卷积

% 利用fft2函数可以计算二维卷积,如:

a=[2 2 1;1 2 3;1 1 1];  

b=[11 2 3 3 4 1;2 3 3 4 1 5; ...

    2 7 12 22 11 11;21 22 11 3 4 5; ...

    7 8 6 2 1 2;4 5 3 32 1 21];

a0 = a; b0 = b;

[ma, na] = size(a); % a的维数

[mb, nb] = size(b); % b的维数

a(ma*mb-1, na*nb-1) = 0; % 扩展a

b(ma*mb-1, na*nb-1) = 0; % 扩展b

c=ifft2(fft2(a).*fft2(b)); % 用fft2和ifft2

c1=c(1:ma+mb-1,1:na+nb-1); % 提取

%% 利用conv2(二维卷积函数)校验, 如:

a=a0; b = b0;

c2=conv2(a,b); % 用conv2

fprintf('\\nUse fft2, c1 = \\n'); disp(c1);

fprintf('\\nUse conv2, c2 = \\n'); disp(c2);

% 经验证发现是一样的,所以说求卷积可以使用傅立叶变换后点乘,

% 然后在逆傅立叶变换回去则可

Result:

文档

卷积分析文档Matlab数字图像处理

讲义1公式2图解3计算步骤4实例编程测试1代码functionce_conv2()clc;F=[1234];G=[-11-22];R=com_conv2(F,G);%调用自编函数R1=conv2(F,G);%调用自带函数disp(R)disp(R1)F=[3141];G=[0101-41010];R=com_conv2(F,G);%调用自编函数R1=conv2(F,G);%调用自带函数disp(R)disp(R1)F=[221123111];G=[11233412334152712221111
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top