资源简介
对于颜色不太丰富的彩色图像来说,用 24 位存储真彩色存在一定的浪费。如果 24 位彩色转成 256 色图像,则可以将数据压缩到原来的 1/3。但是,压缩的过程中可能存在失真。因此,保持颜色最小失真的情况下,选择保留主要颜色,去除非主要的颜色是压缩算法的重
点。-
代码片段和文件信息
function [IImap]=Truergbto256(Filen)
%% -----------------------------------------------
% EXPLAIN: 24位RGB真彩色图像转256色图像程序
%
% INPUT: File:图像文件名
% n:数据预处理时的参数,即舍弃原数据低位的位数
%
% OUTPUT: II: 转换后的图像数据,
% map:256色图像的调色板
% 并转换后得到的256色图像写入文件
%
% AUTHOR:Yang Hao
% DATE: 2019/5/8
%% -----------------------------------------------
%tic %计时
img=imread(File);
[MNdim]=size(img);
if dim~=3 || ~isa(img‘uint8‘) % 输入文件不是24位真彩色图像则报错并结束程序
error(‘Error!!! Please enter the correct 24-bit true color image‘);
end
Iold=img;%保存原数据,方便后续计算
%% 数据预处理
img=floor(double(img)/2^n);%舍弃低位n位数据
% 分别读取R、G、B值
R=img(::1);
G=img(::2);
B=img(::3);
% 将R、G、B整合为一个唯一整数数组,一个整数唯一代表了一种颜色
color=(double(R)*10^4+double(G)*10^2+double(B));
sta = tabulate(color(:))‘;%统计各个整数符号的概率
sta(:find(sta(2:)==0))=[];%删除概率为0的列
symb = sta(1:);% 所有出现整数符号数组,
freq = sta(3:);% 所有出现整数符号的概率数组,
%% 调色板创建
[~sortindex] = sort(freq‘descend‘);%概率数组有高到底排序
symb = symb(sortindex)‘; %按概率排序的符号
if length(symb)>256 % 若原图像颜色小于256种,则全部颜色作为调色板颜色,否则取概率前256种颜色
symb = symb(1:256);
end
% 恢复整数代表的唯一颜色,三个分量分别存储为r、g、b
r=floor(symb/10000);
g=floor(mod(symb10000)/100);
b=floor(mod(symb100
- 上一篇:BPSK调制解调MATLAB程序
- 下一篇:copula函数
相关资源
- 冈萨雷斯数字图像处理matlab版(第三
- p文件,MATLAB的
- 数字图像处理radon matlab变换算法代码
- matlab2019运动目标检测--数字图像处理
- 数字图像处理作业canny边缘检测坎尼边
- 数字图像处理 MATLAB 大作业 代码及其
- 遥感影像融合_数字图像处理的matlab程
- 数字图像处理使用matlab进行采样量化
- 傅里叶变化频谱图及频域滤波
- matlab数字图像处理之几何变换将图像
- matlab数字图像处理之图像几何变换
- 数字图像课程设计MATLAB实现简单找茬
- 数字图像处理空间域图像增强
- 基于MATLAB-GUI图形界面的数字图像处理
- 数字图像处理期末大作业.doc
- 数字图像处理|Matlab-数字图像编码实
- 遥感数字图像处理-matlab-主成份及穗帽
- 基于MATLAB数字图像处理的实现和仿真
- 数字图像处理实验报告北科大 matlab
- 遥感数字图像处理内含Matlab)代码
- RGB 、YUV、YIQ 和 YCrCb颜色空间转换的
- 数字图像处理常用测试图片part6
- 现代数字图像处理技术提高及应用案
- 精通MATLAB数字图像处理2015的源代码
- MATLAB数字图像处理外文文献
- 数字图像处理-matlab实验三次
- 基于MATLAB GUI的数字图像处理
- 数字图像处理车辆识别
- 基于Matlab的数字图像处理课程设计
- 数字图像处理(MATLAB版)
评论
共有 条评论