资源简介
用matlab实现的TV修复源代码,利用中心差分法进行数值计算。
代码片段和文件信息
function [B] = newTVInpaintingTest()
clear all;
close all;
OriginalImg = rgb2gray(imread(‘clothOriginal.bmp‘));
% OriginalImg = rgb2gray(imread(‘barbOriginal.bmp‘));
% OriginalImg = rgb2gray(imread(‘斜线图Original.bmp‘));
% OriginalImg = imread(‘bookOriginal.bmp‘);
% OriginalImg = rgb2gray(imread(‘zhuobuOriginal.bmp‘));
% OriginalImg = rgb2gray(imread(‘gunOriginal.bmp‘));
% OriginalImg = rgb2gray(imread(‘集市GRAYDirty.bmp‘));
% OriginalImg = imread(‘lenaOriginal.bmp‘);
% OriginalImg =imread(‘S_S_Denimb_t.bmp‘);
% OriginalImg=imnoise(OriginalImg‘gaussian‘0.010.003);
figure(1);imshow(OriginalImg);
% imwrite(uint8(OriginalImg)‘lenaNoise.bmp‘);
% DirtyImg=rgb2gray(imread(‘clothDirtyCrossGray.bmp‘));
% DirtyImg=rgb2gray(imread(‘clothDirtyFirstGray.bmp‘));
% DirtyImg=rgb2gray(imread(‘barbDirty.bmp‘));
% DirtyImg=rgb2gray(imread(‘斜线图dirty.bmp‘));
% DirtyImg=imread(‘bookDirty.bmp‘);
% DirtyImg=rgb2gray(imread(‘zhuobuDirty.bmp‘));
% DirtyImg=rgb2gray(imread(‘gunDirty.bmp‘));
% DirtyImg=rgb2gray(imread(‘集市GRAYDirty.bmp‘));
% DirtyImg=imread(‘lenaDirty.bmp‘);
% DirtyImg=imread(‘lenaDirtyCon.bmp‘);
% DirtyImg=imread(‘S_S_Denimb_tDirty.bmp‘);
DirtyImg=imread(‘clothNoiseDirty.bmp‘);
figure(2);imshow(DirtyImg);
OriginalImg=double(OriginalImg);
DirtyImg=double(DirtyImg);
%获取图像宽度和高度
[widthheight] = size(DirtyImg);
dirtyMSE = 0.0;
for j = 1:height
for i = 1:width
dirtyMSE=dirtyMSE+abs(OriginalImg(ij)-DirtyImg(ij));
end
end
dirtyMSE = dirtyMSE/(width*height);
dirtyPSNR = 10*log10(255*255/dirtyMSE)
% Img = double(DirtyImg);
Img=double(DirtyImg);
U = Img;
V = Img;
IterTimes=100;
% MASK = imread(‘lakeMask.bmp‘);
% [widthMheightM] = size(MASK);
% for j = 1:height
% for i = 1:width
% % if Img(ij) > 251
% if Img(ij) < 1
% MASK(ij) = 255;
% else
% MASK(ij) = 0;
% end
% end
% end
%利用逻辑运算提取掩模
% MASK=~(Img); %人为选择阈值
MASK = (Img < 1);
% MASK = (Img > 251);%lena;集市图像
figure(3);imshow(MASK);
%计算受损率
badNum=0;
for j = 1:height
for i = 1:width
if MASK(ij) == 1
badNum=badNum+1;
end
end
end
badRatio=badNum/(width*height)
% %将二值掩模中间的空洞填充,使之成为纯粹的二值掩模
% noborder=imclearborder(MASK4);
% % figureimshow(noborder)
% MASK=imfill(noborder‘holes‘);
% figureimshow(MASK);
tic;
%%纹理方向(-2,3)即(mn)取决于坐标系的方向,无所谓
%%用自己的算法求得纹理方向为(-10,16)
%对其他图像,若纹理越界,可进行近似
m=-2;n=3;%cloth
% m=1;n=0;%tv
% m=-4;n=1;%gun
% m=-1;n=1;
iter=1;
a=1e-6;
while iter <= IterTimes
%更新修复区域内每点值
for i = 8:width-8
for j = 8:height-8
% if (MASK(ij+1) == 255)|(MASK(ij-1) == 255)|(MASK(i+1j) == 255)|(MASK(i-1j) == 255)
% if (MASK(ij+1) == 1)|(MASK(ij-1) == 1)|(MASK(i+1j) == 1)|(MASK(i-1j) == 1)
% if MASK(ij)==255
lamda = 0.005;
if MASK(ij) == 1
% if (MASK(ij+2) == 1)|(MASK(ij-2) ==
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5229 2008-04-07 08:49 NoisenewTVInpaintingTest.m
文件 14958 2007-08-19 09:55 clothOriginal.bmp
文件 6046 2008-03-27 18:30 clothNoiseDirty.bmp
----------- --------- ---------- ----- ----
26233 3
- 上一篇:滤波法产生单边带信号
- 下一篇:模式识别大作业MATLAB版)
相关资源
- matlab图像修复
- 用matlab TV模型图像修复
- Criminisi算法图像修复matlab
- Criminisi图像修复
- 图像修复Criminisi算法
- 图像去噪 TV模型程序
- NLTV WI v1 非局部全变分小波域图像修复
- TV模型修复图像MATLAB代码
- 基于TV模型的image inpainting算法
- Criminisi算法(彩色图像修复)matlab代
- CDD
- tv 基于tv模型的图像修复方法
- Inpainting--on-Wavelet- 图像修复是图像处
- CDD 基于CDD的图像修复算法
- coderesult 图像修复中基于一幅图像的改
- TV-image-restoration tv图像修复
- BSCB-inpainting BSCB数字图像修复算法
- RGB_Criminisi Criminisi算法修复彩色图像
- colorimagerestoration 基于tv模型的彩色图
- TV_inpainting
- 1 基于区域纹理合成的图像修复
- image-inpainting 图像修复
- splitBregmanROF(Matlab-Code)(1) TV模型
- 2011-ImageInpainting
- imagerestoration 基于深度图的图像修复
- Criminisi-original-gray
- 利用MCA进行图像修复
- 图像修补matlab程序
评论
共有 条评论