basics (Spring 2015)
Contents
iminfo
info = imfinfo(filename) returns a structure whose fields contain information about an image in a graphics file. filename is a string that specifies the name of the graphics file
clear close all filename = '2013_0115_163116AA.JPG'; info = imfinfo(filename); disp(info)
Filename: 'C:\Users\jloomis1\Google Drive\ece564\2015\basics20...' FileModDate: '16-Jan-2013 22:31:05' FileSize: 607096 Format: 'jpg' FormatVersion: '' Width: 2048 Height: 1536 BitDepth: 24 ColorType: 'truecolor' FormatSignature: '' NumberOfSamples: 3 CodingMethod: 'Huffman' CodingProcess: 'Sequential' Comment: {} Make: 'FUJIFILM' Model: 'FinePix6900ZOOM' Orientation: 1 XResolution: 72 YResolution: 72 ResolutionUnit: 'Inch' Software: 'Digital Camera FinePix6900ZOOM Ver1.00' DateTime: '2013:01:15 16:31:16' YCbCrPositioning: 'Co-sited' Copyright: ' ' DigitalCamera: [1x1 struct] ExifThumbnail: [1x1 struct]
additional fields
which leads us to enter:
disp('info.DigitalCamera'); disp(info.DigitalCamera); if isfield(info,'GPSInfo') disp('info.GPSInfo'); disp(info.GPSInfo); end disp('info.ExifThumbnail'); disp(info.ExifThumbnail);
info.DigitalCamera FNumber: 2.8000 ExposureProgram: 'Normal program' ISOSpeedRatings: 100 ExifVersion: [48 50 49 48] DateTimeOriginal: '2013:01:15 16:31:16' DateTimeDigitized: '2013:01:15 16:31:16' ComponentsConfiguration: 'YCbCr' CompressedBitsPerPixel: 1.5000 ShutterSpeedValue: 6 ApertureValue: 3 BrightnessValue: 3.1100 ExposureBiasValue: 0 MaxApertureValue: 3 MeteringMode: 'Pattern' Flash: 'Flash fired, no strobe return detection fun...' FocalLength: 9.7000 MakerNote: [1x238 double] FlashpixVersion: [48 49 48 48] ColorSpace: 'sRGB' CPixelXDimension: 2048 CPixelYDimension: 1536 InteroperabilityIFD: [1x1 struct] FocalPlaneXResolution: 2678 FocalPlaneYResolution: 2674 FocalPlaneResolutionUnit: 3 SensingMethod: 'One-chip color area sensor' FileSource: 'DSC' SceneType: 'A directly photographed image' info.ExifThumbnail Compression: 'OJPEG' Orientation: 1 XResolution: 72 YResolution: 72 ResolutionUnit: 'Inch' JPEGInterchangeFormat: 1102 JPEGInterchangeFormatLength: 9225 YCbCrPositioning: 'Co-sited'
imread
A = imread(filename) reads a grayscale or color image from the file specified by the string filename.
rgb = imread(filename);
whos rgb
Name Size Bytes Class Attributes rgb 1536x2048x3 9437184 uint8
imshow
imshow(RGB) displays the truecolor image RGB.
small = imresize(rgb,0.3); imshow(small);
imcrop
I = imcrop creates an interactive Crop Image tool associated with the image displayed in the current figure, called the target image. The Crop Image tool is a moveable, resizable rectangle that you can position interactively using the mouse.
rect = [637.5 484.5 732 470]; imshow(rgb); if exist('rect','var') out = imcrop(rgb,rect); hold on x1 = rect(1); y1 = rect(2); x2 = x1+rect(3); y2 = y1+rect(4); plot([x1 x2 x2 x1 x1],[y1 y1 y2 y2 y1],'b-','Linewidth',2); hold off else [out rect] = imcrop; rect end
Warning: Image is too big to fit on screen; displaying at 33%
imwrite
imwrite(A,filename) writes the image A to the file specified by filename in the format specified the file extension.
imwrite(out,'cropped_target.jpg');
imshow(out);
rgb2gray
I = rgb2gray(RGB) converts the truecolor image RGB to a grayscale intensity image I. rgb2gray converts RGB images to grayscale by eliminating the hue and saturation information while retaining the luminance.
g = rgb2gray(out); imshow(g);
imhist
imhist(I) displays a histogram for the image I above a grayscale colorbar. The number of bins in the histogram is specified by the image type. If I is a grayscale image, imhist uses a default value of 256 bins.
imhist(im2double(g));
graythresh
level = graythresh(I) computes a global threshold (level) that can be used to convert an intensity image to a binary image with im2bw. level is a normalized intensity value that lies in the range [0, 1].
%The graythresh function uses Otsu's method, which chooses the threshold % to minimize the intraclass variance of the black and white pixels. level = graythresh(g); fprintf('threshold %g\n',level); hold on plot([level level],[0 1000],'k-','Linewidth',2); hold off
threshold 0.521569
im2bw
BW = im2bw(g,level); imshow(BW);
bwconncomp
CC = bwconncomp(BW) returns the connected components CC found in BW. The binary image BW can have any dimension. CC is a structure with four fields.
CC = bwconncomp(~BW); disp(CC)
Connectivity: 8 ImageSize: [471 733] NumObjects: 21 PixelIdxList: {1x21 cell}
labelmatrix
L = labelmatrix(CC) creates a label matrix from the connected components structure CC returned by bwconncomp. The size of L is CC.ImageSize. The elements of L are integer values greater than or equal to 0.
L = labelmatrix(CC);
whos L
Name Size Bytes Class Attributes L 471x733 345243 uint8
label2rgb
RGB = label2rgb(L) converts a label matrix into an RGB color image for the purpose of visualizing the labeled regions.
RGB = label2rgb(L); imshow(RGB);
histogram (integer based)
imhist(g); hold on plot([100 100],[0 1000],'k-','Linewidth',2); plot([170 170],[0 1000],'k-','Linewidth',2); hold off
simple mask operations
show "inbetween" values;
msk1 = g>100; msk2 = g<170; imshow(msk1&msk2);