D : \ Dr.Ayush Singhal \ Ph.D 코딩 및 database \ compression * .jpg 폴더에있는 500 개의 이미지를 압축하고 다른 폴더에 압축 된 이미지를 저장하려고합니다. D : \ Dr.Ayush Singhal \ Ph.D 코딩 및 데이터베이스 \ 압축 \ CompressQuality80 \ image (k) .jpg 경로가 있습니다.이미지 압축을위한 matlab 코딩 이미지 작성
나는 MATLAB에서 하나의 코딩을 작성했습니다.
압축 프로그램이 압축 된 데이터를 저장하는 동안 지정된 경로에서 동시에 모든 이미지를 작업하지만 코드는 지정된 폴더의 모든 이미지를 모두 저장할 수 없습니다. 코딩 당신의 문제가 당신의 말에, 그래서 같은 이름 image(k)
을 가진 모든 파일을 저장하는 것입니다
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%%%%%%%%
[email protected];
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;
[email protected];
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' 등 여러 파일을 만드는 것입니다. –
예 이미지마다 다른 이름을 지정하고 싶습니다. 실제로 이미지 (k)의 k 값은 이미지 이름을 단순화합니다. 매번 이미지가 이미지 (k)로 이름이 바뀌고 마지막으로 imwrite 이미지 만 표시됩니다. 그들의 이미지가 같은 폴더에 여러 개의 이미지를 저장하는 것입니다. –