Differences

This shows you the differences between two versions of the page.


matlab [2020/06/10 21:38] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +====== MATLAB-Stuff ======
 +  * [[code:matlab:main.m|my rudimentary file skeleton]]
  
 +===== Code and other snippets =====
 +==== Write a multipage TIFF ====
 +<code MATLAB>
 +for i=1:100
 +    a(:,:,i)=rand(256);
 +    imwrite(a(:,:,i),'file.tif', 'writemode', 'append')
 +end
 +size(a)
 +</code>
 +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 i<sup>th</sup> 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 ====
 +<code MATLAB>warning off Images:initSize:adjustingMag</code>
 +==== Overlay Image over another one ====
 +<code MATLAB>
 +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')
 +</code>
 +adapted from [[http://www.mathworks.com/matlabcentral/fileexchange/15818-upslope-area-functions|upslope area functions]]
 +
 +==== Threshold Image ====
 +And return Human-readable Threshold
 +<code MATLAB>
 +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) ])
 +</code>
 +
 +==== Select Components in a (thresholded) Image ====
 +<code MATLAB>
 +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)
 +</code>