【发布时间】:2016-07-31 17:01:33
【问题描述】:
我想压缩文件夹 D:\Dr.Ayush Singhal\Ph.D coding and database\compression*.jpg 中的 500 张图像,并将压缩后的图像保存在路径为 D:\Dr.Ayush Singhal 的其他文件夹中\Ph.D 编码和数据库\compression\CompressQuality80\image(k).jpg。
我在 MATLAB 中编写了一种编码。
压缩程序正在同时处理来自指定路径的所有图像,但 保存压缩数据时,代码无法保存指定文件夹中的所有图像。 编码是
clc
clear all;
close all;
**% IMAGE RETRIVING**
dirlist=dir('D:\Dr.Ayush Singhal\Ph.D coding and database\compression\*.jpg');
NF=length(dirlist)
%f=zeros(NF,1);
for k=1:NF
fname = dirlist(k).name;
[path,name,ext] = fileparts(fname);
im=strcat(path,name,ext);
**% IMAGE COMPRESSION**
im=imread(im);
im=rgb2gray(im);
im=imresize(im,5);
im=imcrop(im,[0 0 480 640]);
whos im
[row,col]=size(im);
row=double(fix(row/8))*8;
col=double(fix(col/8))*8;
width=col;
height=row;
im=imcrop(im,[0 0 width height]);
a22=im;
%a22=im(:,:,3);
var4=a22;
a22=double(a22)-128; %%%%Remember that DCT works only data range of
-128 to %+127%%%%%%%%
fun=@dct2;
a222=blkproc(a22,[8 8],fun); %%%%Shows the DCT2 of pixel value%%%%%%
QU=quntnew13(width,height); %%%%%%Quantization table to be used%%%%%%
a2=a222./QU; %Value After dividing with Quantization table %%
r=1;
while(r<=height)
c=1;
while(c<=width)
a4=a2(r,c);
if(a4<0)
x32(r,c)=-1;
x3(r,c)=abs(a4);
else
if(a4>0)
x4(r,c)=a4;
x42(r,c)=1;
end
end
c=c+1;
end
r=r+1;
end
x3; %%%%%%%%%Negative pixel values%%%%
x4; %%%%%%%%%positive pixel values%%%%
x32=x32+x42; %%%%%%%%%Selecting only negative value as -1%%%%%
x=x3+x4; %%DCT values only posive value(Negative also in posive form)%%%
x11=mod(x,1); %%Removing Fractional part%%%%%
x111=x-x11; %Taking only integer values%%%
X2=x111;
x111=X2;
x333=x111+x11;
x33=x333.*x32;\
a21=x33.*QU;
fun1=@idct2;
x34=blkproc(a21,[8 8],fun1);
X6=x34+128;
X6=uint8(X6);
im1=X6;
*****% COMPRESSED IMAGE WRITING*****
imwrite(im1,'D:\Dr.Ayush Singhal\Ph.D coding and database\compression\CompressQuality80\image(k).jpg','quality',80);
end
【问题讨论】:
-
你一遍又一遍地重写文件
image(k).jpg,对吗?或者你想要创建几个文件image(1).jpg、image(2).jpg、image(3).jpg等等? -
是的,我想为不同的图像使用不同的名称。实际上,image(k) 中 k 的值是简化图像名称。每次将图像重命名为 image(k) 时,我只得到最后一个 imwrite 图像。他们的语法是将多个图像保存在同一个文件夹中吗?
标签: image matlab image-compression