# مهندسی نرم افزار > مباحث مرتبط با مهندسی نرم‌افزار > پردازش تصویر (Image Processing) >  نويز در پردازش تصوير

## mehdad.koulab

سلام به همه دوستان و مهندسین من می خوام یه برنامه ای بنویسم تا با انتخاب کاربر نویز موجود در تصویرو کاهش یا افزایش بده برای مثال تصویر شماره 1 رو به 2 و 2 رو به 1 تبدیل کنه البته لازم نیست 1 را عینا شبیه 2 کند اگر مقداری از نویزها را کم کند کافیه. در ضمن به نظر شما تو کدوم زبان برنامه نویسی بشه

----------


## whitehat

اگه محدودیتی در انتخاب زبان نداری از ToolBox مطلب ،مخصوص پردازش تصویر استفاده کنید
اگه در الگوریتم مشکلی دارید عنوان کنید تا راهنمایی کنم

----------


## mehdad.koulab

سلام جناب مدیر و با تشکر اگه راستشو بخواین من تا حالا با مطلب کار نکردم و هیچ چیز هم بلد نیستم. اگه ممکنه تو vb6 باشه که بهتر می شه اگه هم نشد C#‎ هم به صورت مبتدی بلدم ولی اگه تو vb6 باشه خیلی خوب میشه.

----------


## whitehat

شما بهتره الگوريتم را ياد بگيريد ، پس از آن مي توانيد در هر زباني آنرا بنويسيد
بطور كلي دو نوع نويز وجود دارد، نويز فلفل نمكي و نويز گوسي كه براي هر يك الگوريتم هاي متنوعي براي از بين بردن آن وجود دارد و استفاده اشتباه از الگوريتم ،باعث خراب شدن تصوير مي شود.
همچنين از بين بردن نويز به همبسته بودن يا نبودن آن نيز بستگي دارد. در نويز فلفل نمكي نقطه هايي در تصوير است كه رنگ آن با اطراف آن زياد فرق مي كند . نويز گوسي  داراي  يك قسمت خرابي در كل تصوير است.  
براي هر دو نويز شما مي توانيد از فيلتر پايين گذر و يا ملايم كننده استفاده كنيد. مثلا براي نويز فلفل نمكي يك روش موثر استفاده از يك ماسك بوده (جدول 3*3) كه بر روي تصوير حركت مي كند. و در هر مرحله ميانگين همسايه ها در نقطه مياني جاي مي گيرد.
شما مي توانيد با مراجعه به كتاب پردازش تصوير گنزالس در مورد فيلتر ها بيشتر ياد بگيريد
موفق باشيد

----------


## mehdad.koulab

خوب مشکل اصلی من هم اینکه نمیتونم الگوریتم رو بنویسم اگه می تونین تو الگوریتم نویسی کمکم کنین.

----------


## Alireza_Salehi

> خوب مشکل اصلی من هم اینکه نمیتونم الگوریتم رو بنویسم اگه می تونین تو الگوریتم نویسی کمکم کنین.


همون طور که فرمودند فصل 5 (Image Restoration) کتاب گنزالس را مطالعه کنید حتما خواهید توانست الگوریتم رو بنویسید.
در نهایت باید یک سری جمع و تفریق و ضرب انجام بدید. فقط مسئله سر اینه کی و کجا که اون هم به نوع نویز و هدف شما بستگی داره.

----------


## B-Vedadian

یک نکته هم من بگم.

MatLab یکی از ساده ترین زبانها برای یادگیریه، بنا بر این اگه با ادبیات پردازش تصویر آشنایی داری، یک نسخه ازش تهیه کن و نصب کن و اجرا. بعدش دموهای کاملی داره که یکیشون همین برنامه ایه که شما میخوای. روشهای معمولی (قدیمی) بازسازی تصویر و کاهش نویز رو پیاده سازی کرده و آماده در اختیار برنامه نویس قرار داده (البته با تولباکس پردازش تصویر، دوباره نویسیش هم کار سختی نیست!)

----------


## mehdad.koulab

> یک نکته هم من بگم.
> 
> (البته با تولباکس پردازش تصویر، دوباره نویسیش هم کار سختی نیست!)


سلام منظورت رو از این نفهمیدم یعنی چی؟ منظور برنامه نویسی دوباره این قسمت از مطلب است. اگه منظورتون اینه چجوری می تونم این کارو کنم.

----------


## mehdad.koulab

> همون طور که فرمودند فصل 5 (Image Restoration) کتاب گنزالس را مطالعه کنید حتما خواهید توانست الگوریتم رو بنویسید.
> در نهایت باید یک سری جمع و تفریق و ضرب انجام بدید. فقط مسئله سر اینه کی و کجا که اون هم به نوع نویز و هدف شما بستگی داره.


میرم کتارو گیر میارم و می خونم ممنون از همه

----------


## B-Vedadian

منظورم اینه که ابزارهای تولباکس پردازش تصویر اینقدر سطح بالاست که اون دموها رو با چند خط کد نویسی میتونی ایجاد کنی.

----------


## mehdad.koulab

ابزارهای تولباکس پردازش تصویر چیه من نمیدونم اگه نمونه دارین ممنون می شم بذارین تو سایت.

----------


## whitehat

یک بار کافیه Matlab را نصب کنید!
این مجموعه شامل مجموعه ای توابع و ابزار ها مفید برای کار با تصاویر است

----------


## mehdad.koulab

مطلب رو نصب کردم حالا چه طوری میتونم با استفاده از تولباکس پردازش تصویر دوباره نویسش کنم.

----------


## whitehat

> مطلب رو نصب کردم حالا چه طوری میتونم با استفاده از تولباکس پردازش تصویر دوباره نویسش کنم.


آیا در هنگام نصب تیک مربوط به این تولبار را برای نصب زدید؟
اگه اینطوره یک Help بسیار خوب برای این کار دارید که می توانید با استفاده از آن عکس را open کرده و فیلتر را بر روی آن استفاده کنید

----------


## mehdad.koulab

به هیچ چیزش دست نزدم

----------


## en-babak

شما برای اینکه اطلاعات بیشتری درباره پردازش تصویری و ابزارهای این جعبه ابزار بدست بیاورید بعد از نصب مطلب مراحمل زیر را انجام دهید
دستور DEMOS  را تایپ کنیدو پنجره HELP ان باز می شودو در قسمت چپ پنجره گزینه TOOLBOXES\IMAGE PROCESSING را انتخاب کنید و همان طور که مشاهده می کنید در قسمت راست پنجره  HELP تمام کاربردهای این جعبه ابزار به همرا Mفایلها و همچنین مثالهای از انها نمایش داده می شود و در انجام پروژه های کوچک بسیار مفید است

----------


## mehdad.koulab

ممنون از همه ولی من می خوام یه برنامه مثل پردازش تصویر مطلب به ویژه قسمت نویزش رو بنویسم نه این که این کارا رو انجام بدم.

----------


## whitehat

براي حذف نويز گوسي از چندين روش مي توان استفاده كرد، (كدهاي زير در متلب نوشته شده و براي توضيحات بيشتر براي هر كدام مي توانيد به كتاب پردازش تصوير گنزالس مراجعه كنيد)
1- استفاده از يك فيلتر نرم كننده

function [MO]=my_gussian_noise(MI,k)
    N = size(MI,1);
    M = size(MI,2);
    TEMP=zeros(N,M);
    for i=2:N-1
        for j=2:M-1
            row1=double(MI(i-1,j-1))+double(MI(i,j-1))+double(MI(i+1,j-1));
            row2=double(MI(i-1,j))+double(MI(i+1,j))+double((k*MI(i,j)));
            row3=double(MI(i,j+1))+double(MI(i+1,j+1))+double(  MI(i-1,j+1));
            TEMP(i,j)=uint32((row1+row2+row3)/(8+k));
        end;
    end;
    MO=TEMP;

2- استفاده از فيلتر پايين گذر 

%Fix Gussian Noise With Low Pass Filter
function [MO]=my_lowpass_filter(MI,k)
    N=size(MI,1);
    M=size(MI,2);
    img=double(MI)/N;
    u=(-((N-1)/2):((N-1)/2))'*ones(1,N);    
    U =  u.^2;
    V =  (u').^2;
    Duv = sqrt(U + V);
    ideal=double(Duv<=k); 
    ftimg=fftshift(fft2(img)); 
    MO=real(ifft2(fftshift(ftimg.*ideal))); 

3- استفاده از روش Butter Worth درجه 2

%Fix Gussian Noise With Butter Worth (Degree 2)
function [MO]=my_butter_worth2(MI,k)
    N=size(MI,1);
    M=size(MI,2);
    img=double(MI)/N;
    u=(-((N-1)/2):((N-1)/2))'*ones(1,N);    
    U =  u.^2;
    V =  (u').^2;
    Duv = sqrt(U + V);
    btw2=1 ./ (1.0 + (Duv ./ k).^(2)); 
    ftimg=fftshift(fft2(img)); 
    MO=real(ifft2(fftshift(ftimg.*btw2))); 

4- استفاده از روش Butter Worth درجه 3

%Fix Gussian Noise With Butter Worth (Degree 3)
function [MO]=my_butter_worth4(MI)
    N=size(MI,1);
    M=size(MI,2);
    img=double(MI)/N;
    u=(-((N-1)/2):((N-1)/2))'*ones(1,N);    
    U =  u.^2;
    V =  (u').^2;
    Duv = sqrt(U + V);
    btw4=1 ./ (1.0 + (Duv ./ k).^(4)); 
    ftimg=fftshift(fft2(img)); 
    MO=real(ifft2(fftshift(ftimg.*btw4))); 

براي حذف نويز فلفل نمكي شما كافيه يك ماسك را بر روي تصوير حركت دهيد 

%Fix Salt And Pepper Noise
function [MO]=my_spark_noise(MI)
    N = size(MI,1);
    M = size(MI,2);
    arr=[9];
    for i=2:N-1
        for j=2:M-1
           arr(1)=MI(i-1,j-1);
           arr(2)=MI(i,j-1);
           arr(3)=MI(i+1,j-1);
           arr(4)=MI(i-1,j);
           arr(5)=MI(i,j);
           arr(6)=MI(i+1,j);
           arr(7)=MI(i-1,j+1);
           arr(8)=MI(i,j+1);
           arr(9)=MI(i+1,j+1);
           arr=sort(arr);
           TEMP(i,j)=arr(5);
        end;
    end;
MO=TEMP;

----------


## mehdad.koulab

دیگه دارم پر رویی می کنم ولی شرمنده چون مجبورم لطفا یه مرجع به من معرفی کنین تا مطلب رو یاد بگیرم با تشکر.

----------


## en-babak

اگر چند تصویر از آن شی داشتی می توانی با میانگین گیری از تصاویر نویز در تصویر را کم کنی که این جز فیلترهای فرکانسی پایین گذر است و اگر هم کد آن را خواستی برایت می نویسم از مدیر بخش هم ممنون که این کدها را فرستاد
---------------------------------------------------------------------
زندگی گرمی دستهای بهم پیوسته است/ تا دران دوست نباشدهمه درها بسته است

----------


## Alireza_Salehi

> دیگه دارم پر رویی می کنم ولی شرمنده چون مجبورم لطفا یه مرجع به من معرفی کنین تا مطلب رو یاد بگیرم با تشکر.


کتاب گنزالس دو نسخه داره یک پردازش تصویر و دیگری پردازش تصویر در مطلب (اولی ترجمه فارسیش تو بازار هست).

کتاب فارسی برای یادگیری مطلب فراوونه، ولی به طور کلی Help خود مطلب نقص نداره و بهتر از کتابه.

----------


## en-babak

البته می توانی از فیلت های ویولت WAVELAT استفاده کنی این فیلتر برای کاهش سیگنالهای می باشد

----------


## mehdad.koulab

دوست عزیز en-babak درسته که جناب مدیر کدهای مربوط به سوالم رو گذاشته ولی اگه شما هم میتونین برای یادگیری بیشتر لصفا بذارین تو سایت. با تشکر

----------


## مصطفی ساتکی

بهترین کتاب موجود کتاب آقای گنزالس که با نام پردازش تصویر با مطلب کتابی جامع با کد مطلب کلیه مطالبی رو که تو کتاب اصول پردازش تصویر گنزالس می خونید در این کتاب پیاده سازی شده در ضمن برای کار شما نیازی به مطلب نیست مطلب با سرعت پایینی که داره فقط برای تست کار به کار میره نه برای کاربردی کردن .شما برای این کار باید یک کانولوشن رو تو vb پیاده کنید وقتی این کار رو انجام دادید هم می تونید نویز بدید و هم نویز بگیرید یعنی پنجره n در n روی تصویر مبدا حرکت بدید تا تصویر مقصد حاصل بشه برای کارهای که در محیط طبیعی انجام بشه فقط این مطالب گفته شده کافی نیست .

----------


## mehdad.koulab

> بهترین کتاب موجود کتاب آقای گنزالس که با نام پردازش تصویر با مطلب کتابی جامع با کد مطلب کلیه مطالبی رو که تو کتاب اصول پردازش تصویر گنزالس می خونید در این کتاب پیاده سازی شده در ضمن برای کار شما نیازی به مطلب نیست مطلب با سرعت پایینی که داره فقط برای تست کار به کار میره نه برای کاربردی کردن .شما برای این کار باید یک کانولوشن رو تو vb پیاده کنید وقتی این کار رو انجام دادید هم می تونید نویز بدید و هم نویز بگیرید یعنی پنجره n در n روی تصویر مبدا حرکت بدید تا تصویر مقصد حاصل بشه برای کارهای که در محیط طبیعی انجام بشه فقط این مطالب گفته شده کافی نیست .


سلام دوست عزیز منم می خوام هم این کارو بکنم ولی بلد نیستم اگه می تونین راهنماییم کنین.

----------


## en-babak

من خودم هم در موضوع فیلتر های waveat دارم کار می کنم و این موضوع پروژه پایان دوره ام است که ایگن فیلمتر ها در تشخیص مرز ( border) خیلی کمک می کند حتما تا چند روز دیگر قسمتی از مستندات پروژه ام را در تاپیک فیلتر wavelat خواهم گذاشت

----------


## shokoohi

چطور می تونم از تولباکس های مطلب استفاده کنم؟
میشه بیشتر راهنمایی کنید که به کجا مراجعه کنم؟

----------


## golbafan

براي كاهش نويز ميتونيد از فيلتر بلور استفاده كنيد

----------


## معصومه ارفعی

فایل zip ده نتوانستم باز کنم آیا به نرم افزار خاصی احتیاج هست

----------

