شناسایی تومورهای مغزی با استفاده از بخش بندی تصاویر - Image Segmentation

تومور مغزی تشکیل شده از سلول هایی است که نمایشگر رشد بیرویه در مغز می باشند. طبیعت تومورهای مغزی بدخیم است، زیرا با اشغال فضای مغز جای بافت هایی را که برای اعمال حیاتی بدن نیاز است را می گیرند. به علت طبیعت تهاجمی تومورهای مغزی، این تومورها بر مهم ترین عضو بدن (مغز) اثر گذارند. تشخیص اولیه تومور و تخمین پیشرفت آن برای درمان بهتر این بیماری، امری بسیار حیاتی می باشد. در حال حاضر در برنامه های کاربردی کلینیکی محدوده تومور در عکس مغز به صورت دستی تعیین می شود، در نتیجه زمانی که حجم اطلاعات زیاد است، روش دستی غیر قابل اجرا می باشد.

قطعه بندی تومور یا ناحیه غیر طبیعی تصاویر رزونانس مغناطیسی (MRI) می تواند نقش مهمی در تحقیقات سرطان و عملیات های بالینی بازی کند. اگر چه قطعه بندی دقیق تومور توسط رادیولوژیست ها ایده آل است، اما بسیار وقت گیر است. تجربه نشان می دهد که به منظور شاخص گذاری بانک های اطلاعاتی MRI، قطعه بندی های تقریبی میتوانند کافی باشند.

روش هیستوگرام (آستانه گیری): این روش با استفاده از هیستوگرام روشنایی یا رنگ عمل ناحیه بندی را انجام می دهد

فرض بر این است که تصویر دارای سطوح روشنایی متفاوتی است که در هیستوگرام روشنایی به صورت قله و دره خود را نمایش می دهد و مرز بافت ها در محل دره جدا می شود، همچنین می توان چندین سطح استانه برای ناحیه بندی انتخاب روش معمولا در اولین مرحله از کارهای پردازش تصویر استفاده می شود. در این حالت تعداد نواحی که برای ناحیه بندی در نظر گرفته می شوند به اندازه یک واحد بیشتر از نقاط آستانه می باشد .این روش قادر است دو بافت سالم و تومور را در دو کلاس مجزا ناحیه بندی کند. در حقیقت اگر وضوح تصویر مناسب باشد این روش قادر است که سوژه(هدف) را از پس زمینه تمیز دهد. این روش فقط از اطلاعات روشنایی هیستوگرام تصویر استفاده می کند بنابراین اطلاعات مکانی تصویر را شامل نمی شود.

 

اجرای پیاده سازی

هر خط نشان دهنده تعداد آستانه می باشد، در هر خط دارای سه پارامتر: شروع بازه رنگی، پایان بازه رنگ یا سطح خاکستری تصویر، رنگ جایگزین و پارامتر آخر نشان دهنده نوع اعمال رنگ می باشد که با دو نوع a و b جداسازی می شود

بازه سطوح خاکستری از 0 تا 255 می باشد

پارامتر a رنگ سوم را از تصویر اصلی بر اساس مقداری که به آن دادید کم یا زیاد میکند

پارامتر b رنگ سوم را دقیقا در تصویر اصلی جایگزین میکند


تصویر اصلی به جهت تشخیص تومور




سورس کد


<?php
defined
('BASEPATH') OR exit('No direct script access allowed');

class 
Segmentation extends CI_Controller {

    public function 
index()
    {
        
$data= array(
            
"site_title" =>"پردازش تصاویر",
            
"mnu_home" =>"active",
        );
        
        
//$this->load->view('header');
        
$this->load->view('header',$data);
        
$this->load->view('imageprocessing/panel');
        
$this->load->view('footer');
    }
    
    
    public function 
draw()
    {
        
//تبدیل ورودی به آرایه
        
$link=$this->input->get("link");
        
        
$link trim($link,"
"
);
        
$link explode ("\n"$link);

        
$imgSource="assets/images/tumor1.jpg";
        
$img=imagecreatefromjpeg($imgSource);
        
        
$i=0;
        foreach (
$link as $line)
        {
        
            
$line str_replace("\n"""$line);
            
$line str_replace("\r"""$line);
            
$data=explode(" ",$line);
            
            if(
$i==0)
            {
                
$img2$this->segmentImg($img,  $data[0], $data[1], $data[2], $data[3]);
            }
            else
            {
                
$img2$this->segmentImg($img2,  $data[0], $data[1], $data[2], $data[3]);
            }
            
$i++;
        }
        
        
    
        
header("Content-Type: image/jpeg");
        
imagejpeg($img2); 
        
imagedestroy($img);
        
imagedestroy($img2); 
    }
    
    function 
set_color($img$i,$j$color_arr
    { 
        
$color= ['red'=> $color_arr'green'=> $color_arr'blue'=> $color_arr];
        
//$color= ['red'=> $color_arr, 'green'=> 0, 'blue'=> 0];
        
$color_arr$color;
        
        
$color2 imagecolorexact($img,  $color_arr["red"],$color_arr["green"],$color_arr["blue"]); 
             
        if(
$color2==-1)  
        { 
            if(
imagecolorstotal($img)>=255) { 
                
$color2 imagecolorclosest($img$color_arr["red"],$color_arr["green"],$color_arr["blue"]); 
            }  
            else  
            { 
                
$color2 imagecolorallocate($img$color_arr["red"],$color_arr["green"],$color_arr["blue"]); 
            } 
        } 
         
        
imagesetpixel($img,$i,$j,$color2); 
    } 
    
    function 
segmentImg($img$low$high$value$flag)
    {
         
        
        
$width imagesx($img); 
        
$height imagesy($img); 
        
        
$img2=imagecreate($width,$height);
        
        for(
$i=0;$i<$width$i++) 
        { 
            for(
$j=0;$j<$height$j++) 
            { 
                
$colorimagecolorat($img$i$j); 
                
$color=imagecolorsforindex($img$color); 
                
                
$color=floor( ($color["red"] + $color["red"] + $color["red"] ) / );
                
                if(
$color>=$low && $color<=$high)
                {
                    if(
$flag=='a')
                    {
                        
//die('A');
                        
$color=$color+$value;
                    }   
                    else 
/*if($flag=='b')*/
                    
{
                        
//die('b');
                         
$color=$value;
                    }   
                    
                    
                    if(
$color>=255)
                        
$color=255;
                    else if (
$color<=0)
                        
$color=0;
                    
                    
                }
                
$this->set_color($img2$i$j$color);
            }
        }
        
        return 
$img2;
    }
    
    
    
}
1