当前位置:首页 » 文件管理 » 灰度级压缩

灰度级压缩

发布时间: 2022-08-31 03:49:19

⑴ 动态规划算法如何实现 .bmp灰度图像压缩的压缩与解压缩啊

诶,转回来了。但是还差一点。。到底是哪呢。。

⑵ 图像处理颜色,纹理,形状matlab程序

运行效果:

测试图像:

纹理特征提取程序:

function T =coocurrence(Image)

Color= imread(Image);

Gray=rgb2gray(Color);

[M,N] = size(Gray);


%为了减少计算量,对原始图像灰度级压缩,将Gray量化成16级

for i = 1:M

for j = 1:N

for n = 1:256/16

if (n-1)*16<=Gray(i,j)&Gray(i,j)<=(n-1)*16+15

Gray(i,j) = n-1;

end

end

end

end

%计算四个共生矩阵P,取距离为1,角度分别为0,45,90,135

P = zeros(16,16,4);

for m = 1:16

for n = 1:16

for i = 1:M

for j = 1:N

if j<N&Gray(i,j)==m-1&Gray(i,j+1)==n-1

P(m,n,1) = P(m,n,1)+1;

P(n,m,1) = P(m,n,1);

end

if i>1&j<N&Gray(i,j)==m-1&Gray(i-1,j+1)==n-1

P(m,n,2) = P(m,n,2)+1;

P(n,m,2) = P(m,n,2);

end

if i<M&Gray(i,j)==m-1&Gray(i+1,j)==n-1

P(m,n,3) = P(m,n,3)+1;

P(n,m,3) = P(m,n,3);

end

if i<M&j<N&Gray(i,j)==m-1&Gray(i+1,j+1)==n-1

P(m,n,4) = P(m,n,4)+1;

P(n,m,4) = P(m,n,4);

end

end

end

if m==n

P(m,n,:) = P(m,n,:)*2;

end

end

end


% 对共生矩阵归一化

for n = 1:4

P(:,:,n) = P(:,:,n)/sum(sum(P(:,:,n)));

end

%对共生矩阵计算能量、熵、惯性矩、相关性4个纹理参数

H = zeros(1,4);

I = H;

Ux = H; Uy = H;

deltaX= H; deltaY = H;

C =H;

for n = 1:4

E(n) = sum(sum(P(:,:,n).^2)); %%能量

for i = 1:16

for j = 1:16

if P(i,j,n)~=0

H(n) = -P(i,j,n)*log(P(i,j,n))+H(n); %%熵

end

I(n) = (i-j)^2*P(i,j,n)+I(n); %%惯性矩

Ux(n) = i*P(i,j,n)+Ux(n); %相关性中μx

Uy(n) = j*P(i,j,n)+Uy(n); %相关性中μy

end

end

end

for n = 1:4

for i = 1:16

for j = 1:16

deltaX(n) = (i-Ux(n))^2*P(i,j,n)+deltaX(n); %相关性中σx

deltaY(n) = (j-Uy(n))^2*P(i,j,n)+deltaY(n); %相关性中σy

C(n) = i*j*P(i,j,n)+C(n);

end

end

C(n) = (C(n)-Ux(n)*Uy(n))/deltaX(n)/deltaY(n); %相关性

end


%求能量、熵、惯性矩、相关性的均值和标准差作为最终8维纹理特征

a1 = mean(E) ;

b1 = sqrt(cov(E));

a2 = mean(H) ;

b2 = sqrt(cov(H));

a3 = mean(I);

b3 = sqrt(cov(I));

a4 = mean(C);

b4 = sqrt(cov(C));

T=[a1,a2,a3,a4,b1,b2,b3,b4];

T=T/sum(T);


图像匹配检索程序:

function [Sorted, ISorted,nResults,files]=searchImage(imageName, modelName)

% 找到最相近的图像

[Sorted, ISorted] = sort(Similarity);


Sorted=Sorted/sum(Sorted);

switch similaritymesure>Sorted(Nfiles)

case 1

nResults=Nfiles;

msgbox(['调节相似度过大,请重新定值,最大值为' num2str(Sorted(Nfiles))]);

case 0

for i=1:Nfiles

if Sorted(i)>=similaritymesure

nResults=i;

break;

end

end

end

⑶ matlab 对原始图像灰度级压缩,将Gray量化成16级 下面的这个代码是什么意思 有没有会matlab的

直接从灰度矩阵转换,转换到A级:
if isa(im_mat,'uint8')
im_mat = floor(im_mat/255*A-1);
end
本题,则为
if isa(im_mat,'uint8')
im_mat = floor(im_mat/255*15);
end
即可

⑷ 线性扩展与对数非线性扩展各有什么特点

非线性控制系统中会出现一些在线性系统中不可能发生的奇特现象,归纳起来有如下几点:
①线性系统的稳定性和输出特性只决定于系统本身的结构和参数。而非线性系统的稳定性和输出动态过程,不仅与系统的结构和参数有关,而且还与系统的初始条件和输入信号大小有关。例如,在幅值大的初始条件下系统的运动是收敛的(稳定的),而在幅值小的初始条件下系统的运动却是发散的(不稳定的),或者情况相反。
②非线性系统的平衡运动状态,除平衡点外还可能有周期解。周期解有稳定和不稳定两类,前者观察不到,后者是实际可观察到的。因此在某些非线性系统中,即使没有外部输入作用也会产生有一定振幅和频率的振荡,称为自激振荡,相应的相轨线为极限环。改变系统的参数可以改变自激振荡的振幅和频率。这个特性可应用于实际工程问题,以达到某种技术目的。例如,根据所测温度来影响自激振荡的条件,使之振荡或消振,可以构成双位式温度调节器。
③线性系统的输入为正弦函数时,其输出的稳态过程也是同频率的正弦函数,两者仅在相位和幅值上不同。但非线性系统的输入为正弦函数时,其输出则是包含有高次谐波的非正弦周期函数,即输出会产生倍频、分频、频率。

⑸ 为什么jpeg压缩对每个子图像的像素进行灰度级移动

像素的灰度是连续的。
所以在一片区域中,相邻像素之间灰度值的差别可能很小。如果我们只记录第一个像素的灰度,其它像素的灰度都用它与前一个像素灰度之差来表示。

⑹ 如何用哈夫曼编码对图像进行压缩

% 演示图象的哈夫曼编解码过程
% chenyong 2009.04.20

clear all;
close all;
clc;
Dimens = 256; % 矩阵维数,假设矩阵为方阵即256*256
src_size = Dimens^2; % 矩阵元素的个数
gray_level = 9; % 灰度级

src = randn(Dimens); %产生模拟图像矩阵,满足正态分布,零均值,方差为1
%src = randint(Dimens,Dimens,gray_level); % 产生随机图像矩阵,灰度值为0~63,满足均匀分布
src_one = reshape(src,1,src_size);
src_max = max(src_one);
src_min = min(src_one);
quan = linspace(src_min,src_max,gray_level); % 产生均匀量化区间
src_d = []; % 数字矩阵
for row = 1:Dimens % 逐点量化
for vol = 1:Dimens
diff = abs(src(row,vol)-quan);
[min_diff,min_index] = min(diff);
quan_gray = min_index -1;
src_d(row,vol) = quan_gray;
end
end

%将数字图像矩阵还原成模拟矩阵
src_a = [];
quan_space = quan(2)-quan(1);
for row = 1:Dimens
for vol = 1:Dimens
src_a(row,vol) = src_d(row,vol) * quan_space + src_min;
end
end

% prob数组保存图像中各灰度出现的概率
prob = [];
for src_value=0:(gray_level-1)
index = find(src_d==src_value);
i = src_value + 1;
prob(i) = length(index)/src_size;
end

% 画出直方图
% stem(0:gray_level-1,prob);
% xlabel('灰度值');
% ylabel('概率');
% title('灰度直方图');

% huffman编码
p = prob;
n=length(p);
q=p;
m=zeros(n-1,n);
for i=1:n-1
[q,l]=sort(q);
m(i,:)=[l(1:n-i+1),zeros(1,i-1)];
q=[q(1)+q(2),q(3:n),1];
end
bre=zeros(n-1,n);
bre(n-1,1)=0+j; %虚部表示当前的二进制数的位数,以下类似
bre(n-1,2)=1+j;
for time=1:n-2
loc_1 = find(real(m(n-time,:))==1);
prebit = bre(n-time,loc_1);
bre(n-time-1,1) = (real(prebit)*2 + 0) + j*(imag(prebit)+1);
bre(n-time-1,2) = (real(prebit)*2 + 1) + j*(imag(prebit)+1);

loc_not1 = find(real(m(n-time,:))>1);
bre(n-time-1,3:3+time-1) = bre(n-time,loc_not1);
end
[m1,index] = sort(m(1,:));
code = bre(1,index);
code_data = real(code);
code_bits = imag(code);
disp(['gray level',' ', 'huffman code']);
for i = 1:length(code)
disp([num2str(i-1),' ' ,num2str(dec2bin(code_data(i)))]);
disp([num2str(i-1),' ' ,num2str(dec2bin(code_data(i),code_bits(i)))]);
end
code_binary = dec2bin(code_data);

%逐点编码
out = [];
for row = 1:Dimens
for vol = 1:Dimens
now_gray = src_d(row,vol);
now_code = code_binary(now_gray+1,:);
now_bits = code_bits(now_gray+1);
now_code = now_code(end-now_bits+1:end);
out = [out, now_code];
end
end

%计算压缩比
real_bitnum = length(out);
bitnum_no_huffman = src_size*nextpow2(gray_level);
comp_ratio =bitnum_no_huffman/real_bitnum;
Lavg = real_bitnum/src_size;
Hshannon = (-1)*prob*(log2(prob))';
disp(['Lavg = ',num2str(Lavg)]);
disp(['normal bit num = ',num2str(nextpow2(gray_level))]);
disp(['comp_ratio = ',num2str(comp_ratio)]);
disp(['Hshannon = ',num2str(Hshannon)]);

⑺ 对灰度图像进行霍夫曼编码,用Matlab怎么操作

给你一段程序,自己研究下吧!

clc
clear
close all;
%定义HufData/Len为全局变量的结构体
global HufData;
global Len
disp('计算机正在准备输出哈夫曼编码结果,请耐心等待……');
%原始码字的灰度
a=imread('kids.tif');

%分区画出原始图像和灰度直方图
figure;
subplot(1,2,1)
imshow(a);
%取消坐标轴和边框
axis off
box off
title('MATLAB自带图像','fontsize',13);
subplot(1,2,2);
axis off
box off
imhist(a);
title('图像灰度直方图','fontsize',13);
%图像的灰度统计
GrayStatistics=imhist(a);
GrayStatistics=GrayStatistics';
GrayRatioo=GrayStatistics/sum(GrayStatistics);
GrayRatioNO=find(GrayRatioo~=0);
Len=length(GrayRatioNO);
%初始化灰度集,防止系统随即赋予其垃圾值
GrayRatio=ones(1,Len);

for i=1:Len
GrayRatio(i)=GrayRatioo(i);
end

GrayRatio=abs(sort(-GrayRatio));
%将图像灰度概率赋予结构体
for i=1:Len
HufData(i).value=GrayRatio(i);
end

% 哈夫曼编码/霍夫曼编码
HuffmanCode(Len);
%输出码字

zippedHuffman=1;
for i=1:Len
tmpData=HufData(i).code;
str='';
for j=1:length(tmpData)
str=strcat(str,num2str(tmpData(j)));
zippedHuffman=zippedHuffman+1;
end
disp(strcat('a',num2str(i),'= ',str))
end
i;
%计算计算机一共输出多少个哈夫曼编码/霍夫曼编码
zippedHuffman;
%计算在删去0灰度级压缩之前的原始图像字节容量
unzipped_delete=i*8;

%计算压缩比率
ratio_delete=zippedHuffman/unzipped_delete;

%计算图像的压缩比率
ad=num2str(ratio_delete*100);
str2=strcat(ad,'%');
disp(strcat('哈夫曼编码压缩比率','= ',str2))

%子程序:哈夫曼编码/霍夫曼编码函数HuffmanCode.m
function HuffmanCode(OriginSize)
global HufData;
global Len
for i=1:Len
%%霍夫曼编码树左边纪录为1
HufData(i).left=1;
%%霍夫曼编码树右边纪录为0
HufData(i).right=0;
%%输出码初始化为0
HufData(i).code=[];
%%排序列表初始化
SortList(i).symbol=i;
SortList(i).value=HufData(i).value;
end
%初始化原始消息数目
newsymbol=OriginSize;
for n=OriginSize:-1:2
%将N个消息进行排序
SortList=sortdata(SortList,n);
%将最后两个出现概率最小的消息合成一个消息
newsymbol=newsymbol+1;
HufData(newsymbol).value=SortList(n-1).value+SortList(n).value;
HufData(newsymbol).left=SortList(n-1).symbol;
HufData(newsymbol).right=SortList(n).symbol;
%将消息添加到列队的最后,为N-1个消息重新排序作好准备
SortList(n-1).symbol=newsymbol;
SortList(n-1).value=HufData(newsymbol).value;
end
%遍历霍夫曼树,获得霍夫曼编码/哈夫曼编码
visit(newsymbol,Len,[]);
end

%子程序:冒泡排序法函数sortdata.m
function reData=sortdata(SortList,n)
%根据消息概率进行排序
for k=n:-1:2
for j=1:k-1
min=SortList(j).value;
sbl=SortList(j).symbol;
if(min<SortList(j+1).value)
SortList(j).value=SortList(j+1).value;
SortList(j+1).value=min;
SortList(j).symbol=SortList(j+1).symbol;
SortList(j+1).symbol=sbl;
end
end
end
reData=SortList;
end

%子程序:遍历哈夫曼编码/霍夫曼编码树搜索函数visit.m
function visit(node,n,ocode)
global HufData
if node<=n
%如果没有哈夫曼编码/霍夫曼编码树的子接点直接输出原始码,这里为空码([])
HufData(node).code=ocode;
else
if(HufData(node).left>0)
%遍历左分支接点输出1,这里采用子函数嵌套调用
ocode1=[ocode 1];
visit(HufData(node).left,n,ocode1);
end
if(HufData(node).right>0)
%遍历右分支接点输出0,这里采用子函数嵌套调用
ocode2=[ocode 0];
visit(HufData(node).right,n,ocode2);
end
end
end

⑻ 高手救命:要把256灰度级的图像压缩为64灰度级的图像,我该怎么做有什么软件可以做到

说实话我也不太清楚,你所说的灰度级是不是指局部亮度啊?
一张图片他的灰度是不可能是一致的,如果你要做到一致的话除非你用单色了,但是没么效果可言了。
如果有什么需要可以直接说明。
笼统的说用ps将图片的明度降低,然后调整对比度就行了!!

⑼ 用matlab怎么实现图像灰度级的量化,也就是灰度级压缩,从256级量化到16级

可以参考下面的方法。

直接从灰度矩阵转换,转换到A级:

if isa(im_mat,'uint8')

im_mat = floor(im_mat/255*A-1);

end

本题,则为

if isa(im_mat,'uint8')

im_mat = floor(im_mat/255*15);

end

即可

(9)灰度级压缩扩展阅读:

Matlab参考函数

ones( )创建一个所有元素都为1的矩阵,其中可以制定维数,1,2….个变量

zeros()创建一个所有元素都为0的矩阵

eye()创建对角元素为1,其他元素为0的矩阵

diag()根据向量创建对角矩阵,即以向量的元素为对角元素

magic()创建魔方矩阵

horcat C=[A,B],水平聚合矩阵,还可以用cat(1,A,B)

热点内容
德州电气自动化软件编译 发布:2024-10-12 22:18:14 浏览:852
win7系统怎么清理ftp 发布:2024-10-12 22:08:17 浏览:872
linux查看所有目录 发布:2024-10-12 22:07:05 浏览:16
协同演化算法 发布:2024-10-12 21:40:53 浏览:700
android下载功能 发布:2024-10-12 21:31:22 浏览:610
压缩垃圾池 发布:2024-10-12 21:15:37 浏览:593
嵌入式系统如何配置共享文件夹 发布:2024-10-12 21:02:26 浏览:272
我的世界别人服务器怎么找要塞 发布:2024-10-12 20:52:28 浏览:562
讯飞sdkandroid 发布:2024-10-12 20:51:43 浏览:406
编程字母编码 发布:2024-10-12 20:46:42 浏览:246