How can we split a image into blocks by assigning a block variable ?
1 view (last 30 days)
Show older comments
mehmet irfan gedik
on 28 Dec 2017
Commented: mehmet irfan gedik
on 29 Dec 2017
how can I split an image into pieces of the dimension I want in Matlab and how do I find the average and standard deviation of each? For this I have to enter a block variable from the keyboard, for instance 2, 3 ,4 etc. and the image will be split into 2x2, 3x3, 4x4 blocks. Thank you for your help
For instance ; I can split image the image with the following code , First, I resize the image I used to 1024x1024 size and then divide it into 512x512 size 4 blocks and then I find the histogram of each one
clc
close all
dosya = fullfile(matlabroot, 'C:\Users\mirfa.IRFAN\Desktop\Sunum\');
alt_dosya = 'image.jpg';
TumDosya = fullfile(dosya, alt_dosya);
if ~exist(TumDosya, 'file')
TumDosya = alt_dosya;
else
HataMesaj = sprintf('Hata: %s bulunamadi.', TumDosya);
uiwait(warndlg(errorMessage));
return;
end
Image = imread(TumDosya);
if(size(Image,3)>1)
GriImage=uint8(zeros(size(Image,1),size(Image,2)));
for i= 1:size(Image,1)
for j=1:size(Image,2)
GriImage(i,j)=0.2989*Image(i,j,1)+0.5870...
*Image(i,j,2)+0.1140*Image(i,j,3);
end % R=0.2989 ; G=0.5870 ; B=0.1140 ;
end
else
GriImage=Image;
end
GriImage=imresize(GriImage,[1024 1024]);
figure; imshow(GriImage); title('Yeniden ölçekleme');
[satir, sutun, numberOfColorChannels] = size(GriImage);
sat2 = floor(satir/2);
sut2 = floor(sutun/2);
blok1 = GriImage(1:(sat2), 1:(sut2), :);
blok2 = GriImage((sat2)+1:end, 1:(sut2), :);
blok3 = GriImage(1:(sat2), (sut2)+1:end, :);
blok4 = GriImage((sat2)+1:end, (sut2)+1:end, :);
figure, imshow(blok1); title('Blok-1');
figure, imshow(blok2); title('Blok-2');
figure, imshow(blok3); title('Blok-3');
figure, imshow(blok4); title('Blok-4');
kendimhist(blok1); title('blok1 histogram');
kendimhist(blok2); title('blok2 histogram');
kendimhist(blok3); title('blok3 histogram');
kendimhist(blok4); title('blok4 histogram');
% imhist(blok1);imhist(blok2);imhist(blok3);imhist(blok4);
% [pixelCounts, grayLevels] = imhist(blok1);
% minGrayLevel = min(blok1(:));
% maxGrayLevel = max(blok1(:));
and the histogram function used in instead of the matlab imhist() function
function[]=kendimhist(img)
% figure,imshow(img);
% title('Orjinal Resim');
matris=zeros(256,1);
x=(0:1:255);
for i=1:size(img,1)
for j=1:size(img,2)
deger=img(i,j);
matris(deger+1)=matris(deger+1)+1;
end
end
figure ;
bar(x,matris);
axis([0 256 0 45000]);
end
0 Comments
Accepted Answer
More Answers (0)
See Also
Categories
Find more on Computer Vision with Simulink in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!