文档章节

视频图像处理中的频域下采样技术

abcijkxyz
 abcijkxyz
发布于 2016/11/22 16:45
字数 760
阅读 18
收藏 0

         在传统的图像,视频的后处理阶段,一般会涉及到图像大小的缩放问题。这样的操作是为了适配不同屏幕分辨率的大小。例如,对于高档相机拍摄的照片,一般都很大,而要在普通显示器上显示,则要在解码图像数据之后再做缩小操作才能显示到屏幕上。对于手机屏幕,更是如此。那么,能否在图像解码的过程中实现图片的缩小?答案是肯定的。网上开源的jpeg项目早就实现了频域下采样技术。美图秀秀,QQlive等多款桌面图片应用软件也采用了这项技术,并宣称对大图的加载速度快了好几倍。不过,QQlive居然直接使用了这个库!

    

        通过在视频解码中使用频域下采样技术,我们在400M主频的手机上实现了720p的流畅解码,在400M主频的CPU上实现了1080p的视频解码,但不是很流畅。

        频域下采样技术并不是多么高深的算法,下面的matlab代码十分简洁的描述了图像的频域下采样过程。

1.  DCT域下采样算法

% dct频率域下采样算法
% 根据Dugad方法实现
%程序作者: celery.chen@yahoo.com.cn
%2010-10-12

I=imread('456.png');
I=rgb2gray(I);
figure(1);
imshow(I);
[width,height] = size(I);
block_size_x = 8;
block_size_y = 8;
x_block_num = width/block_size_x;
y_block_num = height/block_size_y;


z_dst = zeros(width/2,height/2);

pfun1 = @dct2;

I_freq = blkproc(I,[8 8],pfun1);


for i = 1: x_block_num
    for j = 1 : y_block_num
        
        P = I_freq((i-1)*8+1:(i-1)*8+4,(j-1)*8+1:(j-1)*8+4);
        P = P/2.0;
        z_dst( (i-1)*4 +1 : (i-1)*4 +4, (j-1)*4 +1 : (j-1)*4 +4) = P;  
     
    end
 end

pfun2 = @idct2;

J = blkproc(z_dst,[4 4],pfun2);
J = uint8(round(J));
figure(2);
imshow(J);

2. 另外一种DCT频域下采样算法

% dct频率域下采样算法,根据下面论文提到的算法实现
% 一种高效的DCT域图像下采样方法 中国图像图形学报 2005年4月
%程序作者: celery.chen@yahoo.com.cn ,2010-10
clc;
clear;
I=imread('456.png');
I=rgb2gray(I);
figure(1);
imshow(I);
[width,height] = size(I);
block_size_x = 8*2;
block_size_y = 8*2;
x_block_num = width/block_size_x;
y_block_num = height/block_size_y;


C16 = dctmtx(16);

 C16LL = C16(1:8,1:8);
 C16LH = C16(1:8,9:16);
 C16HL = C16(9:16,1:8);
 C16HH = C16(9:16,9:16);
 
 C8 = dctmtx(8);
 
 P = C16LL*C8';
 P = P/sqrt(2);
  
 Q = C16LH*C8';
 Q = Q/sqrt(2);
 
  E = (P + Q)/2;
  F = (P - Q)/2;



z_dst = zeros(width/2,height/2);

pfun1 = @dct2;

I_freq = blkproc(I,[8 8],pfun1);


for i = 1: x_block_num
    for j = 1 : y_block_num
        
        X1 = I_freq((i-1)*16+1:(i-1)*16+8,(j-1)*16+1:(j-1)*16+8);
				X2 = I_freq((i-1)*16+1:(i-1)*16+8,(j-1)*16+9:(j-1)*16+16);
				
				X3 = I_freq((i-1)*16+9:(i-1)*16+16,(j-1)*16+1:(j-1)*16+8);
				X4 = I_freq((i-1)*16+9:(i-1)*16+16,(j-1)*16+9:(j-1)*16+16);        
				
				
				A  = E*(X1+X3)+F*(X1-X3);
				B  = E*(X2+X4)+F*(X2-X4);
				
				XLL = (A + B) * E' + (A - B) * F';

        z_dst( (i-1)*8 +1 : (i-1)*8 +8, (j-1)*8 +1 : (j-1)*8 +8) = XLL;  
     
    end
 end

pfun2 = @idct2;

J = blkproc(z_dst,[8 8],pfun2);
J = uint8(round(J));
figure(2);
imshow(J);


本文转载自:http://www.cnblogs.com/celerychen/archive/2013/06/05/3588198.html

abcijkxyz
粉丝 63
博文 6196
码字总数 1876
作品 0
深圳
项目经理
私信 提问
[Python图像处理] 二十二.Python图像傅里叶变换原理及实现

版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ https://blog.csdn.net/Eastmount/article/details/89474405 该系列文章是讲解Python OpenCV图像处理知识,前...

Eastmount
04/23
0
0
一幅图弄清DFT与DTFT,DFS的关系

很多同学学习了数字信号处理之后,被里面的几个名词搞的晕头转向,比如DFT,DTFT,DFS,FFT,FT,FS等,FT和FS属于信号与系统课程的内容,是对连续时间信号的处理,这里就不过多讨论,只解释一...

宋押司
2013/07/14
0
0
AudioContext技术和音乐可视化(1)

写在最前,测试博客在这里,直接欣赏完成可视化效果。代码不日在github公开,性能目前巨烂,RadialGradient损耗巨大,优化正在提上日程。 转载注明来源。 扒掉网页上js的烦请留下js里的顶端注...

御坂网络路由器
2018/11/07
0
0
深入浅出解释FFT(七)——fft求频谱图和功率谱密度图

频谱图: 声音频率与能量的关系用频谱表示。在实际使用中,频谱图有三种,即线性振幅谱、对数振幅谱、自功率谱。线性振幅谱的纵坐标有明确的物理量纲,是最常用的。对数振幅谱中各谱线的振幅...

wordwarwordwar
2017/04/02
0
0
AV1:下一代视频标准—约束定向增强滤波器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/81025198 本文来自Xiph.org的创始人Christopher Montgomery在Mozilla博...

livevideostack
2018/07/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
多线程同时加载缓存实现

import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorServi......

暗中观察
昨天
3
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
2
0
组装一台工作游戏两用机

一、配置清单如下: 分类 项目 价格(元) 主板 华硕(ASUS)TUF Z370-PLUS GAMING II 电竞特工 Z370二代 支持9代CPU 1049 CPU 英特尔(Intel) i7 8700K 酷睿六核 盒装CPU处理器 2640 风扇 九...

mbzhong
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部