Nonlinear diffusion by PDE in image processing

∂ u ∂ t = d i v ( c ( ∣ ∇ u ∣ 2 ) ∇ u ) \frac{\partial u}{\partial t}=div(c(|\nabla u|^2)\nabla u) tu=div(c(u2)u) c = 1 c=1 c=1时是热方程。

Images are piecewise smooth functions. We want to smooth the image while preserving the sharp edges. 故取 c ( s ) = 1 1 + s c(s)=\frac{1}{\sqrt{1+s}} c(s)=1+s 1

pic = imread('pic0.jpg');
u = imresize(pic,0.2);
u = rgb2gray(u);
imwrite(u,'pic.jpg');

pic = imread('pic.jpg');
u = double(pic);
s = size(u); M = s(1); N = s(2);
n_loop = 100;

% circular boundary value 
for x = 2:M-1
	u(x,1) = u(x,N-1);
	u(x,N) = u(x,1+1);
end
for y = 2:N-1
	u(1,y) = u(M-1,y);
	u(M,y) = u(1+1,y);
end

div_x = zeros(M,N); div_y = zeros(M,N);
for i = 1:n_loop
	for x = 2:M-1
		for y = 2:N-1
			div_x(x,y) = (u(x,y)-u(x-1,y))/((1+(u(x,y)-u(x-1,y))^2+(u(x,y)-u(x,y-1))^2)^0.5);
			div_y(x,y) = (u(x,y)-u(x,y-1))/((1+(u(x,y)-u(x-1,y))^2+(u(x,y)-u(x,y-1))^2)^0.5);
		end
	end
	for x = 3:M-1
		for y = 3:N-1
			u(x,y) = u(x,y)+div_x(x,y)-div_x(x-1,y)+div_y(x,y)-div_y(x,y-1);
		end
	end
	disp(i);
	if mod(i,10) == 0
		string = ['u_',num2str(i),'.jpg'];
		imwrite(uint8(u),string);
	end
end
	

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值