Pages

Saturday, August 6, 2016

Fuzzy Logic Image Processing


An edge is a boundary between two uniform regions. You can detect an edge by comparing the intensity of neighboring pixels. small intensity differences between two neighboring pixels do not always represent an edge. Instead, the intensity difference might represent a shading effect. The fuzzy logic approach for image processing allows you to use membership functions to define the degree to which a pixel belongs to an edge or a uniform region.

Import RGB Image and Convert to Grayscale

I = imread('peppers.png');
I' = 0.2989*I(:,:,1)+0.5870*I(:,:,2)+0.1140*I(:,:,3); figure; image(I','DataMapping','scaled'); colormap('gray'); title('Input Image in Grayscale'




Convert Image to Double-Precision Data

I = double(I');
Type = class(I'); scaling = double(intmax(Type)); I = I/scaling; 

Obtain Image Gradient

Gx = [-1 1]; Gy = Gx'; Ix = conv2(I,Gx,'same'); Iy = conv2(I,Gy,'same'); figure; image(Ix,'DataMapping','scaled'); colormap('gray'); title('Ix'); figure; image(Iy,'DataMapping','scaled'); colormap('gray'); title('Iy');
Define Fuzzy Inference System (FIS) for Edge Detection
edgeFIS = newfis('edgeDetection');
edgeFIS = addvar(edgeFIS,'input','Ix',[-1 1]); edgeFIS = addvar(edgeFIS,'input','Iy',[-1 1]);
sx = 0.1; sy = 0.1; edgeFIS = addmf(edgeFIS,'input',1,'zero','gaussmf',[sx 0]); edgeFIS = addmf(edgeFIS,'input',2,'zero','gaussmf',[sy 0]);
edgeFIS = addvar(edgeFIS,'output','Iout',[0 1]);
wa = 0.1; wb = 1; wc = 1; ba = 0; bb = 0; bc = .7; edgeFIS = addmf(edgeFIS,'output',1,'white','trimf',[wa wb wc]); edgeFIS = addmf(edgeFIS,'output',1,'black','trimf',[ba bb bc]);
figure subplot(2,2,1); plotmf(edgeFIS,'input',1); title('Ix'); subplot(2,2,2); plotmf(edgeFIS,'input',2); title('Iy'); subplot(2,2,[3 4]); plotmf(edgeFIS,'output',1); title('Iout')


Specify FIS Rules

r1 = 'If Ix is zero and Iy is zero then Iout is white'; r2 = 'If Ix is not zero or Iy is not zero then Iout is black'; r = char(r1,r2); edgeFIS = parsrule(edgeFIS,r); showrule(edgeFIS)

Evaluate FIS

Ieval = zeros(size(I));% Preallocate the output matrix for ii = 1:size(I,1) Ieval(ii,:) = evalfis([(Ix(ii,:));(Iy(ii,:));]',edgeFIS); end


Plot Results

figure; image(I,'CDataMapping','scaled'); colormap('gray'); title('Original Grayscale Image') figure; image(Ieval,'CDataMapping','scaled'); colormap('gray'); title('Edge Detection Using Fuzzy Logic')

Monday, August 1, 2016

Top 10 Open Software for Image Processing Domain


OpenCV was designed for computational efficiency and with a strong focus on real-time applications.


VLFeat open source library implements popular computer vision algorithms specializing in image understanding and local features extraction and matching.
 
BoofCV

BoofCV is an open source Java library for real-time computer vision and robotics applications.
 

Visualization Toolkit (VTK) is an open-source, freely available software system for 3D computer graphics, modeling, image processing, volume rendering, scientific visualization, and information visualization. 


Insight Segmentation and Registration Toolkit (ITK) is an open-source, cross-platform system that provides developers with an extensive suite of software tools for image analysis.


FSL is a comprehensive library of analysis tools for FMRI, MRI and DTI brain imaging data.


Statistical Parametric Mapping refers to the construction and assessment of spatially extended statistical processes used to test hypotheses about functional imaging data.


GIMIAS is a workflow-oriented environment for solving advanced biomedical image computing and individualized simulation problems, which is extensible through the development of problem-specific plug-ins.


3D Slicer is a free and open source software package for image analysis and scientific visualization.


MIA provides a combination of command line tools, plug-ins, and libraries that make it possible run image processing tasks interactively in a command shell and prototype by using the according shell scripting language.