📄 qprec.m
字号:
function x = qprec(p0, p1, type)% QPREC Quincunx Polyphase Reconstruction%% x = qprec(p0, p1, [type])%% Input:% p0, p1: two qunincunx polyphase components of the image% type: [optional] one of {'1r', '1c', '2r', '2c'}, default is '1r'% '1' and '2' for selecting the quincunx matrices:% Q1 = [1, -1; 1, 1] or Q2 = [1, 1; -1, 1]% 'r' and 'c' for suppresing row or column %% Output:% x: reconstructed image%% Note:% Note that R1 * R2 = R3 * R4 = I so for example,% upsample by R1 is the same with down sample by R2 % % See also: QPDECif ~exist('type', 'var') type = '1r';end% Quincunx downsampling using the Smith decomposition:%% Q1 = R2 * D1 * R3% = R3 * D2 * R2% and,% Q2 = R1 * D1 * R4% = R4 * D2 * R1%% where D1 = [2, 0; 0, 1] and D2 = [1, 0; 0, 2].% See RESAMP for the definition of the resampling matrices R's[m, n] = size(p0);switch type case {'1r'} % Q1 = R2 * D1 * R3 y = zeros(2*m, n); y(1:2:end, :) = resamp(p0, 4); y(2:2:end, [2:end, 1]) = resamp(p1, 4); x = resamp(y, 1); case {'1c'} % Q1 = R3 * D2 * R2 y = zeros(m, 2*n); y(:, 1:2:end) = resamp(p0, 1); y(:, 2:2:end) = resamp(p1, 1); x = resamp(y, 4); case {'2r'} % Q2 = R1 * D1 * R4 y = zeros(2*m, n); y(1:2:end, :) = resamp(p0, 3); y(2:2:end, :) = resamp(p1, 3); x = resamp(y, 2); case {'2c'} % Q2 = R4 * D2 * R1 y = zeros(m, 2*n); y(:, 1:2:end) = resamp(p0, 2); y([2:end, 1], 2:2:end) = resamp(p1, 2); x = resamp(y, 3); otherwise error('Invalid argument type');end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -