یکسان سازی هیستوگرام بدون استفاده از تابع ()histeq در متلب

موسسه پایاپروژه به عنوان متصدی انجام پروژه های متلب وظیفه ی خود می داند که در راستای آموزش نرم افزار متلب  گام های موثری را بردارد. با توجه به اینکه یک دوره آموزشی متلب مستلزم تمرین و تلاش بسیار است. اما این موسسه تلاش می کند سهم کوچکی در جهت یادگیری شما داشته باشد.

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

هیستوگرام اساساً یک روش نمایش مبتنی بر نمودار در پروژه متلب است که تعداد پیکسل ها و مقادیر شدت را روشن می کند.

موضوعات فرعی معادل سازی هیستوگرام

  • افزایش کیفیت عکس
  • پیش پردازش
  • تقسیم بندی
  • طبقه بندی

بهبود تصویر:

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

پیش پردازش:

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

  • تبدیل داده های تصویری
  • کیفیت داده های تصویر
  • کاهش داده های تصویری
  • پاکسازی داده های تصویر

تقسیم بندی:

تقسیم بندی فرآیند پارتیشن بندی تصویر در پروژه متلب به قسمت ها یا مناطق است.

مراحل انجام پروژه متلب:

مرحله 1 :

اول از همه برای انجام پروژه متلب اسکریپت جدید برای تساوی هیستوگرام ایجاد کنید و کد را بنویسید و لطفاً مطمئن شوید که هر تصویری که برای تساوی انتخاب کرده اید باید در ویرایشگر متلب باشد، اگر تصویر شما در آنجا نیست. MATLAB سپس با خطای عدم وجود تصویر مواجه خواهید شد . اما در اینجا تصویر نشان‌واره GFG را انتخاب می‌کنیم، سپس فقط شما می‌توانید معادل سازی هیستوگرام یک تصویر را انجام دهید.

 

برای نمایش تصویر در شکل 1 کد را بنویسید و در ویرایشگر متلب اجرا کنید:

 Program of Histogram Equalization without%

. using built-in histeq() function%

  

;clear all

;close all

;clc     

.clear all workshop variable%

;warning off

;I = imread(‘GeeksforGeeks.png’)

  

.Read the image%

;imshow(I) 

.showing the image in figure%

استفاده از ;(‘ ‘) imread تابع MATLAB می تواند تصویر را از فایل مشخص شده با نام فایل بخواند. و تابع () imshow برای نمایش تصویر در مقادیر عددی دوبعدی استفاده می شود.

خروجی:

استفاده از تابع ()imshow برای نمایش تصویر در متلب

مرحله 2:

بنابراین، در پروژه متلب ما کد خود را پیاده سازی کرده و اجرا می کنیم، سپس یک نمودار هیستوگرام جدید از تصویر اصلی، بدون استفاده از تابع ()histeq داخلی دریافت می کنیم . پس بیایید کد را ببینیم.

. A Program for perform histogram Equalization without histeq() function%

clc

close all

clear all

;warning off

  

. Read the image%

;I = imread(‘GeeksforGeeks.png’); 

;h = zeros(1,256);  

,return an array% 

 where the element’s value as%

.traversing the array of an image%

;[r c] = size(I)     

;n = 0 : 255

  

‘for loop for travers%

for i= 1:r          

    for j=1:c

         ;h(I(i,j)+1) = h(I(i,j)+1)+1

    end 

      

 .plot the data sequence%

;stem(n, h)    

  

 limits the number of updates%

  to 20 frames per second%

;drawnow limitrate   

end  

;figure

;histogram(I)

همانطور که می بینید در کد بالا دستورات و تابع، حلقه را اضافه کردیم. بنابراین بیایید بفهمیم که از چه دستوراتی در اینجا استفاده کرده ایم.

  • () h=zerosبرای برگرداندن یک آرایه استفاده می شود، جایی که مقدار عنصر 0 است.
  • ;[rows,cols]= size(Matrix) از آن برای پیمایش ماتریس یک تصویر به صورت ستونی استفاده می شود.
  • ;() ساقه; از آن برای ترسیم توالی داده ها و گسترش از خط مبنا در امتداد محور استفاده می شود.
  • ترسیم محدود; برای محدود کردن تعداد به روز رسانی ها به 20 فریم در ثانیه استفاده می شود .

نمودار هیستوگرام تصویر در متلب

بنابراین در این شکل 1 نمودار هیستوگرام تصویر را با مقادیر سطح شدت متفاوت می بینیم.

مرحله 3:

اکنون مرحله نهایی پروژه متلب را با تساوی هیستوگرام بدون استفاده از تابع histeq ()  خواهیم دید . کد را پیاده سازی کنید و کد را اجرا کنید سپس شکل 1 جدید را به عنوان نمودار هیستوگرام دریافت خواهید کرد.

 A Program for perform histogram %

.Equalization without histeq() function%

clc

close all

clear all

  

.Read the image %

;I = imread(‘GeeksforGeeks.png’)  

  

, return an array%

 where the element’s value as 0 % 

;h = zeros(1,256)

  

. traversing the array of an image%

;[r c] = size(I)    

;no_of_pixels = r*c

;n = 0 : 255; title(‘histogram plot without histeq() function’)

  

 loop for travers %

for i= 1:r      

    for j=1:c

        ; h(I(i,j)+1) = h(I(i,j)+1)+1

    end 

end 

  

 Calculating Probability%

for i=1:256

    ;h(i)=h(i)/no_of_pixels

end

  

 Calculating Cumulative Probability%

;temp=h(1)

for i=2:256

;   temp=temp+h(i)

   ; h(i)=temp

end

;stem(n, h)

;drawnow limitrate

;histogram(I)

در این کد می توانیم از نوع متفاوتی از تابع استفاده کنیم که با توجه به توابع خروجی می دهد. مانند به جای steam می‌توانیم از تابع ()subplot استفاده کنیم که با توجه به عملکرد آنها خروجی خواهد داشت.

خروجی:

رسم هیستوگرام با تابع ()steam در متلب

 

بنابراین نمودار بالا توسط متلب ایجاد شده است و در اینجا ما از تابع ()steam استفاده کردیم که خروجی را ارائه می دهد، اساساً تابع steam یک خط خاص برای هر فروش خاکستری ترسیم کرده است که تجسم نمودار و شدت آنها کمی دشوار است. ارزش های. بنابراین گاهی اوقات می توانیم از تابع subplot برای رسم هیستوگرام استفاده کنیم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این زمینه را پر کنید
این زمینه را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

18 − پنج =

سفارش پروژه