基于88 DCT变换的图像压缩MATLAB实现

news/2025/11/10 10:38:33/文章来源:https://www.cnblogs.com/she20250124/p/19206176

将图像分割为8×8块,进行DCT变换、量化和压缩,最后重建图像并评估压缩效果。

function dctImageCompression(imagePath, quality)% 读取图像if nargin < 1imagePath = 'cameraman.tif'; % 默认图像endif nargin < 2quality = 50; % 默认压缩质量(0-100)end% 读取图像并转换为双精度originalImage = imread(imagePath);if size(originalImage, 3) == 3originalImage = rgb2gray(originalImage);endoriginalImage = im2double(originalImage);% 显示原始图像figure('Name', 'DCT图像压缩', 'Position', [100, 100, 1000, 500]);subplot(2, 3, 1);imshow(originalImage);title(sprintf('原始图像 (%dx%d)', size(originalImage,2), size(originalImage,1)));% 定义8×8量化矩阵 (基于JPEG标准)quantizationMatrix = [16  11  10  16  24  40  51  61;12  12  14  19  26  58  60  55;14  13  16  24  40  57  69  56;14  17  22  29  51  87  80  62;18  22  37  56  68 109 103  77;24  35  55  64  81 104 113  92;49  64  78  87 103 121 120 101;72  92  95  98 112 100 103  99];% 调整量化质量 (quality: 1-100)if quality <= 0quality = 1;elseif quality > 100quality = 100;endif quality < 50scalingFactor = 5000 / quality;elsescalingFactor = 200 - 2 * quality;endquantizationMatrix = floor((quantizationMatrix * scalingFactor + 50) / 100);quantizationMatrix(quantizationMatrix < 1) = 1;% 填充图像使其尺寸为8的倍数[rows, cols] = size(originalImage);paddedRows = ceil(rows / 8) * 8;paddedCols = ceil(cols / 8) * 8;paddedImage = padarray(originalImage, [paddedRows-rows, paddedCols-cols], 'replicate', 'post');% 初始化变量dctCoeffs = zeros(size(paddedImage));quantizedCoeffs = zeros(size(paddedImage));reconstructedImage = zeros(size(paddedImage));% 压缩率统计totalCoeffs = numel(paddedImage);nonZeroCoeffs = 0;% 处理每个8×8块for i = 1:8:paddedRowsfor j = 1:8:paddedCols% 提取当前块block = paddedImage(i:i+7, j:j+7);% DCT变换dctBlock = dct2(block);dctCoeffs(i:i+7, j:j+7) = dctBlock;% 量化quantBlock = round(dctBlock ./ quantizationMatrix);quantizedCoeffs(i:i+7, j:j+7) = quantBlock;% 统计非零系数nonZeroCoeffs = nonZeroCoeffs + nnz(quantBlock);% 反量化dequantBlock = quantBlock .* quantizationMatrix;% IDCT重建reconstructedImage(i:i+7, j:j+7) = idct2(dequantBlock);endend% 裁剪回原始尺寸reconstructedImage = reconstructedImage(1:rows, 1:cols);% 计算压缩率和PSNRcompressionRatio = totalCoeffs / nonZeroCoeffs;mse = mean((originalImage(:) - reconstructedImage(:)).^2);psnr = 10 * log10(1 / mse);% 显示结果subplot(2, 3, 2);imshow(paddedImage);title('填充后的图像');subplot(2, 3, 3);imshow(log(abs(dctCoeffs) + 1), []);colormap(jet); colorbar;title('DCT系数 (对数尺度)');subplot(2, 3, 4);imshow(abs(quantizedCoeffs), [0, max(quantizedCoeffs(:))]);colormap(jet); colorbar;title('量化后的系数');subplot(2, 3, 5);imshow(reconstructedImage);title(sprintf('重建图像 (质量: %d%%)', quality));subplot(2, 3, 6);diffImage = abs(originalImage - reconstructedImage) * 5; % 放大误差imshow(diffImage);title(sprintf('误差图 (x5放大)'));% 显示压缩信息fprintf('图像尺寸: %d x %d\n', cols, rows);fprintf('压缩质量: %d%%\n', quality);fprintf('压缩率: %.2f:1\n', compressionRatio);fprintf('非零系数比例: %.2f%%\n', (nonZeroCoeffs/totalCoeffs)*100);fprintf('PSNR: %.2f dB\n', psnr);fprintf('MSE: %.6f\n', mse);% 保存结果saveas(gcf, 'dct_compression_result.png');
end

示例

% 示例1:使用默认图像和默认质量(50%)
dctImageCompression();% 示例2:指定图像和质量
dctImageCompression('peppers.png', 75);% 示例3:高质量压缩
dctImageCompression('mandril.tif', 90);% 示例4:低质量高压缩
dctImageCompression('satellite.jpg', 10);

算法说明

1. DCT变换核心原理

  • 将8×8图像块转换为频域表示
  • 公式:\(F(u,v) = \frac{1}{4}C(u)C(v)\sum_{x=0}^{7}\sum_{y=0}^{7}f(x,y)\cos\left(\frac{(2x+1)u\pi}{16}\right)\cos\left(\frac{(2y+1)v\pi}{16}\right)\)
  • 其中 \(C(u) = \begin{cases} 1/\sqrt{2} & \text{if } u=0 \\1 & \text{otherwise}\end{cases}\)

2. 量化过程

  • 使用JPEG标准量化矩阵作为基础
  • 根据质量因子调整量化步长:
    • 高质量 → 小步长 → 保留更多细节
    • 低质量 → 大步长 → 更高压缩率

3. 压缩机制

  • 高频分量通常具有较小值,量化后变为零
  • 使用行程编码(RLE)和霍夫曼编码可进一步压缩(本实现中省略)
  • 仅存储非零系数可显著减少数据量

4. 性能评估

  • 压缩率:原始数据量 / 压缩后数据量
  • PSNR:峰值信噪比,衡量重建质量
    \(PSNR = 10 \log_{10}\left(\frac{MAX^2}{MSE}\right)\)
  • MSE:均方误差
    \(MSE = \frac{1}{MN}\sum_{i=0}^{M-1}\sum_{j=0}^{N-1}[I(i,j)-K(i,j)]^2\)

参考代码 把图像分成8×8的图像块进行DCT变换压缩 www.youwenfan.com/contentcnl/83441.html

参数

  1. 量化矩阵:控制不同频率分量的压缩程度

  2. 质量因子:0-100之间的值,控制整体压缩质量

    • 90+:接近无损压缩
    • 70-80:良好视觉质量
    • 50:中等压缩
    • 30以下:明显压缩伪影
  3. 块尺寸:8×8是JPEG标准,平衡计算效率和压缩性能

此实现展示了DCT压缩的核心原理,实际应用中可结合熵编码和更先进的量化策略进一步提升压缩效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/961086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年热门的非膨胀型防火涂料厂家最新推荐权威榜

2025年热门的非膨胀型防火涂料厂家最新推荐权威榜行业背景与市场趋势随着建筑安全标准的不断提高和消防法规的日益严格,防火涂料行业迎来了快速发展期。据中国消防协会最新数据显示,2024年我国防火涂料市场规模已达到…

如何利用outlook大附件插件解决大文件传输难题?

在现代工作环境中,大文件传输常常是一个难题。Outlook大附件插件为用户提供了简便的解决方案,使他们能够轻松发送大型文件。该插件不受附件大小和数量的限制,用户只需通过简单的操作即可上传文件,无需进行压缩或分…

推荐一款专为APP而生的AI运动识别插件

引言: 今日为您推荐一款专门为开发AI运动APP,而量身打造的插件,可以用来开发快速AI运动计时、AI运动计数、AI健身、线上运动赛事、AI体育、AI体测、AI学生体测APP。在当今的开发领域,跨平台开发框架uni-app凭借其高…

信创浪潮下 2025ITSM 厂商选型核心指南:从能用到好用的智能价值升级

信创浪潮下 2025ITSM 厂商选型核心指南:从能用到好用的智能价值升级$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");文章对比主流ITSM产品信创适配与智能能…

检查SSD是否开启了trim

如今默认应该都是开启的,但检查下也没坏处。 $ cat /sys/block/nvme0n1/queue/discard_granularity 我这里是512;AI说非零值说明支持TRIM。 hdparm (包与命令同名)获取或设置 Linux SATA/IDE 驱动的设备参数。 可以…

2025年玻璃钢厂家权威推荐榜单:玻璃钢缠绕管道/一体化泵站/玻璃钢消防水池源头厂家精选

随着我国基础设施建设和环保产业持续推进,玻璃钢制品以其优异的性能在多个领域得到广泛应用。玻璃钢作为纤维增强塑料的俗称,具有轻质高强、耐腐蚀、使用寿命长等显著特点,正逐步替代部分传统材料。 在市政给排水领…

ubuntu24.04: 安装python 3.10.19

一,下载 $ wget https://www.python.org/ftp/python/3.10.19/Python-3.10.19.tar.xz 二,安装 解压: $ xz -d Python-3.10.19.tar.xz $ tar -xvf Python-3.10.19.tar 配置: # ./configure --prefix=/usr/local/soft…

2025年口碑好的活性炭空气过滤器厂家最新TOP实力排行

2025年口碑好的活性炭空气过滤器厂家最新TOP实力排行行业背景与市场趋势随着环境污染问题日益受到关注,空气净化行业迎来了快速发展期。据中国环境保护产业协会最新数据显示,2024年中国空气净化设备市场规模已达到58…

大文件跨国传输怎么合规,确保安全与高效的解决方案

大文件跨国传输已经成为企业运营的常态,但合规性是保证安全和信誉的关键。在进行传输前,企业需对各国的数据保护法律有深入理解,以确保遵循相关规定。同时,选择合适的技术和工具,如高效的数据加密和合规的传输渠道…

AtCoder Beginner Contest 431 题解

只写了 A-F。A 想让 \(x < y\) 变成 \(x \ge y\) 的最小 \(\Delta\) 当且仅当 \(x = y\) 取到,所以 \(\Delta = \max(0, y - x)\)。 code B 直接模拟,记 vs[x] 表示编号为 \(x\) 的部件是否被使用过即可。 code C…

2025年轻钢龙骨厂家权威推荐榜单:龙骨/卡式龙骨/隔墙龙骨源头厂家精选

在建筑工业化与绿色建造理念的深度融合下,轻钢龙骨作为装配式建筑的核心支撑材料,其市场需求持续增长。行业数据显示,2023年全球轻钢龙骨市场规模已达187亿美元,预计2025年将突破210亿美元,年复合增长率稳定在6.2…

常见的跨网文件安全交换系统解析及应用指南

在当今企业信息化发展的背景下,跨网文件安全交换系统变得尤为重要。这类系统能够支持在不同网络之间安全交换文件,保障数据的机密性与完整性。通常,这些系统具备加密传输、身份认证及权限控制等多重安全机制,有效防…

摄影提示词

一 角色 你是使用现代全画幅微单相机进行女性人性摄影的专家,擅长年轻女性人像摄影的构图和审美 拍摄环境 1.舞台 有一个铺着棕色实木地板,金棕色的舞台背景,灯光较为明亮,柔和 2.希腊式弯拱门 一个中型希腊式大理…

2025年比较好的蛇形帘厂家推荐及采购参考

2025年比较好的蛇形帘厂家推荐及采购参考行业背景与市场趋势随着现代建筑设计的不断演进和消费者对家居智能化需求的提升,蛇形帘(又称波形帘)作为窗帘行业的重要创新产品,近年来呈现出快速增长的态势。根据中国建筑…

2025年靠谱的高定全品类五金厂家最新权威实力榜

2025年靠谱的高定全品类五金厂家最新权威实力榜行业背景与市场趋势五金行业作为制造业的基础支撑,近年来随着全球建筑装修市场的持续增长而蓬勃发展。据中国五金制品协会最新数据显示,2024年中国五金行业市场规模已达…

firewalld防火墙关闭后telnet仍然不通的原因

上周部署的时候,机器上的防火墙关闭(firewalld)但是telnet端口却不通,但是把防火墙打开以后配置对应iptables规则就可以通了。 原因: 这是因为防火墙即便关闭,之前加载过得内核过滤规则仍然存在,同时系统默认规则…

2025年11月北京律师推荐排名榜:行业白皮书视角下的十位优质律师

在北京,找律师往往意味着时间紧、标的额高、情绪重。企业主担心合规漏洞被放大,个人担心房产、婚姻、刑案一步走错满盘皆输。北京市司法局2024年行业白皮书显示,北京执业律师已突破5.2万人,律所超3200家,年收案量…

2025年质量好的冰雕施工厂家推荐及选择参考

2025年质量好的冰雕施工厂家推荐及选择参考行业背景与市场趋势冰雕艺术作为冬季景观的重要组成部分,近年来随着文旅产业的蓬勃发展而持续升温。根据中国冰雪产业研究院最新发布的《2024-2025中国冰雪艺术市场分析报告…

2025年北京生态原产地保护产品认证机构权威推荐榜单:生态原产地保护产品认证证书/生态原产地保护产品认证管理办法/生态原产地保护产品认证办理时长源头机构精选。

生态原产地保护产品(PEOP)认证,正成为中国企业提升产品附加值、突破国际贸易壁垒的一张重要“绿色护照”。 生态原产地产品保护制度是中国于2012年首创的认证体系,旨在通过绿色环保、低碳节能、资源节约的严格要求…

如何用 Calibre 轉化爲 PDF

簡單的講,直接在操作欄選擇轉換書籍,然後選擇 PDF 即可,但是導出書籍的格式不一,最好還是有一些約定好的配置,兼顧閱讀和打印,也可以避免版權問題。轉換書籍 -> 輸出格式 PDF 界面外觀 -> 字體 -> 最小…