pcm 降采样_图像降采样和升采样
转自:http://www.lofter.com/postentry?from=search&permalink=1cb3111d_6ee9587
1、先说说这两个词的概念:
降采样,即是采样点数减少。对于一幅N*M的图像来说,如果降采样系数为k,则即是在原图中 每行每列每隔k个点取一个点组成一幅图像。降采样很容易实现.
升采样,也即插值。对于图像来说即是二维插值。如果升采样系数为k,即在原图n与n+1两点之间插入k-1个点,使其构成k分。二维插值即在每行插完之后对于每列也进行插值。
插
值的方法分为很多种,一般主要从时域和频域两个角度考虑。对于时域插值,最为简单的是线性插值。除此之外,Hermite插值,样条插值等等均可以从有关
数值分析书中找到公式,直接代入运算即可。对于频域,根据傅里叶变换性质可知,在频域补零等价于时域插值。所以,可以通过在频域补零的多少实现插值运
算。
2、实现
其实在matlab中自带升采样函数(upsample)和降采样函数(downsample),读者可以查找matlab的帮助文件详细了解这两个函数。在这里,我重新写如下:
%========================================================
% 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
%========================================================
% Name: dsample.m
% 功能:降采样
% 输入:采样图片 I, 降采样系数N
% 输出:采样后的图片Idown
% author:gengjiwen date:2015/5/10
%========================================================
function Idown = dsample(I,N)
[row,col] = size(I);
drow = round(row/N);
dcol = round(col/N);
Idown = zeros(drow,dcol);
p =1;
q =1;
for i = 1:N:row
for j = 1:N:col
Idown(p,q) = I(i,j);
q = q+1;
end
q =1;
p = p+1;
end
end
% ===========================================
% 测试升采样和降采样的程序
% author:gengjiwen , date:2015/05/10
% 备注:测试完毕!
%============================================
clear;
close all;
I = imread('test1.jpg');
I = rgb2gray(I);
figure(1);
imagesc(I);
title('原图像');
% 图像降采样
figure;
for ii = 2:2:8
Idown = dsample(I,ii);
subplot(2,2,ii/2);
imagesc(Idown);
str = ['downsample at N = ' num2str(ii)];
title(str);
end
% 图像升采样
figure;
for ii = 2:2:8
Iup =usample(I,ii);
subplot(2,2,ii/2);
imagesc(abs(Iup));
str = ['upsample at N = ' num2str(ii)];
title(str);
end
测试结果如下:
3、结果分析
降采样没什么可说的,其实在matlab中可以很方便的用冒号运算符实现,具体可以查看下matlab自带函数downsample的实现。
对
于升采样,这里用了频域方法实现。将原图像进行二维傅里叶变换,之后在变换后的中间补零插值,再反变换回时域。根据傅里叶变换性质可知,此时的时域插值核
sinc函数的形式,对于二维,应是
二维sinc()函数。由于sinc函数的旁瓣比较大,故在升采样后的图像中会存在振铃现象。读者可以观察上面的实现结果图片。如果想减小这种情况,则可
以对其进行频域加窗。
pcm 降采样_图像降采样和升采样相关推荐
- python图像下采样_图像的上采样(upsampling)与下采样(subsampled)
缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个:1.使得图像符合显示区域的大小:2.生成对应图像的缩略图. 放大图像(或称为上采样(upsampli ...
- 红水河统计降尺度_统计降尺度的方法的研究进展综述.doc
统计降尺度的方法的研究进展综述 统计降尺度的方法的研究进展综述 摘要:统计降尺度方法是将大气环流模式GCMs输出的低分辨率的气象资料转换为流域尺度的主要方法之一,现已发展成为气候学中较为完善的领域.简 ...
- VTK修炼之道30:图像重采样_降采样和升采样技术
1.VTK中的图像重采样实现 图像重采样是指对采样后形成的由离散数据组成的数字图像按所需的像元位置或像元问距重新采样,以构成几何变换后的新图像.重采样过程本质上是图像恢复过程,它用输入的离散数字图像重 ...
- python升采样和插值_图像的降采样与升采样(二维插值)
图像的降采样与升采样(二维插值) 转自:http://www.lofter.com/postentry?from=search&permalink=1cb3111d_6ee9587 1.先说说 ...
- 降采样和上采样(图像)
https://blog.csdn.net/u013146742/article/details/51865522 降采样 又名 下采样或缩小图像.即是采样点数减少.对于一幅N*M的图像来说,如果降采 ...
- python图像降采样_OpenCV:十一、图像上采样和降采样
前言 目标 本章中,将学习: 图像金字塔概念 采样API 代码演示 图像金字塔概念 图像金字塔是图像中对尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构. 图像金 ...
- 图像降采样的实现详解
此篇文章是关于图像降采样的实现,侧重点是为了详细阐述降采样的实现,而无关乎优化,代码基于OpenCV 3.2.0&&C++实现.降采样算法主要采用高斯卷积实现,卷积核采用一维卷积核:d ...
- 下采样matlab代码,SIFT中的降采样和升采样及其MATLAB实现
降采样: 对于一幅图像而言的降采样就是每隔几行.几列得到取一点,组成一个新的图像.以比例因子为2(fact of 2)的降采样来说:就是対一幅图像每隔一行一列取一点.对于n×n的图像就变为n/2×n/ ...
- matlab 降采样 平均,[转载]SIFT中的降采样和升采样及其MATLAB实现
降采样: 对于一幅图像而言的降采样就是每隔几行.几列得到取一点,组成一个新的图像.以比例因子为2(fact of 2)的降采样来说:就是対一幅图像每隔一行一列取一点.对于n×n的图像就变为n/2×n/ ...
最新文章
- HTML的标签描述1
- 零基础学oracle pdf_零基础学动漫插画详细步骤大全
- 使用IntelliJ IDEA的原因
- mysql centos 安装目录在哪_centos中如何查看mysql安装目录在哪
- C# IOCP完成端口模型(简单实用高效)
- Exchange Server 2013多域名证书申请
- scrapy-redis源码解析
- Python中类和对象的概念,面向对象编程
- c 语言输出字符用什么作用是什么,C语言中输出字符串用什么符号
- Multisim14.0详细安装教程图文
- 数字化转型背景下的“新IT职业教育” | 职业教育系列报告(四)
- Git(1)——初始版本控制工具
- 推荐好用的临时邮箱工具,解决注册网站收到的垃圾邮件
- arcpy投影(一)——prj、gtf文件定义、路径及解析(arcmap,arcpro)
- 身体最佳排毒养生睡眠时间表
- 日更文章到底难不难?
- 15个在线网站检测工具
- SCC1事物代码 配置传输
- iOS 上的FlexBox布局
- 大数据与区块链的爱恨情仇,一场技术界相爱相杀的爱恋!