Gray scale utilization در شناسایی عنبیه - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

Gray scale utilization در شناسایی عنبیه

+1 امتیاز
سلام.
مبحث Gray scale utilization در شناسایی عنبیه چیه و چرا بایستی محاسبه بشه و فرمولاسیون به چه صورته؟
سوال شده شهریور 11, 1393  بوسیله ی اکبر نظری (امتیاز 31)   2 5 6

1 پاسخ

+1 امتیاز

قصد داریم با این تحلیل متوجه بشیم تصویر ووردی چه میزان پخش شدن سطوح خاکستری را در تصویر بررسی کنیم مقدار مناسب به این صورت هستش که dynamic range تصویر 256 باشه تعداد حاکثر بیت ها در تصویر خاکستری 8 بیت هستش که مقدار 6 بیت حداقل تعداد بیتی هستش که می تونه مورد قبول باشه از این کمتر باشه باید تصویر رد شه.با اینکار تصویر می تونیم تصاویر پور نور یا کم نور را تشخیص بدیم.

برای محاسبه آن بایستی آنتروپی تصویر را محاسبه کنیم. برای محاسبه entropy  در ابتدا از تصویر هیستوگرام می گیریم سپس PMF هیستوگرام را محاسبه می کنیم. سپس برای هر Bin مقدار Pi*log(Pi) را محاسبه می کنیم و مجموع آن را برای کل bin ها محاسبه می کنیم که این مجموع بایستی بزرگتر مساوی 6 باشد.

در واقع این روش بررسی میزان کنتراست تصویر ورودی هستش. به صورت زیر:

	void bhGet1DHistogram(InputArray _src, MatND  &hist, int size, InputArray _mask)
	{
		int hist_size[] = { size };
		float ranges1[] = { 0, float(size - 1) };
		const float* ranges[] = { ranges1 };

		int channels[] = { 0 };
		Mat src = _src.getMat();
		calcHist(&src, 1, channels, _mask, hist, 1, hist_size, ranges);

	}
	int grayscaleUtilization_(InputArray _src,  IrisContext* context){
		Mat src = _src.getMat();

		Mat hist;
		bhGet1DHistogram(_src, hist, 256);

		int total_pix = src.size().area();
		int count = 0;
		float H = 0.f;
		for (size_t i = 0; i < hist.size.p[0]; i++){
			float val = hist.at<float>(i) / total_pix;
			if (val > 0){
				H += val * log2(val);
			}
			
		}
		
		return -H;

	}

 

پاسخ داده شده مهر 2, 1393 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
ویرایش شده مهر 2, 1393 بوسیله ی مصطفی ساتکی
...