LESSER THE MARKS MORE IS THE HUNGER TO DO WELL AND YOU EXPLORE NEW WAYS TO DO THINGS BETTER. SO DONT WORRY ABOUT MARKS


Saturday, August 30, 2014

ANOTHER LIST OF PROJECS


Topic
 1-Computer Aided Detection of Solid Breast Nodules: Performance Evaluation of Support Vector Machine and K- Nearest Neighbor Classifiers


Abstract—Breast Cancer is one of the major health concerns of women all over the world. Computer Aided Detection (CAD) aids radiologists for the early detection of abnormalities in the breast masses. Abnormalities in the breast may be cancerous or non cancerous. This work proposes an effective CAD system that considerably reduces the misclassification rates of these abnormalities. 60 mammogram images were taken and subjected to Segmentation and Feature Extraction techniques. K-means clustering algorithm is employed for segmentation and Fast Fourier Transform has been employed for the extraction of features. The unique set of feature vectors is given to the classification module. The classification of solid masses of breast nodule is done using Supervised Classifiers Support Vector Machine (SVM) and K- Nearest Neighbor (K- NN). The investigation reveals that SVM outperforms K- NN in terms of sensitivity, specificity and accuracy.
Index Terms—Mammogram, Segmentation, K- means clustering, Feature Extraction, Fast Fourier Transform, Support Vector Machine, K- Nearest Neighbor Classifier.
2-

 Textural Features Based Computer Aided Diagnostic System for Mammogram Mass Classification


Abstract— Computer Aided Diagnosis (CAD) could be applied as a solution to reduce the chances of human errors and helps Medical Practioners in the correct classification of Breast Masses. This paper emphasizes an algorithm for the early detection of breast masses. Textural analysis is one of the efficient methods for the early detection of abnormalities. The paper enumerates an efficient Discrete Wavelet Transform (DWT) algorithm and a modified Grey-Level Co-Occurrence Matrix (GLCM) method for textural feature extraction from segmented mammogram images. Each tissue pattern after classification is characterized into Benign and Malignant masses. A total of 148 mammogram images were taken from Mini MIAS database and solid breast nodules were classified into benign and malignant masses using supervised classifiers. The classifier used is Radial Basis Function Neural Network (RBFNN). The proposed system has a high potential for cancer detection from digitized screening mammograms.
Index Terms—Mammogram, Pre-processing, Feature Extraction, Grey Level Co-occurrence Matrix, Discrete Wavelet Transform, Radial Basis Function Neural Networks.

3-
A non-extensive entropy feature and its application to texture classification
a b s t r a c t This paperproposesanewprobabilisticnon-extensiveentropyfeaturefortexturecharacterization, based onaGaussianinformationmeasure.Thehighlightsofthenewentropyarethatitisboundedby finite limitsandthatitisnon-additiveinnature.Thenon-additivepropertyoftheproposedentropy makes itusefulfortherepresentationofinformationcontentinthenon-extensivesystemscontaining some degreeofregularityorcorrelation.Theeffectivenessoftheproposedentropyinrepresentingthe correlatedrandomvariablesisdemonstratedbyapplyingitforthetextureclassification problemsince texturesfoundinnaturearerandomandatthesametimecontainsomedegreeofcorrelationor regularity atsomescale.Thegraylevelco-occurrenceprobabilities(GLCP)areusedforcomputingthe entropyfunction.Theexperimentalresultsindicatehighdegreeoftheclassification accuracy.The performance ofthenewentropyfunctionisfoundsuperiortootherformsofentropysuchasShannon, Renyi,TsallisandPalandPalentropiesoncomparison.Usingthefeaturebasedpolarinteractionmaps (FBIM) theproposedentropyisshowntobethebestmeasureamongtheentropiescomparedfor representingthecorrelatedtextures.
4-
Content-based Image Retrieval by Information Theoretic Measure
ABSTRACT
Content-based image retrieval focuses on intuitive and efficient methods for retrieving images from databases
based on the content of the images. A new entropy function that serves as a measure of information content in an
image termed as ‘an information theoretic measure’ is devised in this paper. Among the various query paradigms,
query by example (QBE) is adopted to set a query image for retrieval from a large image database. In this paper,
colour and texture features are extracted using the new entropy function and the dominant colour is considered as a
visual feature for a particular set of images. Thus colour and texture features constitute the two-dimensional feature
vector for indexing the images. The low dimensionality of the feature vector speeds up the atomic query. Indices
in a large database system help retrieve the images relevant to the query image without looking at every image
in the database. The entropy values of colour and texture and the dominant colour are considered for measuring
the similarity. The utility of the proposed image retrieval system based on the information theoretic measures is
demonstrated on a benchmark dataset.
Keywords: Image retrieval, fuzzy features, descriptors, entropy, indexing
5-
A practical design of high-volume steganography
in digital video files
Abstract In this research, we consider exploiting the large volume of audio/video
data streams in compressed video clips/files for effective steganography. By observing
that most of the distributed video files employ H.264 Advanced Video Coding
(AVC) and MPEG Advanced Audio Coding (AAC) for video/audio compression,
we examine the coding features in these data streams to determine appropriate data
for modification so that the reliable high-volume information hiding can be achieved.
Such issues as the perceptual quality, compressed bit-stream length, payload of
embedding, effectiveness of extraction and efficiency of execution will be taken into
consideration. First, the effects of using different coding features are investigated
separately and three embedding profiles, i.e. High, Medium and Low, which indicate
the amount of payload, will then be presented. The High profile is used to embed the
maximum amount of hidden information when the high payload is the only major
concern in the target application. The Medium profile is recommended since it is
designed to achieve a good balance among several requirements. The Low profile is
an efficient implementation for faster information embedding. The performances of
these three profiles are reported and the suggested Medium profile can hide more
than 10%of the compressed video file size in common Flash Video (FLV) files.
Keywords Steganography · H.264/AVC ·MPEG AAC· Information hiding

6-
Block Matching Algorithms
For Motion Estimation
Abstract—This paper is a review of the block matching
algorithms used for motion estimation in video compression. It
implements and compares 7 different types of block matching
algorithms that range from the very basic Exhaustive Search to
the recent fast adaptive algorithms like Adaptive Rood Pattern
Search. The algorithms that are evaluated in this paper are
widely accepted by the video compressing community and have
been used in implementing various standards, ranging from
MPEG1 / H.261 to MPEG4 / H.263. The paper also presents a
very brief introduction to the entire flow of video compression.
Index Terms— Block matching, motion estimation, video
compression, MPEG, H.261, H.263

7-
Visual Cryptography Scheme for Color Image Using Random Number
with Enveloping by Digital Watermarking
Abstract
Visual Cryptography is a special type of encryption technique to
obscure image-based secret information which can be decrypted
by Human Visual System (HVS). This cryptographic system
encrypts the secret image by dividing it into n number of shares
and decryption is done by superimposing a certain number of
shares(k) or more. Simple visual cryptography is insecure
because of the decryption process done by human visual system.
The secret information can be retrieved by anyone if the person
gets at least k number of shares. Watermarking is a technique to
put a signature of the owner within the creation.
In this current work we have proposed Visual Cryptographic
Scheme for color images where the divided shares are enveloped
in other images using invisible digital watermarking. The shares
are generated using Random Number.
Keywords: Visual Cryptography, Digital Watermarking,
Random Number.
8-      

 Image Compression Using Discrete Wavelet Transform

Abstract: This Project presents an approach towards MATLAB implemention of the Discrete Wavelet Transform (DWT) for image compression. The design follows the JPEG2000 standard and can be used for both lossy and lossless compression. In order to reduce complexities of the design linear algebra view of DWT has been used in this concept.With the use of more and more digital still and moving images, huge amount of disk space is required for storage and manipulation purpose. For example, a standard 35-mmphotograph digitized at 12μm per pixel requires about 18 Mbytes of storage and one second of NTSC-quality color video requires 23 Mbytes of storage. JPEG is the most commonly used image compression standard in today’s world. But researchers have found that JPEG has many limitations. In order to overcome all those limitations and to add on new improved features, ISO and ITU-T has come up with new image compression standard, which is JPEG2000
9
Artificial Bee Colony Data Miner (ABC-Miner)

Abstract—Data mining aims to discover interesting, non-trivial,
and meaningful information from large datasets. One of the data
mining tasks is classification, which aims to assign the given
datasets to the most suitable classes. Classification rules are used
in many domains such as medical sciences, banking, and
meteorology. However, discovering classification rules is
challenging due to large size and noisy structure of the datasets,
and the difficulty of discovering general and meaningful rules. In
the literature, there are several classical and heuristic algorithms
proposed to mine classification rules out of large datasets. In this
paper, a new and novel heuristic classification data mining
approach based on artificial bee colony algorithm (ABC) was
proposed (ABC-Miner). The proposed approach was compared
with Particle Swarm Optimization (PSO) rule classification
algorithm and C4.5 algorithm using benchmark datasets. The
experimental results show the efficiency of the proposed method.
Keywords: Artificial bee colony, Classification, Rule learning, Data
mining, ABC-Miner.

10
FACIAL EXPRESSION RECOGNITION USING PRINCIPAL  
         COMPONENT ANALYSIS
ABSTRACT
Facial expressions play an important role in human
communication. The contours of the mouth, eyes and
eyebrows play an important role in classification. Eigen
faces are used to classify facial expression. It has been
assumed that, facial expression can be classified into
some discreet classes (like happiness, sadness, disgust,
fear, anger and surprise) whereas absence of any
expression is the “Neutral” expression. Intensity of a
particular expression can be identified by the level of its
“dissimilarity” from the Neutral expression.
Keywords- Principal component, edge detection, feature
extraction, segmentation
11
Tracking TetrahymenaPyriformis Cells using Decision Trees
Abstract
Matching cells over time has long been the most difficult
this problem by recasting it as a classification problem.
We construct a feature set for each cell, and compute a
feature difference vector between a cell in the current
frame and a cell in a previous frame. Then we determine
whether the two cells represent the same cell over
time by training decision trees as our binary classifiers.
With the output of decision trees, we are able to formulate
an assignment problem for our cell association task
and solve it using a modified version of the Hungarian

algorithm.

HERE ARE THE LIST OF PROJECTS WE ARE OFFERING FOR BTECH and Mtech graduates

1. Motor shield interfacing using ARDUINO-MATLAB / SIMULINK
2. DC motor control using ARDUINO-MATLAB / SIMULINK
3. Stepper- Motor control using ARDUINO-MATLAB / SIMULINK
4. Servo motor interfacing using ARDUINO-MATLAB / SIMULINK
5 .Robot designing using ARDUINO-MATLAB / SIMULINK
6. Raspberry pi interfacing with simulink
7. Camera interfacing using Raspberry pi simulink
8. Live video acquisition using Raspberry pi simulink
9. Edge detection using Raspberry pi simulink
10. Image inversion in live video using Raspberry pi simulink
11. Color detection in live video using Raspberry pi simulink
12. Motion detection in live video using Raspberry pi simulink
13. Object detection in live video using Raspberry pi simulink
14. Live signal acquisition using Raspberry pi simulink
15. Filtering in live video using Raspberry pi simulink
16. Audio processing using Raspberry pi simulink
17. Filtering in live audio using Raspberry pi simulink
18. LED interfacing using Raspberry pi simulink
19. Various LED pattern using Raspberry pi simulink
20. Seven Segment display using Raspberry pi simulink
21. Sensors interfacing using Raspberry pi simulink
22. Real time sensors data acquisition & plotting using Raspberry pi simulink
23. Accelerometer interfacing using Raspberry pi simulink
24. Real time accelerometer data acquisition & plotting using Raspberry pi simulink
25. LCD Interfacing using Raspberry pi simulink
26. Motor shield interfacing using Raspberry pi simulink
27.  DC motor control using Raspberry pi simulink
28.  Stepper- Motor control using Raspberry pi simulink
29. Servo motor interfacing using Raspberry pi Simulink

electrical and electronics specialised projects

1. Load Flow Analysis on IEEE 14, 30, 57 buses System. Using NR method.
2. Voltage Profile Analysis for IEEE 30 Bus System Incorporating with UPFC
3. A Method for Transmission Loss Allocation Using Optimal Power Flow.
4. Studyon the performance of NEWTON – RAPHSON load Flow in DISTRIBUTION SYSTEMS
5. Load Modeling in Optimal Power Flow Studies (analysis with IEEE 14 bus load flow studies.)
6. Transmission Loss Calculation from Load Flow Analysis using incremental load flow approach.
7. Transmission Loss Calculation from Load Flow Analysis using Z bus method approach.
8. Location of statcom in IEEE 14 bus system using genetic algorithm.
Simulink Based Projects
Based on Renewableand other source of Energy. (Wind,Solar,Fuel cell, micro gas turbine, Ultra capacitor)
9. PMSG Based Wind Power Generation System.
10. Modeling and control of a single phase grid connected PV.
11. Grid Connected Battery storage System.
12. Fuel cell electrical energy system Simulink model.
13. Load Flow Analysis on IEEE 14and voltage profile improvement using Statcom .
14. Photovoltaic cell electrical energy system with dc boost and inverter 3ph connected to grid Simulink model.
15. Micro gas turbine connected with Grid system.
16. DFIG based wind power power generation system.
Power Electronics.
17. Zener Diode Regulator Simulink model.
18. Three phase shunt active filter power quality improvement.
19. High Voltage direct current Transmission system with three phase AC-DC-AC PWM power converter.
20. Three Phase Fully Controlled Bridge Rectifier.
21. Three phase inverter using PWM techniques.
22. Thyrister based single phase AC controller.
23. SVPWM control based three phase inverter.
24. Current Controller based 1-Phase Inverter.
25. Z-Converter for maintaining constant voltage at load.
26. SPWM switching pulse based seven, nine, eleven, thirteen, fifteen level H-Bridge inverter.
27. SPWM switching pulse based seven, nine, eleven, thirteen, fifteen level diode clamped inverter.
28. SPWM based open loop Buck Boost Converter.
29. Load Connected by Boost Converter Based 3-Phase Inverter.
30. Load Connected by Open Loop Buck Boost Converter Based 1-Phase Inverter.
31. Half Bridge DC-DC Converter and Full Bridge DC-DC Converter.
32. Dual Bridge Dc to DC Converter.
33. PI Controller Based Closed Loop Dual Bridge Dc to DC Converter.
34. ABC to ALPHA-BEETA to DQ and DQ to ALPHA-BEETA TO ABC.
35. Starting and Speed control of DC motor Simulink model.
36. DC motor drive through a DC chopper using GTO thyristor and a free-wheeling diode.
37. Brushless DC Motor Drive during Speed Regulation Simulink model.
38. SVPWM based Speed Control of Induction Motor with 3-Level Inverter using V/F method.
FACTS DEVICE BASED SIMULINK MODEL. (Statcom,SVC,SSSC,UPFC,UPQC.)
39. IEEE 14and voltage profile improvement using Statcom.
40. Power quality improvement in IEEE 9 BUS system using SSSC(Static Synchronous Series Compensator)
41. Reactive power compensation using SVC (Static var compensator) in transmission Power system.

Tuesday, August 19, 2014

biomedical engineers , electrical engineers , electronics engineers , all circuit branches we introduce -Arduino / Raspberry Pi / BeagleBoard / MATLAB / Simulink / Matlab to C/ MAtlab to.Net - Training & Workshops . aLSO Faculty development programme (FDA) FOR ENGINEERING COLLEGES

Hi friends Please contact me regarding 

1. Workshops - 1day ,2-day ,3-day ,4-day ,5-day, 6-day,7-day , 15 days  and 15 weeks 

2. Complete training programme (at our lab) - Fundementals or tollbox based ( varying from 1 month to 2month depending on the batch requirment)

3. In house research programme (4 months)

4. Faculty development programme 

   For  details please cotact me on 

+91 9945757753
abhijit_bailur@yahoo.co.in


Sunday, March 17, 2013

Coming Back

Sorry folks , was busy with  my research project could not update the blog ...Will be back soon with all new details and some results regarding my company new product

Friday, January 4, 2013

People intrested in signal processing and medical electronics do visit this site

this is by far top biomedical training center in india were  signal processing and Medical electronics is taught from the basic level u will be getting a ccmbe degree after completion of the courece for more info go through the site

http://www.cardea-labs.com/http://www.cardea-labs.com/

Saturday, September 1, 2012

ECG EEG and many other Biosignal Database


PhysioBank Archive Index

If you prefer, you can view separate lists of these databases organized by class:
  • Class 1 (completed reference databases)
  • Class 2 (archival copies of raw data that support published research, contributed by authors or journals)
  • Class 3 (other contributed collections of data, including works in progress)

GO TO THE LINK 

http://www.physionet.org/physiobank/database/#multi

Monday, August 20, 2012

tamura features





function varargout = tamura(varargin)
% ABHi TAMURA M-file for tamura.fig
%      TAMURA, by itself, creates a new TAMURA or raises the existing
%      singleton*.
%
%      H = TAMURA returns the handle to a new TAMURA or the handle to
%      the existing singleton*.
%
%      TAMURA('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in TAMURA.M with the given input arguments.
%
%      TAMURA('Property','Value',...) creates a new TAMURA or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before tamura_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to tamura_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help tamura

% Last Modified by GUIDE v2.5 19-Jun-2012 00:35:01

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @tamura_OpeningFcn, ...
                   'gui_OutputFcn',  @tamura_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before tamura is made visible.
function tamura_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to tamura (see VARARGIN)
handles.fileLoaded = 0;
handles.fileLoaded2=0;
set(handles.axes1,'Visible','off');
set(handles.axes2,'Visible','off');
% Choose default command line output for tamura
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes tamura wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = tamura_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes on button press in LOAD1.
function LOAD1_Callback(hObject, eventdata, handles)
% hObject    handle to LOAD1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
[FileName,PathName] = uigetfile({'*.*'},'Load Image File');
if (FileName==0) % cancel pressed
    return;
end

handles.fullPath = [PathName FileName];

[a, b, Ext] = fileparts(FileName);
availableExt = {'.bmp','.jpg','.jpeg','.tiff','.png','.gif'};
FOUND = 0;
for (i=1:length(availableExt))
    if (strcmpi(Ext, availableExt{i}))
        FOUND=1;
        break;
    end
end

if (FOUND==0)
    msgbox('File type not supported Load file with proper extension!','Error','error');
    return;
end
RGB = imread(handles.fullPath);
handles.RGB = RGB;
handles.fileLoaded = 1;
set(handles.axes1,'Visible','on');
axes(handles.axes1); cla; imshow(RGB);
guidata(hObject,handles)


% --- Executes on button press in CROP1.
function CROP1_Callback(hObject, eventdata, handles)
% hObject    handle to CROP1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
crop=imcrop(handles.RGB);
crop=rgb2gray(crop);
handles.crop=crop;
axes(handles.axes1);imshow(handles.crop);
guidata(hObject,handles)


% --- Executes on button press in LOAD2.
function LOAD2_Callback(hObject, eventdata, handles)
% hObject    handle to LOAD2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
[FileName,PathName] = uigetfile({'*.*'},'Load Image File');
if (FileName==0) % cancel pressed
    return;
end

handles.fullPath = [PathName FileName];

[a, b, Ext] = fileparts(FileName);
availableExt = {'.bmp','.jpg','.jpeg','.tiff','.png','.gif'};
FOUND = 0;
for (i=1:length(availableExt))
    if (strcmpi(Ext, availableExt{i}))
        FOUND=1;
        break;
    end
end

if (FOUND==0)
    msgbox('File type not supported Load file with proper extension!','Error','error');
    return;
end
RGB1= imread(handles.fullPath);
handles.RGB1 = RGB1;
handles.fileLoaded = 1;
set(handles.axes2,'Visible','on');
axes(handles.axes2); cla; imshow(RGB1);
guidata(hObject,handles)


% --- Executes on button press in CROP2.
function CROP2_Callback(hObject, eventdata, handles)
% hObject    handle to CROP2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
crop1=imcrop(handles.RGB1);
crop1=rgb2gray(crop1);
handles.crop1=crop1;
axes(handles.axes2);imshow(handles.crop1);
guidata(hObject,handles)


% --- Executes on button press in TAMURA1.
function TAMURA1_Callback(hObject, eventdata, handles)
% hObject    handle to TAMURA1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
%trauma features


I=im2double(handles.crop);
[Nx,Ny] = size(I);
Ng=256;
G=double(I);
abhi=zeros(Nx,Ny);
E0h=zeros(Nx,Ny);
E0v=zeros(Nx,Ny);
E1h=zeros(Nx,Ny);
E1v=zeros(Nx,Ny);
E2h=zeros(Nx,Ny);
E2v=zeros(Nx,Ny);
E3h=zeros(Nx,Ny);
E3v=zeros(Nx,Ny);
E4h=zeros(Nx,Ny);
E4v=zeros(Nx,Ny);
E5h=zeros(Nx,Ny);
E5v=zeros(Nx,Ny);
flag=0;
for i=1:Nx
    for j=2:Ny
        E0h(i,j)=G(i,j)-G(i,j-1);
    end
end
E0h=E0h/2;
for i=1:Nx-1
    for j=1:Ny
        E0v(i,j)=G(i,j)-G(i+1,j);
    end
end
E0v=E0v/2;
if (Nx<4||Ny<4)
    flag=1;
end
if(flag==0)
    for i=1:Nx-1
        for j=3:Ny-1
            E1h(i,j)=sum(sum(G(i:i+1,j:j+1)))-sum(sum(G(i:i+1,j-2:j-1)));
        end
    end
    for i=2:Nx-2
        for j=2:Ny
            E1v(i,j)=sum(sum(G(i-1:i,j-1:j)))-sum(sum(G(i+1:i+2,j-1:j)));
        end
    end
    E1h=E1h/4;
    E1v=E1v/4;
end
if (Nx<8||Ny<8)
    flag=1;
end
if(flag==0)
    for i=2:Nx-2
        for j=5:Ny-3
            E2h(i,j)=sum(sum(G(i-1:i+2,j:j+3)))-sum(sum(G(i-1:i+2,j-4:j-1)));
        end
    end
    for i=4:Nx-4
        for j=3:Ny-1
            E2v(i,j)=sum(sum(G(i-3:i,j-2:j+1)))-sum(sum(G(i+1:i+4,j-2:j+1)));
        end
    end
    E2h=E2h/16;
    E2v=E2v/16;
end
if (Nx<16||Ny<16)
    flag=1;
end
if(flag==0)
    for i=4:Nx-4
        for j=9:Ny-7
            E3h(i,j)=sum(sum(G(i-3:i+4,j:j+7)))-sum(sum(G(i-3:i+4,j-8:j-1)));
        end
    end
    for i=8:Nx-8
        for j=5:Ny-3
            E3v(i,j)=sum(sum(G(i-7:i,j-4:j+3)))-sum(sum(G(i+1:i+8,j-4:j+3)));
        end
    end
    E3h=E3h/64;
    E3v=E3v/64;
end
 if (Nx<32||Ny<32)
    flag=1;
end
if(flag==0)
    for i=8:Nx-8
        for j=17:Ny-15
            E4h(i,j)=sum(sum(G(i-7:i+8,j:j+15)))-sum(sum(G(i-7:i+8,j-16:j-1)));
        end
    end
    for i=16:Nx-16
        for j=9:Ny-7
            E4v(i,j)=sum(sum(G(i-15:i,j-8:j+7)))-sum(sum(G(i+1:i+16,j-8:j+7)));
        end
    end
    E4h=E4h/256;
    E4v=E4v/256;
end
if (Nx<64||Ny<64)
    flag=1;
end
if(flag==0)
    for i=16:Nx-16
        for j=33:Ny-31
            E5h(i,j)=sum(sum(G(i-15:i+16,j:j+31)))-sum(sum(G(i-15:i+16,j-32:j-31)));
        end
    end
    for i=32:Nx-32
        for j=17:Ny-15
            E5v(i,j)=sum(sum(G(i-31:i,j-16:j+15)))-sum(sum(G(i+1:i+32,j-16:j+15)));
        end
    end
    E5h=E5h/1024;
    E5v=E5v/1024;
end
for i=1:Nx
    for j=1:Ny
        [maxv,index]=max([E0h(i,j),E0v(i,j),E1h(i,j),E1v(i,j),E2h(i,j),E2v(i,j),E3h(i,j),E3v(i,j),E4h(i,j),E4v(i,j),E5h(i,j),E5v(i,j)]);
        k=floor((index+1)/2);
        abhi(i,j)=2.^k;
    end
end
coarseness=sum(sum(abhi))/(Nx*Ny);
[counts,graylevels]=imhist(I);
PI=counts/(Nx*Ny);
averagevalue=sum(graylevels.*PI);
u4=sum((graylevels-repmat(averagevalue,[256,1])).^4.*PI);
standarddeviation=sum((graylevels-repmat(averagevalue,[256,1])).^2.*PI);
alpha4=u4/standarddeviation^2;
contrast=sqrt(standarddeviation)/alpha4.^(1/4);
PrewittH=[-1 0 1;-1 0 1;-1 0 1];
PrewittV=[1 1 1;0 0 0;-1 -1 -1];
deltaH=zeros(Nx,Ny);
for i=2:Nx-1
    for j=2:Ny-1
        deltaH(i,j)=sum(sum(G(i-1:i+1,j-1:j+1).*PrewittH));
    end
end
for j=2:Ny-1
    deltaH(1,j)=G(1,j+1)-G(1,j);
    deltaH(Nx,j)=G(Nx,j+1)-G(Nx,j);
end
for i=1:Nx
    deltaH(i,1)=G(i,2)-G(i,1);
    deltaH(i,Ny)=G(i,Ny)-G(i,Ny-1);
end
deltaV=zeros(Nx,Ny);
for i=2:Nx-1
    for j=2:Ny-1
        deltaV(i,j)=sum(sum(G(i-1:i+1,j-1:j+1).*PrewittV));
    end
end
for j=1:Ny
    deltaV(1,j)=G(2,j)-G(1,j);
    deltaV(Nx,j)=G(Nx,j)-G(Nx-1,j);
end
for i=2:Nx-1
    deltaV(i,1)=G(i+1,1)-G(i,1);
    deltaV(i,Ny)=G(i+1,Ny)-G(i,Ny);
end
deltaG=(abs(deltaH)+abs(deltaV))/2;
theta=zeros(Nx,Ny);
for i=1:Nx
    for j=1:Ny
        if (deltaH(i,j)==0)&&(deltaV(i,j)==0)
        elseif deltaH(i,j)==0
            theta(i,j)=pi;          
        else        
            theta(i,j)=atan(deltaV(i,j)/deltaH(i,j))+pi/2;
        end
    end
end
theta1=reshape(theta,1,[]);
phai=0:0.0001:pi;
HD1=hist(theta1,phai);
HD1=HD1/(Nx*Ny);
HD2=zeros(size(HD1));
THRESHOLD=0;
for m=1:length(HD2)
    if HD1(m)>=THRESHOLD
        HD2(m)=HD1(m);
    end
end
[c,index]=max(HD2);
phaiP=index*0.0001;
direction=0;
for m=1:length(HD2)
    if HD2(m)~=0
        direction=direction+(phai(m)-phaiP)^2*HD2(m);
    end
end
disp('Trauma features _Coarseness');display(coarseness)
disp('Trauma features _Contrast');display(contrast)
disp('Trauma features _Direction');display(direction)
set(handles.edit1,'String',coarseness);
set(handles.edit2,'String',contrast);
set(handles.edit5,'String',direction);
guidata(hObject,handles)




% --- Executes on button press in TAMURA2.
function TAMURA2_Callback(hObject, eventdata, handles)
% hObject    handle to TAMURA2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

I=im2double(handles.crop1);
[Nx,Ny] = size(I);
Ng=256;
G=double(I);
abhi=zeros(Nx,Ny);
E0h=zeros(Nx,Ny);
E0v=zeros(Nx,Ny);
E1h=zeros(Nx,Ny);
E1v=zeros(Nx,Ny);
E2h=zeros(Nx,Ny);
E2v=zeros(Nx,Ny);
E3h=zeros(Nx,Ny);
E3v=zeros(Nx,Ny);
E4h=zeros(Nx,Ny);
E4v=zeros(Nx,Ny);
E5h=zeros(Nx,Ny);
E5v=zeros(Nx,Ny);
flag=0;
for i=1:Nx
    for j=2:Ny
        E0h(i,j)=G(i,j)-G(i,j-1);
    end
end
E0h=E0h/2;
for i=1:Nx-1
    for j=1:Ny
        E0v(i,j)=G(i,j)-G(i+1,j);
    end
end
E0v=E0v/2;
if (Nx<4||Ny<4)
    flag=1;
end
if(flag==0)
    for i=1:Nx-1
        for j=3:Ny-1
            E1h(i,j)=sum(sum(G(i:i+1,j:j+1)))-sum(sum(G(i:i+1,j-2:j-1)));
        end
    end
    for i=2:Nx-2
        for j=2:Ny
            E1v(i,j)=sum(sum(G(i-1:i,j-1:j)))-sum(sum(G(i+1:i+2,j-1:j)));
        end
    end
    E1h=E1h/4;
    E1v=E1v/4;
end
if (Nx<8||Ny<8)
    flag=1;
end
if(flag==0)
    for i=2:Nx-2
        for j=5:Ny-3
            E2h(i,j)=sum(sum(G(i-1:i+2,j:j+3)))-sum(sum(G(i-1:i+2,j-4:j-1)));
        end
    end
    for i=4:Nx-4
        for j=3:Ny-1
            E2v(i,j)=sum(sum(G(i-3:i,j-2:j+1)))-sum(sum(G(i+1:i+4,j-2:j+1)));
        end
    end
    E2h=E2h/16;
    E2v=E2v/16;
end
if (Nx<16||Ny<16)
    flag=1;
end
if(flag==0)
    for i=4:Nx-4
        for j=9:Ny-7
            E3h(i,j)=sum(sum(G(i-3:i+4,j:j+7)))-sum(sum(G(i-3:i+4,j-8:j-1)));
        end
    end
    for i=8:Nx-8
        for j=5:Ny-3
            E3v(i,j)=sum(sum(G(i-7:i,j-4:j+3)))-sum(sum(G(i+1:i+8,j-4:j+3)));
        end
    end
    E3h=E3h/64;
    E3v=E3v/64;
end
 if (Nx<32||Ny<32)
    flag=1;
end
if(flag==0)
    for i=8:Nx-8
        for j=17:Ny-15
            E4h(i,j)=sum(sum(G(i-7:i+8,j:j+15)))-sum(sum(G(i-7:i+8,j-16:j-1)));
        end
    end
    for i=16:Nx-16
        for j=9:Ny-7
            E4v(i,j)=sum(sum(G(i-15:i,j-8:j+7)))-sum(sum(G(i+1:i+16,j-8:j+7)));
        end
    end
    E4h=E4h/256;
    E4v=E4v/256;
end
if (Nx<64||Ny<64)
    flag=1;
end
if(flag==0)
    for i=16:Nx-16
        for j=33:Ny-31
            E5h(i,j)=sum(sum(G(i-15:i+16,j:j+31)))-sum(sum(G(i-15:i+16,j-32:j-31)));
        end
    end
    for i=32:Nx-32
        for j=17:Ny-15
            E5v(i,j)=sum(sum(G(i-31:i,j-16:j+15)))-sum(sum(G(i+1:i+32,j-16:j+15)));
        end
    end
    E5h=E5h/1024;
    E5v=E5v/1024;
end
for i=1:Nx
    for j=1:Ny
        [maxv,index]=max([E0h(i,j),E0v(i,j),E1h(i,j),E1v(i,j),E2h(i,j),E2v(i,j),E3h(i,j),E3v(i,j),E4h(i,j),E4v(i,j),E5h(i,j),E5v(i,j)]);
        k=floor((index+1)/2);
        abhi(i,j)=2.^k;
    end
end
coarseness=sum(sum(abhi))/(Nx*Ny);
[counts,graylevels]=imhist(I);
PI=counts/(Nx*Ny);
averagevalue=sum(graylevels.*PI);
u4=sum((graylevels-repmat(averagevalue,[256,1])).^4.*PI);
standarddeviation=sum((graylevels-repmat(averagevalue,[256,1])).^2.*PI);
alpha4=u4/standarddeviation^2;
contrast=sqrt(standarddeviation)/alpha4.^(1/4);
PrewittH=[-1 0 1;-1 0 1;-1 0 1];
PrewittV=[1 1 1;0 0 0;-1 -1 -1];
deltaH=zeros(Nx,Ny);
for i=2:Nx-1
    for j=2:Ny-1
        deltaH(i,j)=sum(sum(G(i-1:i+1,j-1:j+1).*PrewittH));
    end
end
for j=2:Ny-1
    deltaH(1,j)=G(1,j+1)-G(1,j);
    deltaH(Nx,j)=G(Nx,j+1)-G(Nx,j);
end
for i=1:Nx
    deltaH(i,1)=G(i,2)-G(i,1);
    deltaH(i,Ny)=G(i,Ny)-G(i,Ny-1);
end
deltaV=zeros(Nx,Ny);
for i=2:Nx-1
    for j=2:Ny-1
        deltaV(i,j)=sum(sum(G(i-1:i+1,j-1:j+1).*PrewittV));
    end
end
for j=1:Ny
    deltaV(1,j)=G(2,j)-G(1,j);
    deltaV(Nx,j)=G(Nx,j)-G(Nx-1,j);
end
for i=2:Nx-1
    deltaV(i,1)=G(i+1,1)-G(i,1);
    deltaV(i,Ny)=G(i+1,Ny)-G(i,Ny);
end
deltaG=(abs(deltaH)+abs(deltaV))/2;
theta=zeros(Nx,Ny);
for i=1:Nx
    for j=1:Ny
        if (deltaH(i,j)==0)&&(deltaV(i,j)==0)
        elseif deltaH(i,j)==0
            theta(i,j)=pi;          
        else        
            theta(i,j)=atan(deltaV(i,j)/deltaH(i,j))+pi/2;
        end
    end
end
theta1=reshape(theta,1,[]);
phai=0:0.0001:pi;
HD1=hist(theta1,phai);
HD1=HD1/(Nx*Ny);
HD2=zeros(size(HD1));
THRESHOLD=0;
for m=1:length(HD2)
    if HD1(m)>=THRESHOLD
        HD2(m)=HD1(m);
    end
end
[c,index]=max(HD2);
phaiP=index*0.0001;
direction=0;
for m=1:length(HD2)
    if HD2(m)~=0
        direction=direction+(phai(m)-phaiP)^2*HD2(m);
    end
end
disp('Trauma features _Coarseness');display(coarseness)
disp('Trauma features _Contrast');display(contrast)
disp('Trauma features _Direction');display(direction)
set(handles.edit9,'String',coarseness);
set(handles.edit10,'String',contrast);
set(handles.edit11,'String',direction);
guidata(hObject,handles)



function edit1_Callback(hObject, eventdata, handles)
% hObject    handle to edit1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text
%        str2double(get(hObject,'String')) returns contents of edit1 as a double


% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit2_Callback(hObject, eventdata, handles)
% hObject    handle to edit2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit2 as text
%        str2double(get(hObject,'String')) returns contents of edit2 as a double


% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit5_Callback(hObject, eventdata, handles)
% hObject    handle to edit5 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit5 as text
%        str2double(get(hObject,'String')) returns contents of edit5 as a double


% --- Executes during object creation, after setting all properties.
function edit5_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit5 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit6_Callback(hObject, eventdata, handles)
% hObject    handle to edit6 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit6 as text
%        str2double(get(hObject,'String')) returns contents of edit6 as a double


% --- Executes during object creation, after setting all properties.
function edit6_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit6 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit7_Callback(hObject, eventdata, handles)
% hObject    handle to edit7 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit7 as text
%        str2double(get(hObject,'String')) returns contents of edit7 as a double


% --- Executes during object creation, after setting all properties.
function edit7_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit7 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit8_Callback(hObject, eventdata, handles)
% hObject    handle to edit8 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit8 as text
%        str2double(get(hObject,'String')) returns contents of edit8 as a double


% --- Executes during object creation, after setting all properties.
function edit8_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit8 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit9_Callback(hObject, eventdata, handles)
% hObject    handle to edit9 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit9 as text
%        str2double(get(hObject,'String')) returns contents of edit9 as a double


% --- Executes during object creation, after setting all properties.
function edit9_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit9 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit10_Callback(hObject, eventdata, handles)
% hObject    handle to edit10 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit10 as text
%        str2double(get(hObject,'String')) returns contents of edit10 as a double


% --- Executes during object creation, after setting all properties.
function edit10_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit10 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit11_Callback(hObject, eventdata, handles)
% hObject    handle to edit11 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit11 as text
%        str2double(get(hObject,'String')) returns contents of edit11 as a double


% --- Executes during object creation, after setting all properties.
function edit11_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit11 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end

Wednesday, August 15, 2012

when there is a meaning for the word doctor then there should be a meaning to ENGINEER

Let me brief you out about ENGINEERING in this post

In   old  days,  1325 AD to be more precise, an engineer was defined as "a constructor of military engines". Back then engineering was divided into two categories: Military Engineering and Civil Engineering. The former involved the construction of fortifications and military engines, the latter concerned non-military projects, for example bridge building. This definition is now obsolete, as engineering has broadened to include many disciplines.

The exact origin of the word 'engineering' comes from the era when humans applied themselves to skilful inventions. Man evolving further in the world invented devices such as the pulley, the wheel and levers. The word engineer has its root in the word engine, which comes from the Latin word ingenium, which means "innate quality particularly of mental power". And thus the word engineer emerged as a person who creates nifty and practical inventions.

Engineering is a broad discipline with many subdisciplines dedicated to various fields of study with regards to particular types of technologies or products.
Engineers may begin their career being trained in a specific discipline, but because of the engineering jobs they take-on, they often become multi-disciplined having worked in a variety of different fields.

The field of engineering has traditionally been divided into the following engineering job categories:
- Aerospace Engineering
- Chemical Engineering
- Civil Engineering
- Electrical Engineering and, 
- Mechanical Engineering.

However , since the human race has been swiftly advancing with regards to technology,there are lot of  new branches of engineering  
Although all these fields may be defined differently, there is generally a great overlap, particularly in the fields of physics, chemistry and mathematics.

Monday, August 13, 2012

what does a doctors logo symbolize

     It  gives me a mixed feeling when i am writing this post probably feeling Insane whether is it necessary to write the post, But still  felt important to write this post because i m planing to set a logo for BIOMEDICAL ENGINEERING Couple of things before coming into the heart of the subject.
    
    Now a days  i am very much associated with doctors much of them are my friends and some i have met regarding my professional career and over to that my  Best  FRIEND is a doctor and this is not the most important part .........The most (( ,actually not finding the right word to describe it is, K let me use)) " exciting or an annoying " that they do not know the meaning of the symbol which they proudly put on there 2-wheeler number plate and on the car windshield..the answer i got from all my friends is (" it is just a symbol does n mean anything not one actually to sum it up from 14 of my friends who are a doctor and out of them some doing there MD & MS "). 
     Dont you think any symbol used should have a meaning????... So i simply generalized it by saying may be the stick in the middle is a spinal card which symbolizes a human being now there remains two other items in the symbol one of a bird (assuming it to be EAGLE) and other is a snake.....now how to relate a snake and eagle....let me not complicate there relationship in simple words they can be related to the relationship of cat and mouse  (CAT=EAGLE:: MOUSE=SNAKE) ,now relate it to human being .so what i finally summed up is ( DOCTOR= FOR US ALL ARE EQUAL ,There are No ENEMIES /RIVALS)....

     Then did a research on what these symbols may really symbolize.here is an intresting fact i got
before symbol let me give the meaning of " DOCTOR "

D.O. stands for Doctor of Osteopathic Medicine, the degree awarded to graduates of osteopathic medical schools. K now the next important part that is the symbol or logo 
 The symbol has a  short rod entwined by two snakes and topped by a pair of wings which is actually the caduceus or magic wand of the Greek god Hermes (Roman Mercury), messenger of the gods, inventor of (magical) incantations, conductor of the dead and protector of merchants and thieves.now what is the relation between medicine and the godHermes.                                                                                                                  The link between Hermes and his caduceus and medicine seems to have arisen by Hermes links with alchemy. Alchemists were referred to as the sons of Hermes, as Hermetists or Hermeticists and as "practitioners of the hermetic arts". By the end of the sixteenth century, the study of alchemy included not only medicine and pharmaceuticals but chemistry, mining and metallurgy. Despite learned opinion that it is the single snake staff of Asclepius that is the proper symbol of medicine, many medical groups have adopted the twin serpent caduceus of Hermes or Mercury as a medical symbol during the nineteenth and twentieth centuries.
Like the staff of Asclepius, the caduceus became associated with medicine through its use as a printer’s mark, as printers saw themselves as messengers of the printed word and diffusers of knowledge (hence the choice of the symbol of the messenger of the ancient gods).  

one intresting fact 
The Myth: Asclepius is the god of Healing. He is the son of Apollo and the nymph, Coronis. While pregnant with Asclepius, Coronis secretly took a second, mortal lover. When Apollo found out, he sent Artemis to kill her. While burning on the funeral pyre, Apollo felt pity and rescued the unborn child from the corpse. Asclepius was taught about medicine and healing by the wise centaur, Cheiron, and became so skilled in it that he succeeded in bringing one of his patients back from the dead. Zeus felt that the immortality of the Gods was threatened and killed the healer with a thunderbolt. At Apollo's request, Asclepius was placed among the stars as Ophiuchus, the serpent-bearer