【问题标题】:Using Heat Equation to blur images using Matlab使用 Matlab 使用 Heat Equation 模糊图像
【发布时间】:2014-04-22 13:57:17
【问题描述】:

我正在尝试使用 PDE 热方程并使用 Matlab 将其应用于图像。我遇到的问题是图像没有模糊,它只是变白了。此外,我从使用 Maple 的其他班级中得到了不同的结果。

代码如下:

% George Lees Jr. 
% Heat equation

clear,clc;
dx = 1;
dy = 1;
dt = .025;
%dt/(dx*dx)

t = 0;
time = 3;
T_old = imread('tulipgray.jpg');
T_temp=T_old;
[m,n,k] = size(T_temp);
%colormap gray;
%imagesc(T_temp);
%imshow(T_old);
T_new = T_temp;
T_new=ind2gray(T_new,colormap);
%T_new(:,50)=0;
%T_old(1,70)
%imagesc(T_new);
%diff_x = dt/(dx*dx)
%diff_y = dt/ (dy*dy)
%time = 0;
while t < time
    for i = 2:1:m-1
        for j = 2:1:n-1
                T_new(i,j) = T_temp(i,j) + dt*(T_temp(i+1,j) -2*T_temp(i,j) + T_temp(i-1,j)) + dt*(T_temp(i,j+1)-2*T_temp(i,j) + T_temp(i,j-1));

        t = t+dt;
        T_temp(i,j) = T_new(i,j);


        end
    end
end

figure
imshow(T_new)

是的,图像变得更白了

【问题讨论】:

  • 不知道出了什么问题,但我用谷歌搜索了一下,发现了这个:math.ucla.edu/~wittman/reu2008/matlabIP.pdf 第 8 页上的代码似乎有效,也许您可​​以将其与您的代码进行比较以找出问题。

标签: matlab image-processing pde heat


【解决方案1】:

您的代码有 2 个问题:

1) 您在每个像素之后而不是在完成整个图像之后递增时间计数器

2) 您需要对浮点值进行计算,而不是整数。 dt 很小,因此等式 RHS 的值是

固定的代码应该是这样的

clear,clc;

dt = 0.025;
time = 3;
T_old = imread('rice.png');
T_temp=double(T_old);
[m,n,k] = size(T_temp);

T_new = double(T_temp);
T_new=ind2gray(T_new,colormap);

while t < time
    for i = 2:1:m-1
        for j = 2:1:n-1
            T_new(i,j) = T_temp(i,j) + dt*(T_temp(i+1,j) -2*T_temp(i,j) + T_temp(i-1,j)) + dt*(T_temp(i,j+1)-2*T_temp(i,j) + T_temp(i,j-1));
        end
    end
   T_temp = T_new;
   t = t+dt;
   imshow(uint8(T_new))
   getframe;
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 2021-08-29
    • 1970-01-01
    • 2012-03-05
    相关资源
    最近更新 更多