Фазовый переход/фазовый сдвиг влажности поверхности листа

Я пишу алгоритм поиска фазы в Matlab, у меня есть несколько разных изображений, которые представляют разные миллилитры воды на поверхности листа (влажность поверхности листа), которые необходимо было вставить в алгоритм, чтобы увидеть фазовое изменение/фазовый сдвиг, который произошел в каждом миллиметр воды на поверхности листа, но я не совсем уверен, как увидеть фазовое изменение/фазовый сдвиг каждого изображения и сравнить его. Представляю ли я фазовое изменение/фазовый сдвиг на графике или есть другие способы увидеть фазовое изменение/фазовый сдвиг? Я рисую фазу или получаю значение? Могу ли я получить помощь в этом? Спасибо.

РЕДАКТИРОВАТЬ: тема, которой я сейчас занимаюсь, - это интерферометрия, и она создает полосы на каждом из изображений. Каждая из этих полос будет содержать значения/информацию о фазе, мой код должен получить информацию/значения о фазе каждого изображения, а затем мне нужно увидеть изменение фазы/сдвиг фазы, которое произошло на каждом изображении, но я Я не уверен, как я могу это сделать, и я не могу этого сделать. На основе алгоритма мне нужно доказать, что при увеличении/уменьшении уровня влажности значение фазы будет увеличиваться/уменьшаться/значение фазы будет смещаться в какую-то сторону. Теперь я не знаю, должен ли я видеть изменение фазы/сдвиг фазы каждого изображения с помощью графика или других методов. Я прикрепил изображение, чтобы показать пример входных изображений. /a> Я надеюсь, что смогу получить помощь в этом. Спасибо.

РЕДАКТИРОВАТЬ 2: изображение образца графика

Вот мой код:

close all; clc; workspace; 
Iterations = 1100;       %Number of iterations 
p = 0.1;                 %Time to pause between display of images 
tic;                     %Timer Initialization
error = [];
%This whole part is to generate a mesh plot, i still dont know what info
%can get from here but just leave it first. 
x = linspace(-10,10,256);
y = linspace(-10,10,256);
[X,Y] = meshgrid(x,y);
x0 = 0;              % Center
y0 = 0;              % Center
sigma = 2;       % Beam Waistfringes
A = 1;               % Peak of the Beam 
%These 2 lines, res and Source, is basically input intensity. U need
%this in order to get the exponential image to process ltr.
res = ((X-x0).^2 + (Y-y0).^2)./(2*sigma^2);  
Source = A  .* exp(-res); 
%These 2 lines is for mesh plot also, ignore first
surf(Source);
shading interp 
%Reading Fringe Image (Target)
Target = imread('0ml(1).jpeg');
Target = rgb2gray(Target);
Target = im2double(Target);
%Get the size of Target
[rowsimgA, colsimgA, numberOfColorChannelsimgA] = size(Source);
[rowsimgB, colsimgB, numberOfColorChannelsimgB] = size(Target);
%imresize function is basically to resize any image to a particular size.
%In this code u can see that i resize the Source beam input to the same
%size as the target image in the format of (Target, [rows, columns])
if rowsimgB ~= rowsimgA || colsimgA ~= colsimgB
    Target = imresize(Target, [rowsimgA colsimgA]); 
end
%FFT process
A = fftshift(ifft2(fftshift(Target)));
%Initiate loop
% The loop im not too sure yet, but basically when u multiplay the source
% and the phase, u produce exponential image, and then u do fft and ifft in
% order to reconstruct the image.
for i = 1:Iterations
  B = abs(Source) .* exp(1i*angle(A)); 
  C = fftshift(fft2(fftshift(B)));
  D = abs(Target) .* exp(1i*angle(C));
  A = fftshift(ifft2(fftshift(D)));
  error = [error; (1/sqrt(rowsimgA*colsimgA)*sqrt(sum(sum(abs(C)-abs(Target)).^2)))];  
end
%Display Outputs
figure(2), imagesc(Target), colorbar, title('Original Fringe')
figure(3), i = 1:1:i; plot(i,(error')); title('Error');
%Phase Mask
figure(4), imagesc(angle(A)), title('Phase Mask');
%Last Pattern
figure(5), imagesc(abs(C)), colorbar, title('Reconstructed Image');
%Reconstructed Image (Phase Only)
figure(6), imagesc(angle(D)), colorbar, title('Reconstructed Image (Phase Only)');
%Reconstructed Image (Amplitude Only)
figure(7), imagesc(abs(D)), colorbar, title('Reconstructed Image (Amplitude Only)');
%Display Total Time Taken for Phase Retrieval
toc; 

`


person void    schedule 07.11.2020    source источник


Ответы (1)


Я чувствую, что может быть несколько аспектов, которые нуждаются в разъяснении, прежде чем обращаться к вашему вопросу.

Во-первых, кажется, что вы используете алгоритм Герхберга-Сакстона, который действительно является наиболее распространенным алгоритмом поиска фазы. В своей первоначальной форме это было разработано для решения конкретной проблемы, которая, вероятно, очень похожа на вашу проблему: вы хотите знать величину и фазы поля, но можете только измерить величину. Это распространено, например, в оптике, где камеры измеряют только интенсивность. Решение, предложенное G&S, состоит в том, чтобы измерить величину, затем применить к полю некоторое известное преобразование, например преобразование Фурье с использованием линзы, а затем снова измерить величину. Оказывается, если вы знаете величину вашего поля до и после преобразования и знаете само преобразование, вы можете вывести фазу с помощью алгоритма G-S. Я думаю, это то, что вам нужно.

Похоже, вы основывались на странице Википедии для алгоритма GS. Это решение немного другой проблемы, часто встречающейся в голографии. В этом случае у вас есть гауссовский лазерный луч, для которого вы можете модулировать фазу как угодно, но вы не можете контролировать амплитуду. Затем вы преобразуете Фурье это поле, например. используя линзу, и вы хотите впоследствии создать определенный шаблон интенсивности. Оказывается, алгоритм G-S позволяет это сделать, но форма алгоритма немного отличается. Именно это представлено на странице Википедии.

Что касается вас, вы не хотите предполагать поле ввода Гаусса. Вместо этого вы хотите использовать измеренное поле, соответствующее до преобразования, и другое измеренное поле, соответствующее после преобразования. Из вашего вопроса не ясно, есть ли у вас на самом деле оба из них. Если вы этого не сделаете, вам может потребоваться изменить оптическую настройку. Кроме того, я считаю, что это сработает, только если вы освещаете когерентным светом.

Наконец, чтобы ответить на ваш фактический вопрос, вы должны подумать, что означает фаза. В вашем случае изменение фазы вызвано большей длиной пути через воду, чем через воздух. Следовательно, вы измеряете «толщину» воды. Если толщина воды пространственно изменяется на вашем изображении, вы должны построить изображение фазы, и это действительно то, что вы делаете здесь:

изображенияc (угол (A))

Имейте в виду, что фаза оборачивается, поэтому, если у вас есть толщина воды, превышающая длину волны, вы получите полосы, и может быть сложно определить фактическую толщину воды.

РЕДАКТИРОВАТЬ (в ответ на редактирование ОП):

Это снова несколько другая проблема, и я не думаю, что алгоритм Герхберга-Сакстона вам здесь поможет. Вместо этого я рекомендую изучить внеосевую голографию. Это включает в себя интерференцию вашего объектного луча и эталонного луча под углом, что вы, кажется, уже сделали (?).

Чтобы вычислить фазу, вы должны выполнить преобразование Фурье, пространственную фильтрацию и обратное обратное преобразование Фурье. Попофф дает доступное объяснение этому на своем веб-сайте: https://www.wavefrontshaping.net/post/id/12, и есть несколько хороших статей по этому поводу, например, обзор, сделанный Verrier и Atlan в Applied Optics 2011.

person RPM    schedule 07.11.2020
comment
Привет, сэр, спасибо за ваш ответ. Я отредактировал и уточнил свой вопрос, надеюсь, это поможет вам лучше понять мой вопрос. - person void; 08.11.2020
comment
Я отредактировал свой ответ в свете этого. Мы довольно далеко отклоняемся от вопросов программирования, поэтому, если у вас есть какие-либо дополнительные вопросы, мы, возможно, должны использовать другой носитель :). - person RPM; 08.11.2020
comment
Я приложил к исходному сообщению изображение графика, полученного из журнальной статьи, я думаю, что это лучший способ измерить и представить фазовый сдвиг для разных изображений, но я не уверен, как это сделать, и я думаю, совершенно невозможно сделать это с моим кодом. Могу ли я получить некоторую помощь с этим? Спасибо. - person void; 09.11.2020
comment
Я не могу многого сказать по приложенному вами графику - документ был бы более информативным. S-параметры больше используются в микроволновых приложениях, но я полагаю, что вы могли бы использовать их в контексте оптики. Возможно, усредняя фазу по всему изображению? Трудно сказать без дополнительной информации. - person RPM; 09.11.2020
comment
Название статьи называется «Измерение и прогнозирование влажности чайных листьев с использованием волноводной радиочастотной антенны», но методы, которые они использовали, отличаются от моих. Частоты и измерение высокого содержания влаги, независимое от плотности, с использованием фазовых сдвигов на двух микроволновых частотах, эти 3 статьи делают то же самое, что и я, но используют разные методы. Кажется, что в моем коде совершенно невозможно получить графики, которые они сделали. - person void; 09.11.2020
comment
Это все бумаги, которые используют микроволны. Это принципиально сильно отличается от того, что вы делаете, из ваших изображений похоже, что вы используете HeNe. - person RPM; 09.11.2020