赞
踩
概念:下采样(subsampled),又称为降采样(downsampled)。可以通俗地理解为缩小图像,减少矩阵的采样点数。
方法:(1)最常用隔位取值,每行每列每隔k个点取一个点(2)合并区域:每(row/k)*(col/k)窗口内所有像素的均值作为一个像素;(3)超分辨率项目中一般使用MATLAB函数imresize,先归一化到[0,1](直接除以图像范围最大值),再imresize(先下采样再上采样),再乘以图像范围最大值,然后求PSNR。(4)信号处理中,为了避免频域混叠,先滤波再采样。(理想滤波器的冲激响应就是sinc,所以跟sinc卷积相当于理想滤波。)
代码:
- % Name: dsample.m
- % 功能:降采样,指定偏移下采样序列的样本数
- % 输入:采样图片 I, 降采样系数N,偏移样本数Phase
- % 输出:采样后的图片Idown
- % author:zhangshuyuan date:2021/7/12
- %========================================================
- function Idown = dsample(I,N,varargin)
-
- narginchk(2,3) % 限制输入参数的个数,在2~3之间不会报错
-
- if isempty(varargin) % 使用varargin可以输入不定数目参数 % 或者使用switch...case...语句
- Phase = 0;
- else
- Phase = varargin{1};
- end
-
- [row,col] = size(I); % row×col
- drow = round(row/N);
- dcol = round(col/N);
- Idown = zeros(drow,dcol);
- p =1;
- q =1;
-
- Phase_r = min(Phase+1,row);
- Phase_c = min(Phase+1,col); % 从偏移下采样序列的位置开始成为新矩阵的元素
- for i = Phase_r:N:row
- for j = Phase_c:N:col
- Idown(p,q) = I(i,j);
- if q<col % 保证列向量下采样后仍为列向量
- q = q+1;
- else
- end
- end
- p = p+1;
- end
- end

概念:上采样(upsampling),又称为插值(interpolating)。可以通俗地理解为放大图像,增加矩阵的采样点数。
方法:(1)最常用内插值,每行每列每相邻两点间增加新的k-1个采样点;包括最邻近元法、双线性插值法、三次内插法等;(MATLAB函数imresize)(2)频域补0,根据傅里叶变换性质等同于在空域插值;(3)反卷积,用于网络中,具体见详情
- % Name: usample.m
- % 功能:升采样
- % 输入:采样图片 I, 升采样系数N
- % 输出:采样后的图片Idown
- % author:gengjiwen date:2015/5/10
- %========================================================
- function Iup = usample(I,N)
- [row,col] = size(I);
- upcol = col*N;
- upcolnum = upcol - col;
- uprow = row*N;
- uprownum = uprow -row;
-
- If = fft(fft(I).').'; %fft2变换
- Ifrow = [If(:,1:col/2) zeros(row,upcolnum) If(:,col/2 +1:col)]; %水平方向中间插零
- %补零之后,Ifrow为 row*upcol
- Ifcol = [Ifrow(1:row/2,:);zeros(uprownum,upcol);Ifrow(row/2 +1:row,:)]; %垂直方向补零
- Iup = ifft2(Ifcol);
- end

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。