经典小波变换应用——图像压缩到指定大小【MATLAB】

简介: 经典小波变换应用——图像压缩到指定大小【MATLAB】

例如在需要用到指定大小的图像或者需要对指定文件夹下图像批量进行压缩大小,可以使用小波变换进行压缩。


第一步:三通道图像处理


1.1.清除变量


1.2.获取图像


1.3.先判断是否为三通道,不是的话取0,是的话对RGB三通道读取数据


1.4.小波分解(三通道分解)




第二步:设定阈值


2.1.设定指定大小的阈值


2.2.三通道阈值设值\




第三步:重构不同阈值下图像


3.1.对三个通道(RGB)分布进行小波变换


3.2.uint8数据转换


3.3.输出图像


demo:


%软件工具版本为 MATLAB R2019b
%清除变量
clc
clear
close all
%%图像预处理
tic
%%
img=imread('a.jpg');%获取图像
wavename='haar';
level=3;
%三通道图像处理
%先判断是否为三通道,不是的话取0,是的话对RGB三通道读取数据
if ndims(img)==3 %
    imgcolor=1;
    Xr=img(:,:,1);
    Xg=img(:,:,2);
    Xb=img(:,:,3);
else
    imgcolor=0;
end
img=double(img);
%%
%小波分解(三通道分解)
if imgcolor
    [Cr,Sr]=wavedec2(Xr,level,wavename);
    [Cg,Sg]=wavedec2(Xg,level,wavename);
    [Cb,Sb]=wavedec2(Xb,level,wavename);
    C(1,:)=Cr;
    C(2,:)=Cg;
    C(3,:)=Cb;
else
    [C,S]=wavedec2(img,level,wavename);
end
%设置阈值
T=4.5544;%T的值决定了变换后的图像大小
C(abs(C)<=T)=T;
%重构不同阈值下图像
if imgcolor
    Cr=C(1,:);
    Cg=C(2,:);
    Cb=C(3,:);
    Ar=waverec2(Cr,Sr,wavename);
    Ag=waverec2(Cg,Sg,wavename);
    Ab=waverec2(Cb,Sb,wavename);
    A(:,:,1)=uint8(round(Ar));
    A(:,:,2)=uint8(round(Ag));
    A(:,:,3)=uint8(round(Ab));
else
    A=waverec2(C,wavename);
    A=unit8(round(A));
end
A=uint8(A);
imwrite(A,'b.jpg');%重构后的图像
toc

项目地址:github.com/kivenyangmi…



相关文章
|
8月前
|
异构计算
基于MATLAB的NSCT(非下采样轮廓波变换)实现
基于MATLAB的NSCT(非下采样轮廓波变换)实现
266 5
|
8月前
|
运维 算法
【故障诊断】基于最小熵反卷积、最大相关峰度反卷积和最大二阶环平稳盲反卷积等盲反卷积方法在机械故障诊断中的应用研究(Matlab代码实现)
【故障诊断】基于最小熵反卷积、最大相关峰度反卷积和最大二阶环平稳盲反卷积等盲反卷积方法在机械故障诊断中的应用研究(Matlab代码实现)
250 0
|
7月前
|
编解码 算法 数据可视化
MATLAB 实现同步压缩小波变换
MATLAB 实现同步压缩小波变换
498 3
|
8月前
|
计算机视觉
【图像处理】基于MATLAB的短时傅里叶变换和小波变换及图像处理(Matlab实现)
【图像处理】基于MATLAB的短时傅里叶变换和小波变换及图像处理(Matlab实现)
160 2
|
8月前
|
存储 算法 安全
【多目标工程应用】基于MOGWO的地铁隧道上方基坑工程优化设计研究(Matlab代码实现)
【多目标工程应用】基于MOGWO的地铁隧道上方基坑工程优化设计研究(Matlab代码实现)
130 4
|
7月前
|
存储 人工智能 移动开发
利用 Hough 变换处理量测得到的含杂波的二维坐标,解决多目标航迹起始问题(Matlab代码实现)
利用 Hough 变换处理量测得到的含杂波的二维坐标,解决多目标航迹起始问题(Matlab代码实现)
185 0
|
8月前
|
机器学习/深度学习 算法 5G
【提高晶格缩减(LR)辅助预编码中VP的性能】向量扰动(VP)预编码在下行链路中多用户通信系统中的应用(Matlab代码实现)
【提高晶格缩减(LR)辅助预编码中VP的性能】向量扰动(VP)预编码在下行链路中多用户通信系统中的应用(Matlab代码实现)
125 1
|
8月前
|
机器学习/深度学习 存储 算法
【水下机器人建模】基于QLearning自适应强化学习PID控制器在AUV中的应用研究(Matlab代码实现)
【水下机器人建模】基于QLearning自适应强化学习PID控制器在AUV中的应用研究(Matlab代码实现)
481 0
|
8月前
|
机器学习/深度学习 算法 Windows
基于ADMM应用于水蜜桃采摘配送联合优化问题研究(Matlab代码实现)
基于ADMM应用于水蜜桃采摘配送联合优化问题研究(Matlab代码实现)
172 0
|
8月前
|
机器学习/深度学习 安全 Serverless
【创新未发表】【故障诊断】基于连续小波变换-CNN, ResNet, CNN-SVM, CNN-BiGRU, CNN-LSTM的故障诊断研究【凯斯西储大学数据】(Matlab代码实现)
【创新未发表】【故障诊断】基于连续小波变换-CNN, ResNet, CNN-SVM, CNN-BiGRU, CNN-LSTM的故障诊断研究【凯斯西储大学数据】(Matlab代码实现)
569 0

热门文章

最新文章