Search code examples
matlabdicom

need help about opening dicom file in matlab


i got black image when opening dicom file in matlab

my code for opening dicom files

[real_image,real_path] = uigetfile( ...
{'*.*;','File Dicom (*.dcm)';},...
'Open Image');

if ~isequal(real_image,0)
handles.image = dicomread(fullfile(real_path,real_image));
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.image);

set(handles.text5,'String',real_image);
set(handles.text6,'String',real_path);

[row,column]=size(handles.image);
set(handles.text7,'String',row);
set(handles.text8,'String',column);

else
return;
end

Solution

  • I've tested your code by creating a GUI (R2012b) and inserting the code in pushbutton callback and it works fine.

    So I can see two possibilities: - the dcom image you are loading in somehow corrupted - the dcom image is good and it is a probelm of contrast

    I'll go for the second possibility.

    I've used, as examples, the dcom images "CARDIX" downloaded from DICOM sample image sets.

    As one of these images is loaded, it appears to be black and the axes's clim is [0 65535].

    If you set the clim range to, respectively, the minimum and maximum values of the dcom image data value, you can start "seeing something".

    To further enhance the visibility of the image you can use the imcontrast tool.

    enter image description here

    In the following you can find the .m file of the GUI: the imcontrast tool can be run through a pushbutton.

    function varargout = adjust_contrast(varargin)
    % ADJUST_CONTRAST MATLAB code for adjust_contrast.fig
    %      ADJUST_CONTRAST, by itself, creates a new ADJUST_CONTRAST or raises the existing
    %      singleton*.
    %
    %      H = ADJUST_CONTRAST returns the handle to a new ADJUST_CONTRAST or the handle to
    %      the existing singleton*.
    %
    %      ADJUST_CONTRAST('CALLBACK',hObject,eventData,handles,...) calls the local
    %      function named CALLBACK in ADJUST_CONTRAST.M with the given input arguments.
    %
    %      ADJUST_CONTRAST('Property','Value',...) creates a new ADJUST_CONTRAST or raises the
    %      existing singleton*.  Starting from the left, property value pairs are
    %      applied to the GUI before adjust_contrast_OpeningFcn gets called.  An
    %      unrecognized property name or invalid value makes property application
    %      stop.  All inputs are passed to adjust_contrast_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 adjust_contrast
    
    % Last Modified by GUIDE v2.5 26-Dec-2015 10:44:54
    
    % Begin initialization code - DO NOT EDIT
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @adjust_contrast_OpeningFcn, ...
                       'gui_OutputFcn',  @adjust_contrast_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 adjust_contrast is made visible.
    function adjust_contrast_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 adjust_contrast (see VARARGIN)
    
    % Choose default command line output for adjust_contrast
    handles.output = hObject;
    
    % Update handles structure
    guidata(hObject, handles);
    
    % UIWAIT makes adjust_contrast wait for user response (see UIRESUME)
    % uiwait(handles.figure1);
    
    
    % --- Outputs from this function are returned to the command line.
    function varargout = adjust_contrast_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 pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    
    [real_image,real_path] = uigetfile( ...
       {'*.dcm;','File Dicom (*.dcm)';},...
       'Open Image');
    
    if ~isequal(real_image,0)
       handles.image = dicomread(fullfile(real_path,real_image));
       guidata(hObject,handles);
       axes(handles.axes1);
       imshow(handles.image);
    
       set(handles.text5,'String',real_image);
       set(handles.text6,'String',real_path);
    
       [row,column]=size(handles.image);
       set(handles.text7,'String',row);
       set(handles.text8,'String',column);
    
    else
       return;
    end
    % Set the "Clim" scale to the [min max] image values
    set(gca,'clim',[min(min(handles.image)) max(max(handles.image))])
    
    
    % --- Executes on button press in pushbutton2.
    function pushbutton2_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    imcontrast
    

    In the following picture you can see: - the "black" image as it appears as loaded - the first enhacement following the updating of the clim range - the enhancements obtained "working" with the imcontrast tool

    Notice: you can download a DCOMViewer from MATLAB Central.

    Hope this helps.

    enter image description here