Image Completion using Planar Structure Guidance MATALB 代码调试(二)—— 如何处理自己的图片

Image Completion using Planar Structure Guidance MATALB 代码调试(一)

—— 如何运行代码

Image Completion using Planar Structure Guidance MATALB 代码调试(二)

—— 如何处理自己的图片


Image Completion using Planar Structure Guidance MATALB 代码调试(二) ——  如何处理自己的图片


最近在学习图像修复算法,好论文不少。这里先学习了这篇文章:

Image Completion using Planar Structure Guidance :

ACM Transactions on Graphics (Proceedings of SIGGRAPH 2014), 33(4), 2014.


上一文我们已经成功的运行了这篇图像修复算法的运行。当我要处理自己的图像时,出现了一些问题,原因是没有对源代码了解到位。

1. 问题描述

我们先看看 data 文件下的图片:


貌似只要把我们要修复的地方用纯白色区域涂掉就可以了。

但实际并不是。这些图像的白色区域,其实是因为透明度为 0 所致。

具体说就是,这些图片都是由 4 层通道组成:R,G,B,还有 alpha 层。RGB 好理解。

这个 alpha 层表示图像的透明度。data 中的图本身 RGB 并没有被白色遮挡。之所以是白色的,是因为在这些区域,alpha = 0 !即完全不透明。

在 sc_extract_planar_structure.m 中,用如下语句就可以看到这其中的端倪:

[img, ~, alpha] = imread(fullfile('data', imgFileName));
figure,imshow(img)
figure,imshow(alpha)
mask = alpha ~= 255;
figure,imshow(mask)
img  = im2double(img);

显示的图像如下图:

 img

   alpha

   mask

可以看到 img 中并不是白色的,而是黑色的。呈现出白色是因为有透明度层的存在。

也就是说,当我们用这个代码处理自己的图片是,第一步是要将自己图片中,要去除的遮挡物部分用 alpha 层来标记 !!!

2. 图像的 alpha 层生成

那么,如和用 MATLAB 对遮挡物部分用 alpha 层进行标记呢?

我这里提供我自己的方法。我的方法比较笨,但并不是很难。当然应该有更好的方法,还望各路高手大神提点。

2.1 画图工具涂白要恢复的区域

用画图工具就很好实现,如下图:


当然,也可以根据图片的特征,将要修复的区域换成其他纯色,如黑色等。

2.2 生成带有 alpha 层的 png 图片

代码如下:

close all  
clear  
clc  

path = 'F:\1_MyWork\Papers\ImageEditing\ImageCompletion\StructCompletion_master\data\';
imgFileName = '088_input_hole.png';

[I,map,alpha] =imread( fullfile(path, imgFileName) );  
%figure,imshow(I)

Igray = rgb2gray(I);
[x,y] = size(Igray);
new_alpha = Igray ~= 255;
new_alpha = 255*new_alpha;
%figure, imshow(new_alpha);

imwrite(I, fullfile(path, imgFileName) ,'Alpha',new_alpha); 

% [I,map,alpha] = imread(fullfile(path, imgFileName));  
%figure, imshow(alpha);  

这里,我们先假设自然图像中不存在纯白色的区域。用灰度图像 Igray 中白色区域来定义 new_alpha 的值 :

new_alpha = Igray ~= 255         % 当 Igray 某点的值不是 255 时,new_alpha 在该点的值置为 0,其余置为 1

这样就可以得到符合修复区域形状的 alpha 层了。当然,不要忘记 alpha 最大值是 255。

最后通过 imwrite 语句来生成带有 alpha 层的 png 图片了。


运行 run.m 即可。(上一文讲过 run.m 是怎么设置的,可以参考 (-))。


VP detection


修复图像


PS:怎么说呢,按照这个代码运行的结果,其实并没有比该文原文给出的效果要好。具体原因,可能是某些参数需要根据图片自身进行修改吧。这方面还要好好研究一下。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值