图像修复序列——BSCB模型

本文详细介绍了BSCB模型在图像修复领域的应用,包括参考文献、代码实现和模型效果展示,重点讲解了BSCB模型的demo、图像修复模型的实现以及扩散模型的创建,并提供了创建掩模Mask的步骤。
摘要由CSDN通过智能技术生成

1. 参考文献


2. BSCB模型代码

2.1 BSCB模型demo

% demo_BSCB.m
% Author: HSW
% Date: 2015/3/25
% HARBIN INSTITUTE OF TECHNOLOGY
%
% set matlab
close all;
clear all;
clc;

options.null = 0;
% read image
Img = imread('Image\butterfly.bmp');
Img = imread('Image\peppers.bmp'); 
% Img = rgb2gray(Img); 
Img = im2double(Img);
if max(Img(:)) < 2
    Img = Img*255;
end

FlagColor = (size(Img,3) == 3);

% set mask
SetMask = 1;
if SetMask == 1
    % read mask
    Mask = imread('Mask\peppers_mask512.bmp');
    Mask = Mask > 5; 
    MFlagColor = (size(Mask,3) == 3);
    if MFlagColor ~= FlagColor && FlagColor == 1
        Mask = repmat(Mask,[1,1,3]);
    elseif MFlagColor ~= FlagColor && FlagColor == 0
        Mask = Mask(:,:,1);
    end
elseif SetMask == 2
    % Interactively set mask
    if not(exist('grab_mode'))
        grab_mode = 'line';
    end
    options.grab_mode = grab_mode;
    if not(exist('grab_radius'))
        grab_radius = 1;
    end
    switch grab_mode
        case 'points'
            options.r = grab_radius;
            U = grab_inpainting_mask(Img,options);
        case 'line'
            options.r = grab_radius;
            [U,options.point_list] = grab_inpainting_mask(Img,options);
    end %switch
    Iin = find(U(:,:,1) == Inf);
    Iout = find(U(:,:,1) ~= Inf);
    m1 = length(Iin); % 缺损点的总数
    % product the mask
    Mask = zeros(size(Img));
    if FlagColor == 1
        tmpMask = zeros([size(Img,1),size(Img,2)]);
        for channel = 1:3
            tmpMask(Iin) = 1 ;
            Mask(:,:,channel) = tmpMask;
        end
    else
        Mask(Iin) = 1; % 缺损区域为1
    end % if FlagColor
end% if SetMask
nImg = (1-Mask).*Img;
PSNRin = 10*log10(255^2/mean((Img(:)-nImg(:)).^2)); 
InImg = nImg; 
% Initial Image
if FlagColor == 1
    Positions = find(Mask(:,:,1) == 1);
    for channel = 1:3
        tmpnImg = nImg(:,:,channel);
        tmpnImg(Positions) = floor(255*rand(1,length(Positions))) + 1;
        InImg(:,:,channel) = tmpnImg;
    end
else
    Positions = find(Mask == 1);
    randValue = floor(255*rand(1,length(Positions))) + 1;
    InImg(Positions) = randValue;
end
% Main BSCB Model
IterNum = 3000;
I = BSCB_Diffusion(InImg,FlagColor,Mask,0.1);
for iter = 1:IterNum
    I = BSCB_Inpainting(
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值