====== MATLAB-Stuff ======
* [[code:matlab:main.m|my rudimentary file skeleton]]
===== Code and other snippets =====
==== Write a multipage TIFF ====
for i=1:100
a(:,:,i)=rand(256);
imwrite(a(:,:,i),'file.tif', 'writemode', 'append')
end
size(a)
Adapted from [[http://www.mathworks.com/support/solutions/en/data/1-6EWKKN/index.html?product=ML&solution=1-6EWKKN|this MATLAB support question]]. Generates a random 256x256 pixel large image, saves it in the ith slice of a while looping through i. In the same loop MATLAB writes the slice to a tif-File with the 'append' write mode, resulting in a random tif-File with a size of 256x256x100 pixels.
==== start matlab headless with some file ====
cd filepath
matlab -r file (WITHOUT .m extension!)
==== turn off warning about big images ====
warning off Images:initSize:adjustingMag
==== Overlay Image over another one ====
Img = imnoise(phantom(64)); % Load 64 pixel wide Phantom and make it noisy
Threshold = graythresh(Img); % calculate Otsu-Threshold
BW = im2bw(Img,Threshold ); % binarize with above Threshold
Color = [155 188 221] % define overlay colour RGB (this is the unibe-presentation color)
Img = im2uint8(mat2gray(Img)); % separate image into 3 channels
red = Img;
green = Img;
blue = Img;
red(BW) = Color(1); % populate channels with thresholded image
green(BW) = Color(2);
blue(BW) = Color(3);
Overlay = cat(3, red, green, blue); % make RGB-image
figure % display everything
subplot(131)
imshow(Img,[])
title('Original')
subplot(132)
imshow(BW,[])
title(['Thresholded with: ' num2str(intmax(class(Img))*Threshold) ]); % see http://www.ana.unibe.ch/~haberthuer/matlab#threshold_image
subplot(133)
imshow(Overlay,[])
title('Overlay')
adapted from [[http://www.mathworks.com/matlabcentral/fileexchange/15818-upslope-area-functions|upslope area functions]]
==== Threshold Image ====
And return Human-readable Threshold
Img = imread('rice.png'); % read Image
Threshold = graythresh(Img); % calculate Otsu Threshold of Image
BW = im2bw(Img,Threshold); % Threshold Image
Bitdepth = intmax(class(Img)); % Get Bitdepth of Image
disp(['Image has been thresholded with ' num2str(Threshold) ' (grayvalue: ' num2str(Bitdepth*Threshold) ')' ]);
figure
subplot(121)
imshow(Img)
title('Original')
subplot(122)
imshow(BW)
title(['Thresholded with: ' num2str(Bitdepth*Threshold) ])
==== Select Components in a (thresholded) Image ====
BW = imread('rice.png'); % Load Image
BW = im2bw(BW,graythresh(BW)); % Threshold Image with Otsu
% inform user
wait=helpdlg('Select rice corns in the picture. Stop with right mouse button','Corn Selection');
uiwait(wait)
% open figure (bwselect outputs figure to screen, so we put it in a subplot
% to start with. when right mouse button is pressed, right figure is updated
figure;
subplot(121)
BW2 = bwselect(BW);
subplot(122)
imshow(BW2)