Matlab - Гауссовский луч света над датчиком и интенсивностью пикселей - PullRequest
0 голосов
/ 06 февраля 2020

Проблема:

Представьте, что есть датчик фотографического c с 1024x768 пикселей, каждый пиксель имеет 1x1 мм. Круговой луч света попадает на датчик. Луч имеет гауссов профиль.

Я хотел бы получить интенсивность для каждого пикселя и общую интенсивность на датчике (в случае, если я отключил некоторые пиксели).

My решение:

Создать нулевую матрицу из 1024x768 элементов. Рассчитайте круговую площадь света, который попадет на датчик. Если область четко определена, пиксели границы будут частично затронуты. Создайте гауссовский профиль для этой области и рассчитайте интенсивность пикселей для каждого пикселя.

Что вы думаете? У меня много сомнений, как это сделать ... Можете ли вы помочь мне?

Я уже закодировал это:

% system
clc;
close all;
imtool close all;
clear;
workspace;

% image size
sizeX = 1024;
sizeY = 768;
% beam circle
centerX = sizeX/2;
centerY = sizeY/2;
radius = sizeY/2;

% sensor+beam
dmd = zeros(sizeY, sizeX); 
[row column] = meshgrid(1:sizeX, 1:sizeY);
dmd = (column - centerY).^2 + (row - centerX).^2 <= radius.^2;

% plot
subplot(1,2,1); 
imshow(dmd, []); 
title('Circular Beam over DMD', 'FontSize', 14);
axis on;
set(gcf, 'Position', get(0,'Screensize')); % Maximize figure.

x=repmat(linspace(-4,4,sizeY),sizeY,1);y=x';%'#this comment is to fix highlighting in Stackoverflow.
sigma=2;
gauss=exp( -x.^2/(2*sigma^2) - y.^2/(2*sigma^2));

% plot
subplot(1,2,2); 
imshow(gauss, []); 
title('Gaussian Profile', 'FontSize', 14);
axis on;

Заранее спасибо. Приветствия

...