當前位置:首頁 » 文件管理 » 灰度級壓縮

灰度級壓縮

發布時間: 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-13 00:14:27 瀏覽:153
解壓菜蛋糕 發布:2024-10-12 23:46:49 瀏覽:9
手機qq鎖上密碼如何解鎖 發布:2024-10-12 23:36:24 瀏覽:464
壓縮機固定架 發布:2024-10-12 23:34:12 瀏覽:665
linux內核有多少行代碼 發布:2024-10-12 23:30:03 瀏覽:231
qq源碼資源網 發布:2024-10-12 23:23:52 瀏覽:21
為什麼web伺服器沒有對應的站點 發布:2024-10-12 22:55:46 瀏覽:780
安卓手機在哪裡下游戲 發布:2024-10-12 22:54:08 瀏覽:406
財年演算法問題 發布:2024-10-12 22:51:50 瀏覽:314
sql最近的 發布:2024-10-12 22:51:38 瀏覽:335