matlab进行图片修补,Matlab基于样本的图像修补方法代码的一些问题!
% Compute confidences along the fill front------沿着填补前沿计算自信度
for k=dR'
Hp = getpatch(sz,k);
q = Hp(~(fillRegion(Hp)));
C(k) = sum(C(q))/numel(Hp);
end
% Compute patch priorities = confidence term * data term-----计算修补块的优先权
D(dR) = abs(Ix(dR).*N(:,1)+Iy(dR).*N(:,2)) + 0.001;
priorities = C(dR).* D(dR);
% Find patch with maximum priority, Hp-----寻找最大优先权的修补快
[unused,ndx] = max(priorities(:));
p = dR(ndx(1));
[Hp,rows,cols] = getpatch(sz,p);
toFill = fillRegion(Hp);
% Find exemplar that minimizes error, Hq-------发现错误最小化的样本
Hq = bestexemplar(img,img(rows,cols,:),toFill',sourceRegion);
% Update fill region-------更新填充区域
toFill = logical(toFill); % Marcel 11/30/05
fillRegion(Hp(toFill)) = false;
% Propagate confidence & isophote values---------传递自信度和等照度线的值
C(Hp(toFill)) = C(p);
Ix(Hp(toFill)) = Ix(Hq(toFill));
Iy(Hp(toFill)) = Iy(Hq(toFill));
% Copy image data from Hq to Hp-----从Hq复制图片数据到Hp
ind(Hp(toFill)) = ind(Hq(toFill));
img(rows,cols,:) = ind2img(ind(rows,cols),origImg);
% Visualization stuff ---------可视化的东西
if nargout==6
ind2 = ind;
ind2(logical(fillRegion)) = 1; % Marcel 11/30/05
%ind2(fillRegion) = 1; % Original
fillMovie(iter).cdata=uint8(ind2img(ind2,origImg));
fillMovie(iter).colormap=[];
end
iter = iter+1;
end
inpaintedImg=img;
%---------------------------------------------------------------------
% Scans over the entire image (with a sliding window)整个图像扫描(有一个滑动窗口)
% for the exemplar with the lowest error. Calls a MEX function.为最低的错误的样本。MEX调用一个函数。
%---------------------------------------------------------------------
function Hq = bestexemplar(img,Ip,toFill,sourceRegion)
m=size(Ip,1); mm=size(img,1); n=size(Ip,2); nn=size(img,2);
best = bestexemplarhelper(mm,nn,m,n,img,Ip,toFill,sourceRegion);
Hq = sub2ndx(best(1):best(2),(best(3):best(4))',mm);
%---------------------------------------------------------------------
% Returns the indices for a 9x9 patch centered at pixel p.返回像素中心于第1 9x9修补指数
%---------------------------------------------------------------------
function [Hp,rows,cols] = getpatch(sz,p)
% [x,y] = ind2sub(sz,p); % 2*w+1 == the patch size
w=4; p=p-1; y=floor(p/sz(1))+1; p=rem(p,sz(1)); x=floor(p)+1;
rows = max(x-w,1):min(x+w,sz(1));
cols = (max(y-w,1):min(y+w,sz(2)))';
Hp = sub2ndx(rows,cols,sz(1));
%---------------------------------------------------------------------
% Converts the (rows,cols) subscript-style indices to Matlab index-style
% indices. Unfortunately, 'sub2ind' cannot be used for this.
%---------------------------------------------------------------------
function N = sub2ndx(rows,cols,nTotalRows)
X = rows(ones(length(cols),1),:);
Y = cols(:,ones(1,length(rows)));
N = X+(Y-1)*nTotalRows;
%---------------------------------------------------------------------
% Converts an indexed image into an RGB image, using 'img' as a colormap
%索引图像转换成RGB图像,使用'img'作为一个颜色表
%---------------------------------------------------------------------
function img2 = ind2img(ind,img)
for i=3:-1:1, temp=img(:,:,i); img2(:,:,i)=temp(ind); end;
%---------------------------------------------------------------------
% Converts an RGB image into a indexed image, using the image itself as
% the colormap.利用图像本身的颜色表,将索引图像转换成RGB图像。
%---------------------------------------------------------------------
function ind = img2ind(img)
s=size(img); ind=reshape(1:s(1)*s(2),s(1),s(2));
%---------------------------------------------------------------------
% Loads the image and it's fill region, using 'fillColor' as a marker
% value for knowing which pixels are to be filled.使用fillColor作为标记值了解哪些%像素将被填充来加载图像和他的填充区域
%---------------------------------------------------------------------
function [img,fillImg,fillRegion] = loadimgs(imgFilename,fillFilename,fillColor)
img = imread(imgFilename); fillImg = imread(fillFilename);
fillRegion = fillImg(:,:,1)==fillColor(1) & ...
fillImg(:,:,2)==fillColor(2) & fillImg(:,:,3)==fillColor(3);
matlab进行图片修补,Matlab基于样本的图像修补方法代码的一些问题!相关推荐
- 图像的梯度方向matlab,基于梯度方向的图像边缘检测方法与流程
本发明具体涉及一种基于梯度方向的图像边缘检测方法. 背景技术: 边缘检测是图像处理的基本问题,在图像分割.特征提取.视觉导航等领域有广泛的应用.基于微分的边缘检测算法如Sobel算子.Prewitt算 ...
- 图像控制点 形变_基于控制点的图像变形方法的研究与实现
基于控制点的图像变形方法的研究与实现 林军 ; 李新华 [期刊名称] <北京电力高等专科学校学报 ( 自然科学版 ) > [年 ( 卷 ), 期] 2011(028)005 [摘要] 根据 ...
- matlab车辆测距,一种基于单目视觉的车辆测距方法
一种基于单目视觉的车辆测距方法 [专利说明]一种基于单目视觉的车辆测距方法 所属技术领域 [0001] 本发明属于目标检测与测距领域,尤其涉及一种基于单目视觉的车辆测距方法. [背景技术] [0002 ...
- matlab怎么添加条纹噪声,基于频域的图像条纹噪声消除方法
基于频域的图像条纹噪声消除方法 徐花艳 孙瑞宁 (长安大学 陕西 西安 710064) 摘 要: 主要以图像去噪为主的研究对象,利用图像的频谱图对图像中的条纹噪声的频率分布进行分析,并使用巴特沃斯带阻 ...
- matlab裁剪图片边框,MATLAB复制图片时边框大的问题
当使用MATLAB画图时,需要将图片复制到word中,会发现图片有一个白色的边框,在论文的排版中是一个影响美观的问题 例如: >> x = 0:10; >> y = sin(x ...
- matlab bp神经网络的诊断,基于-BP神经网络的故障诊断方法.doc
<智能控制基础> 研究生课程设计报告 题 目 基于BP神经网络的故障诊断方法 学 院 机械与汽车工程学院 专业班级 车辆工程 学 号 221601852020 学生姓名 李跃轩 指导教师 ...
- matlab的稀疏表示分类,基于稀疏表示的分类方法
四天数模,做得不好,但收获不小.最后还通宵一宿,多日后得以重获新生,特做个小记,聊记心得. 本次选题为神经元的分类和聚类,前者给定种类,需要通过训练样本找寻分类特征,再用测试样本测试分类方法的正确性. ...
- matlab将图片写入指定文件夹,将图像写入图形文件
A - 图像数据 矩阵 图像数据,指定为满(非稀疏)矩阵. 对灰度图像而言,A 可以是 m×n. 对索引图像而言,A 可以是 m×n.指定 map 输入参数中的相关颜色图. 对真彩色图像而言,A 必须 ...
- 图像处理:基于cv2.inpaint()图像修补
前言 今天我们将学习如何通过一种"修复"的方法消除旧照片中的小噪音,笔画等.当然,经过我的测试你也可以将其用于削弱混杂了其他的颜色的图像. 实验背景 大多数人家都会有一些旧的的旧化 ...
最新文章
- 如何实现更换Jupyter Notebook内核Python版本
- SpringSecurity注销功能
- Delphi - SEH研究
- php study是什么,phpstudy与wamp区别的区别是什么?
- AspectJ注解版和XML版
- 校园报修管理系统的不足与探讨
- 用matlab进行函数插值的几种方法
- 腾讯云学生服务器更换系统,腾讯云学生轻量服务器免费升配攻略(60G SSD系统盘不支持升级)...
- 配置linux磁盘配额前,Linux磁盘配额Quota配置详解
- 乐高收割机器人_学习乐高机器人编程,孩子到底收获了什么?
- 【Python脚本】harris调试时转换gray,Ix,Iy,resp等数据为png图片
- 直属领导和老板都给了我绩效A,HR最后审核时降成了B,平时没有得罪她,她为什么这么做?...
- calibre的注册表残留删除
- 深圳腾讯计算机打鱼的游戏,腾讯欢乐捕鱼
- uniapp 聊天记录插入的两种方式
- AE基础教程第一阶段——01影视后期专业导论
- css less 文件:global的写法
- 流量见顶碰上产业疲软 汽车互联网平台走向何处?
- 通过实例学Android应用开发01
- python大作业黑白棋记分_Python实现黑白棋人机对弈