⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 function_mc_generateobservations.m

📁 对图像进行local approximation处理的技术,应用于图像去模糊中.
💻 M
字号:
function Output = GenerateObservations(Input,size_initial,v_support)% function generates blurred noisy observations for Blind Deconvolution % problem in Multiframe (Multichannel) Imaging %% Arguments:%   Input.y - true images (y)%   Input.v_true{:} - cell array of true PSFs%   Input.BSNR(:) - array of BSNR value for noise%   Input.shifts(:,:) - 2D array of vertical and horizontal shifts of%                       observations%   Input.NumberOfObservations - number of observations = min(length(Input.v_true),length(Input.BSNR))%%   size_initial=5; % support size of INITIAL PSF%   v_support=zeros(15,15); % SUPPORT of PSFs, odd sizes only%                           used for errors, illustration of PSFs%%% Returns:%   Output.v_init - initial PSFs%   Output.v_true - true PSFs with same support%   Output.sigma  - std of noise for each observation%   Output.z      - array of observations%   Output.Z      - FT of observations%% Observation model:%   z(j) = y*v(j)+sigma(j)n%   z(j) : blurred noisy observations, j=1,...,L%   y    : true image (assumed as unknown)%   v(j) : point-spread functions%   n    : gaussian white noise with standard deviation sigma(j) for every %        jth obsrvation z(j)%   *    : convolution%%% The files are prepared in Tampere University of Technology, Institute of% Information Technology, 2006.%% Vladimir Katkovnik, Dmitriy Paliy*% *e-mail: dmitriy.paliy@tut.fiif nargin<3,    v_support=zeros(15,15); % SUPPORT of PSFs, odd sizes only    % used for errors, illustration of PSFsend;if nargin<2,    size_initial=5; % support size of INITIAL PSFend;%%% FIX SEED FOR RANDOM PROCESSES  (OPTIONAL)init=2055615788; randn('seed',init);[yN,xN,zN] = size(Input.y);Output.v = zeros(yN,xN,Input.NumberOfObservations,size(Input.y,3));for i=1:Input.NumberOfObservations,    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    %%%  GENERATES INITIAL PSF  %%%%%%%%%%%%%%%%%%%%%%%%%%    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    v = fspecial('gaussian',size_initial,1);    v = function_KernelsForFFT( v, v_support);    % pad PSF with zeros to whole image domain, and centers it.    [ghy1,ghx1]=size(v);    big_v1_initial=zeros(yN,xN); big_v1_initial(1:ghy1,1:ghx1) = v;    Output.v_true{i} = function_KernelsForFFT( Input.v_true{i}, v_support);            for ccolor=1:size(Input.y,3),        Output.v_init(:,:,i,ccolor) = circshift(big_v1_initial,-round([(ghy1-1)/2 (ghx1-1)/2]));        Output.v(:,:,i,ccolor) = Output.v_init(:,:,i,ccolor); % function_KernelsForFFT( Input.v_true{i}, zeros(yN,xN));                % performs blurring (convolution is obtained by product in frequency domain)        y_blur = real(ifft2(fft2(fftshift(function_KernelsForFFT( Input.v_true{i}, zeros(yN,xN)))).*fft2(Input.y(:,:,ccolor))));        y_blur = circshift(y_blur,[Input.shifts(i,1) Input.shifts(i,2)]);        %%%  ADDING NOISE to BLURRED SIGNAL  %%%%%%%%%%%%        % sigma of noise in blurred image given the desired BSNR        if Input.BSNR(i)>0,            Output.sigma(i) = sqrt(norm(y_blur(:)-mean(y_blur(:)),2)^2 /(xN*yN*10^(Input.BSNR(i)/10)));        else            Output.sigma(i) = 0;        end;        n1 = Output.sigma(i)*randn(size(y_blur)); % white Gaussian noise with variance org_sigma^2        Output.z(:,:,i,ccolor) = y_blur + n1;        Output.Z(:,:,i,ccolor) = fft2(Output.z(:,:,i,ccolor));    end;    end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -