Coastal-Imaging-Research-Network / cBathy-Toolbox

Routines needed to run cBathy + demos
https://github.com/Coastal-Imaging-Research-Network/cBathy-toolbox/wiki/cBathy-User-Manual
GNU General Public License v3.0
25 stars 23 forks source link

Connection between CIRN-Quantitative-Coastal-Imaging-Toolbox and cBathy? #61

Closed sivaiahborra closed 2 years ago

sivaiahborra commented 4 years ago

Dear All, As I started newly working on CIRN-Quantitative-Coastal-Imaging-Toolbox, I have a query that how CIRN-Quantitative-Coastal-Imaging-Toolbox is connected to cBathy?. Currently , I am working on CIRN-Quantitative-Coastal-Imaging-Toolbox. Do I need to finish this in order to work with cBathy or is it individual? I mean I understood bit but, still have a confusion that is output of CIRN-Quantitative-Coastal-Imaging-Toolbox essential to run cBathy or can we run as it's own?

I came to know that some statistical image products such as timex, dark, bright and variance images will be produced, pixel instruments .mat file will also be created. So, do we use these outputs as inputs for cBathy?..

Thank you

sivaiahborra commented 3 years ago

Thank you for the clarification. I will do and let you know if I have any questions. Thank you.

On Wed, 10 Mar, 2021, 11:46 am Erwin, notifications@github.com wrote:

You’re at the stage you want to test on cBathy, so you do not change it in pixinstruments, you let t_mod be the time vector that goes in

analyzeBathyCollect(xyz, t_mod, data, cam, bathy)

For the length of the time vector, I am thinking to much in Python now, you can just make it t_mod = unique(round(diff(t)606024,4)):unique(round(diff(t)606024,4)):length(t)unique(round(diff(t)606024,4))

But again, it is better to sort out your timing-issue.

I am saying this because between your timestacks as plotted above and the one showed in the cBathy Debug mode (#61 (comment) https://github.com/Coastal-Imaging-Research-Network/cBathy-Toolbox/issues/61#issuecomment-784125486) there is a difference in the time-stamp, and thus your estimations return NaNs because it is non-physical, not within the analysis range of cBathy... So, pay a lot of attention to the differences you observe yourself.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Coastal-Imaging-Research-Network/cBathy-Toolbox/issues/61#issuecomment-794947680, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOKXS4RRFYXN3DPHBVDEHETTC4FDFANCNFSM4QFCJXPA .

sivaiahborra commented 3 years ago

Dear Erwin, First let me check what I understood from you is correct or not that first, I need to create a variable t_mod by line of your code and replace epoch variable with t_mod everywhere. if so, I have created t_mod variable by your code, added in stack file and replaced epoch variable in supporting functions of cBathy (analyzeBathyCollect.m, analyzeSingleBathyRun.m, plotBathyCollect.m)) with t_mod like this (from analyzeBathyCollect(xyz, epoch, data, cam, bathy) to analyzeBathyCollect(xyz, t_mod, data, cam, bathy) , similarly, from epoch = matlab2Epoch(epoch) to t_mod= matlab2Epoch(t_mod) etc.) and one more thing that I have changed the value of t_mod(1) < 10^5 in line 30 of analyzeBathyCollect.m before edit it is epoch(1) < 10^8 since as I said before in previous comments that kind of issue while keeping epoch(1) < 10^8 instead of epoch(1) < 10^5 because my t values are around 7.3810 e+05.

Same results are coming as checking for waves by debugging (params.debug.production = 0; 26 line of argus02.m ) Please let me know whether what I understood is fine or not..

RobHolman commented 3 years ago

Dear @sivaiahborra

I am not sure whether it matter much that your time vector is not of the size n^2, in the end you do an FFT. I think it would be better to stay to the n^2 length of your signal, which in your case is 512 epochs >> which is quite a short time-series but not impossible.

But I think that is not your problem anyways but you should really check out your time stamps.

To do so, lets do a little trick for now to check what you get if you change the time vector to t_mod = 0:unique(round(diff(t)*60*60*24,4)):length(t)*unique(round(diff(t)*60*60*24,4)) Of course, you need to sort out your timing properly, but try this for now. If the system hasn't changed (@RobHolman ) the epochs are only used to calculate a deltaT and thus this should work.

Then go through the debug mode as has been said earlier and as @KateBrodie has indicated above.

Have a nice day.

@bergsmaE - It shouldn't matter whether your time series length is a power of 2. That was a holdover from the distant past. Let me know if I am wrong.

@sivaiahborra - scanning this thread, the only issue I see is from your entry "15 days ago" (so around 23 Feb or so) when you showed debug results. In the 2 by 2 graphic neither of the time stacks show up (bottom two plots). In fact, the time values on the time axis imply that you only have one sample in t. Likely this means that you have entered time as a row vector rather than a column. In the call to analyzeBathyCollect, if your time vector is called t, just enter t(:) to force it to be a column.

sivaiahborra commented 3 years ago

Thanks for the tip! I will try it and get back to you

On Thu, 11 Mar, 2021, 3:57 am Rob Holman, @.***> wrote:

Dear @sivaiahborra https://github.com/sivaiahborra

I am not sure whether it matter much that your time vector is not of the size n^2, in the end you do an FFT. I think it would be better to stay to the n^2 length of your signal, which in your case is 512 epochs >> which is quite a short time-series but not impossible.

But I think that is not your problem anyways but you should really check out your time stamps.

To do so, lets do a little trick for now to check what you get if you change the time vector to t_mod = 0:unique(round(diff(t)606024,4)):length(t)unique(round(diff(t)6060*24,4))

Of course, you need to sort out your timing properly, but try this for now. If the system hasn't changed (@RobHolman https://github.com/RobHolman ) the epochs are only used to calculate a deltaT and thus this should work.

Then go through the debug mode as has been said earlier and as @KateBrodie https://github.com/KateBrodie has indicated above.

Have a nice day.

@bergsmaE https://github.com/bergsmaE - It shouldn't matter whether your time series length is a power of 2. That was a holdover from the distant past. Let me know if I am wrong.

@sivaiahborra https://github.com/sivaiahborra - scanning this thread, the only issue I see is from your entry "15 days ago" (so around 23 Feb or so) when you showed debug results. In the 2 by 2 graphic neither of the time stacks show up (bottom two plots). In fact, the time values on the time axis imply that you only have one sample in t. Likely this means that you have entered time as a row vector rather than a column. In the call to analyzeBathyCollect, if your time vector is called t, just enter t(:) to force it to be a column.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Coastal-Imaging-Research-Network/cBathy-Toolbox/issues/61#issuecomment-796231922, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOKXS4ROMHGP3JRMJLQCJZ3TC7P4PANCNFSM4QFCJXPA .

sivaiahborra commented 3 years ago

Dear @RobHolman As you said that In the call to analyzeBathyCollect, if your time vector is called t, just enter t(:) to force it to be a column. So, do I need to change variable t in line 33 of analyzeSingleBathyRunNotCIL.m from (bathy = analyzeBathyCollect(xyz, t, data, cam, bathy); to bathy = analyzeBathyCollect(xyz, t(:), data, cam, bathy);. Is it right place where I am changing t to t(:)? if it's right, still the same is showing blank image while running democBathy.m

Thank you

RobHolman commented 3 years ago

Your interpretation of what to do is correct.

If you do that and run in debug, you should see time stacks in the figure and you should see the y-axis list a range of times, which it wasn’t doing before.

Rob Holman SECNAV/CNO Chair in Oceanography

104 Ocean Admin Bldg. CEOAS-OSU Corvallis, Oregon, USA 97331-5503 ph: 1-541-737-2914 @.*** http://cil-www.coas.oregonstate.edu

On Mar 11, 2021, at 1:04 AM, sivaiahborra @.***> wrote:

[This email originated from outside of OSU. Use caution with links and attachments.]

Dear @RobHolman As you said that In the call to analyzeBathyCollect, if your time vector is called t, just enter t(:) to force it to be a column. So, do I need to change variable t in line 33 of analyzeSingleBathyRunNotCIL.m from (bathy = analyzeBathyCollect(xyz, t, data, cam, bathy); to bathy = analyzeBathyCollect(xyz, t(:), data, cam, bathy);. Is it right place where I am changing t to t(:)? if it's right, still the same is showing blank image while running democBathy.m

Thank you

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

sivaiahborra commented 3 years ago

Dear @RobHolman As I am rununing democBathy for debugging while keeping params.debug.production = 0; (26 line of argus02a.m) and bathy = analyzeBathyCollect(xyz, t(:), data, cam, bathy); (line 33 of analyzeSingleBathyRunNotCIL.m), and gave analysis tile [200 250 25 700 750 25], it's throwing me following error.

Error using scatter (line 93) CData must be an RGB triplet, an M-by-1 vector of the same length as X, or an M-by-3 matrix.

Error in plotStacksAndPhaseMaps (line 45) h=scatter(xyz(:,1),xyz(:,2),3,angle(G(ind,:)),'filled');

Error in analyzeBathyCollect (line 40) plotStacksAndPhaseMaps( xyz, epoch, data, f, G, bathy.params );

Error in analyzeSingleBathyRunNotCIL (line 33) bathy = analyzeBathyCollect(xyz, t(:), data, cam, bathy);

Error in democBathy (line 11) bathy = analyzeSingleBathyRunNotCIL(stackName, stationStr);

When i keep params.debug.DOPLOTSTACKANDPHASEMAPS = 0; (27 line of argus02a.m) and same time, here is an error and images are same as earlier post

Error using getappdata Value must be a handle.

Error in waitbar>extractHandles (line 283) handles = getappdata(fighandle,'TMWWaitbar_handles');

Error in waitbar (line 90) handles = extractHandles(whichbar);

Error in analyzeBathyCollect (line 58) hWait = waitbar(0, str);

Error in analyzeSingleBathyRunNotCIL (line 33) bathy = analyzeBathyCollect(xyz, t(:), data, cam, bathy);

Error in democBathy (line 11) bathy = analyzeSingleBathyRunNotCIL(stackName, stationStr);

Thank you.

RobHolman commented 3 years ago

Is the analysis tile 200, 700 in your imaged domain? I think your y sampling stopped somewhere around 500?? Correct me if I’m wrong.

Rob Holman SECNAV/CNO Chair in Oceanography

104 Ocean Admin Bldg. CEOAS-OSU Corvallis, Oregon, USA 97331-5503 ph: 1-541-737-2914 @.*** http://cil-www.coas.oregonstate.edu

On Mar 12, 2021, at 7:23 PM, sivaiahborra @.***> wrote:

[This email originated from outside of OSU. Use caution with links and attachments.]

Dear @RobHolman As I am rununing democBathy for debugging while keeping params.debug.production = 0; (26 line of argus02a.m) and bathy = analyzeBathyCollect(xyz, t(:), data, cam, bathy); (line 33 of analyzeSingleBathyRunNotCIL.m), and gave analysis tile [200 250 25 700 750 25], it's throwing me following error.

Error using scatter (line 93) CData must be an RGB triplet, an M-by-1 vector of the same length as X, or an M-by-3 matrix.

Error in plotStacksAndPhaseMaps (line 45) h=scatter(xyz(:,1),xyz(:,2),3,angle(G(ind,:)),'filled');

Error in analyzeBathyCollect (line 40) plotStacksAndPhaseMaps( xyz, epoch, data, f, G, bathy.params );

Error in analyzeSingleBathyRunNotCIL (line 33) bathy = analyzeBathyCollect(xyz, t(:), data, cam, bathy);

Error in democBathy (line 11) bathy = analyzeSingleBathyRunNotCIL(stackName, stationStr);

When i keep params.debug.DOPLOTSTACKANDPHASEMAPS = 0; (27 line of argus02a.m) and same time, here is an error and images are same as earlier post

Error using getappdata Value must be a handle.

Error in waitbar>extractHandles (line 283) handles = getappdata(fighandle,'TMWWaitbar_handles');

Error in waitbar (line 90) handles = extractHandles(whichbar);

Error in analyzeBathyCollect (line 58) hWait = waitbar(0, str);

Error in analyzeSingleBathyRunNotCIL (line 33) bathy = analyzeBathyCollect(xyz, t(:), data, cam, bathy);

Error in democBathy (line 11) bathy = analyzeSingleBathyRunNotCIL(stackName, stationStr);

Thank you.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

sivaiahborra commented 3 years ago

Dear @RobHolman, Actually, I gave the x and y limits of Grid generated by G2_pixelInstruments.m are [30 440] and [30 500] shown below

pixInst(1).type='Grid';
pixInst(1). dx =5;
pixInst(1). dy =5;
pixInst(1). xlim =[30 400];
pixInst(1). ylim =[30 500];
pixInst(1).z={}; % 

So, I must give region of analysis tile lies between the above said range of x and y, then I gave analysis tile as [200 350 10 200 300 25], then the same issue is repeating shown little below

Error using getappdata Value must be a handle.

Error in waitbar>extractHandles (line 283) handles = getappdata(fighandle,'TMWWaitbar_handles');

Is my analysis tile proper or not? Thank you.

RobHolman commented 3 years ago

I'm guessing that you are now looking at a better area of your data. But I have no idea what the waitbar error is. Put a breakpoint there and try cutting and pasting the offending lines of code. It looks like it just affects the waitbar which is of no importance. @burritobrittany is this stuff that you added?

burritobrittany commented 3 years ago

I did not. Even before the creation of the new toolbox I had trouble with the waitbar and typically commented it out.

sivaiahborra commented 3 years ago

Dear @RobHolman @burritobrittany I am not aware of what's an error of waitbar. I got it as I am trying to get bathymetry from cBathy by using pixinstruments created by QCIT. Now, I will see where I have to comment to line of code to avoid waitbar, then I will run cBathy and let you know.

Thank you.

RobHolman commented 3 years ago

Did it work?

sivaiahborra commented 3 years ago

Dear Rob, I have commented wherever the code is involved with waitbar in analyzeBathyCollect.m (line 58 hWait = waitbar(0, str); line 63 waitbar(xind/length(bathy.xm), hWait) and line 109 delete(hWait);) Now the given analysis tile is [200 300 5 150 300 25] But, again, the same blank images are coming.

RobHolman commented 3 years ago

Can you put your data somewhere I can grab it (anonymous ftp is my first choice). I would need the xyz locations (M pixels by 3 matrix), the time vector (N points by 1 vector) and the data (N rows by M columns).

Rob Holman SECNAV/CNO Chair in Oceanography

104 Ocean Admin Bldg. CEOAS-OSU Corvallis, Oregon, USA 97331-5503 ph: 1-541-737-2914 @.*** http://cil-www.coas.oregonstate.edu

On Mar 18, 2021, at 11:51 AM, sivaiahborra @.***> wrote:

[This email originated from outside of OSU. Use caution with links and attachments.]

Dear Rob, I have commented wherever the code is involved with waitbar in analyzeBathyCollect.m (line 58 hWait = waitbar(0, str); line 63 waitbar(xind/length(bathy.xm), hWait) and line 109 delete(hWait);) Now the given analysis tile is [200 300 5 150 300 25] But, again, the same blank images are coming.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

sivaiahborra commented 3 years ago

I can share here itself data of my testStack102210Duck.mat whose variables are (data, pixinst, t and xyz) by zip format. testStack102210Duck.zip Please do let me know if it's not proper.

Note: I have created the pixel instruments for video of 5 min duration as sample case and this data is from single fixed camera.

Thank you for your time.

RobHolman commented 3 years ago

I need your params file too. Might be called argus something.

Rob Holman SECNAV/CNO Chair in Oceanography

104 Ocean Admin Bldg. CEOAS-OSU Corvallis, Oregon, USA 97331-5503 ph: 1-541-737-2914 @.*** http://cil-www.coas.oregonstate.edu

On Mar 18, 2021, at 1:55 PM, sivaiahborra @.***> wrote:

[This email originated from outside of OSU. Use caution with links and attachments.]

I can share here itself data of my testStack102210Duck.mat whose variables are (data, pixinst, t and xyz) by zip format. testStack102210Duck.zip Please do let me know if it's not proper.

Thank you for your time.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

sivaiahborra commented 3 years ago

Here it is. These are both argus02a.m and argus02b.m

argus02b.zip

Note: I am not sure is this mistake or something else in analyzeSingleBathyRunNotCIL.m that it's written a variable name stackPnStr instead of stackName. Because while I am going through one by one functions used in democBathy.m, in analyzeSingleBathyRunNotCIL, I got that Undefined function or variable 'stackPnStr'.. I thought it's maybe due to mismatch of name of variable used in democBathy.m (stackName = 'testStack102210Duck';) and analyzeSingleBathyRunNotCIL (load(stackPnStr)).

Thank you.

RobHolman commented 3 years ago

I looked a bit at your data. I first used findInterpMap and useInterpMap to show the data as a movie. I can send you code when I have a bit more time.

The movie looks like waves breaking on a beach, but the scales are all wrong. x goes from 30 to 400, but the waves only take a few seconds to transit that distance. I’m suspicious that your image geometries are wrong.

Gotta run.

Rob Holman SECNAV/CNO Chair in Oceanography

104 Ocean Admin Bldg. CEOAS-OSU Corvallis, Oregon, USA 97331-5503 ph: 1-541-737-2914 @.*** http://cil-www.coas.oregonstate.edu

On Mar 18, 2021, at 2:15 PM, sivaiahborra @.***> wrote:

[This email originated from outside of OSU. Use caution with links and attachments.]

Here it is. These are both argus02a.m and argus02b.m

argus02b.zip

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

sivaiahborra commented 3 years ago

Dear @RobHolman, Thank you for the info and here I am mentioning whatever inputs I used to create my pixel Instruments by using . Quantitative Coastal Imaging Toolbox (QCIT) of @burritobrittany

In this Zip file, I gave all inputs and outputs used to create the Pixel instruments and as well as image products (Timex, bright and dark)

Inputs of A0_movie2frames.m of QCIT Time of the first frame ------------to= datenum(2020,11,02,16,29,0); Frame rate given ------------------frameRate=2; %fps

Inputs of A_formatIntrinsics.m User input ---------Calib_Results.mat for calibration results of my camera with resolution of 1920x1080 pixles

Inputs of B_gcpSelection.m Given first frame of video ---- FixedSingle_1604334540000.tif shown in zip file

Inputs of C_singleExtrinsicSolution.m intrinsics matfile output by A_formatIntrinsics ------ FixedSingle_IO.mat shown in zip file GCP UVd Coordinates produced by B_gcpSelection ----- FixedSingle_gcpUVdInitial.mat GCP World coordinates ----- FixedSingle_UTM_GCPS.txt description of the GCP World coordinate system ----- gcpCoord='WGS 84 / UTM zone 44N; meters'; I gave here 44N instead of 44Q, May be it might be the issue? if so, I will run QCIT again and give you pixelinstruments by keeping 44Q. Image used (first frame) ------------------------------------------imagePath='.\movie2images\FixedSingle_1604334540000.tif'; Order of using GCPs ---------------------------------------------gcpsUsed=[1 2 4 5 6 7 8 9 10]; initial guess of extrinsics ---------------------------extrinsicsInitialGuess= [ 745888,1959765,17 deg2rad(75) deg2rad(74) deg2rad(0)]; % [ x y z azimuth tilt swing] number of knowns ----------------------------------extrinsicsKnownsFlag= [ 0 0 0 0 0 1]; % [ x y z azimuth tilt swing]

Inputs of D_gridGenExampleRect.m Image (first frame) used for rectification -------------FixedSingle_1604334540000.tif Intrinsics and Extrinsics (IOEO) calibration results produced by C_singleExtrinsicSolution.m ---- FixedSingle_IOEOInitial.mat description of the World coordinate system ----------worldCoord='WGS 84 / UTM zone 44N; meters'; Local origin and angle ----------------------------------localOrigin = [745888,1959765]; % [ x y] localAngle =[315]; % Degrees +CCW from Original World X and corresponding image on how to take local angle shown in zip. Please do let me know is my local angle correct accordingly the picture I shown? your grid in rotated local coordinates. -----------------localFlagInput=1; limits (ixlim, iylim) and resolution(idxdy) of your rectified grid-------ixlim=[0 700]; iylim=[0 1000]; idxdy=2; Elevation Specification ------------------- iz=0;

Inputs of G1_imageProducts.m IOEO calibration results by C_singleExtrinsicSolution.m -------------------------------------------- FixedSingle_IOEOInitial.mat saved rectification grid created by D_gridGenExampleRect.m -----------GRID_FixedSingle_UTM44N_2mResolution.mat For local coordinates local (localFlag==1) or world (localFlag==0)---------------localFlag=1; time vector --------------------------------- *to= datenum(2020,11,02,16,30,0); dt = 0.5; N = 592; t=to+(0:(N-1))(dt/24/3600); Z vector ------------------------------------------------------------------------zVariable=zeros([1,592]);**

Inputs of G2_pixelInstruments.m IOEO calibration results by C_singleExtrinsicSolution.m -------------------------------------------- FixedSingle_IOEOInitial.mat time vector --------------------------------- *to= datenum(2020,11,02,16,30,0); dt = 0.5; N = 592; t=to+(0:(N-1))(dt/24/3600); Z vector ------------------------------------------------------------------------zFixedCam=zeros([1,592]); saved rectification grid created by D_gridGenExampleRect.m -----------GRID_FixedSingle_UTM44N_2mResolution.mat For local coordinates local (localFlag==1) or world (localFlag==0)---------------localFlag=1; For Grid** pixInst(1).type='Grid'; pixInst(1). dx =5; pixInst(1). dy =5; pixInst(1). xlim =[30 400]; pixInst(1). ylim =[30 500]; pixInst(1).z={};

For yTransect pixInst(2).type='yTransect'; pixInst(2).x= 150; pixInst(2).ylim=[40 500]; pixInst(2).dy =.2; pixInst(2).z ={};

For xTransect pixInst(3).type='xTransect'; pixInst(3).y= 150; pixInst(3).xlim=[30 400]; pixInst(3).dx =.2; pixInst(3).z ={};

Hopefully, I gave detailed information on what I have done to create Pixel Instruments and Image products along with all .mat files and images in Zip file to have an idea that where am I doing mistake or error.

Hope these details are helpful

Thank you for your time

QCIT.zip

sivaiahborra commented 3 years ago

Dear @RobHolman

As I changed description of the World coordinate system that from worldCoord='WGS 84 / UTM zone 44N; meters'; to worldCoord='WGS 84 / UTM zone 44Q; meters'; in both C_singleExtrinsicSolution.m (line 112) and D_gridGenExampleRect.m (129) of QCIT run again and created pixelInstruments shown in file. Hope it useful and let me know if are there any errors in creation of pixelinstruments?

FixedSingle_pixInst (2).zip

Thank you.

sivaiahborra commented 3 years ago

Dear @RobHolman,

I had taken grid of cBathy by covering some of the beach portion as well. Is it ok to take like that or Does my grid of cBathy need to cover only ocean part itself?

RobHolman commented 3 years ago

you don’t have to worry about only sampling water with cBathy. It will happily return nans for beach tiles that have no wave activity.

Rob Holman SECNAV/CNO Chair in Oceanography

104 Ocean Admin Bldg. CEOAS-OSU Corvallis, Oregon, USA 97331-5503 ph: 1-541-737-2914 @.*** http://cil-www.coas.oregonstate.edu

On Mar 21, 2021, at 8:59 AM, sivaiahborra @.***> wrote:

[This email originated from outside of OSU. Use caution with links and attachments.]

Dear @RobHolman,

I had taken grid of cBathy by covering some of the beach portion as well. Is it ok to take like that or Does my grid of cBathy need to cover only ocean part itself?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

sivaiahborra commented 3 years ago

Ok. Thank you Hope the above details are helpful

RobHolman commented 3 years ago

I may have been wrong about you having a geometry problem. The waves appear to be much longer period than I expected.

I got things to work using the code below. There were several details that may have been tricking you (and that we likely should fix).

  1. Depending on which version of cBathy you are using you may NOT be able to use the argus02a.m params file. There was an update that allowed you to use an alternate solver (not nlinfit) if you don’t have that toolbox. That requires a line params.nlinfit = 1 (or 0) which is NOT in argus02a.m. When the program finds that line is missing, it triggers and error and just returns nans for results. If you are using a later version, make sure you have that line. i.e. start with argus02b. Also btw, you should name your params file appropriately for your beach, like ‘myBeach.m’ rather than argus02a.m.

  2. The second issue was a bit tricky. Somehow you have pixels in your stack that apparently were out of the camera image so the stack consists of only zeros. That should never happen, although we should also catch this error. The issue is when you prepare the Fourier data there is a line that essentially normalizes by the variance for each pixel. For yours this is dividing by zero, so returns nans’. I got rid of the “null” pixels in my code below.

  3. You time vector should be a column in epoch time, not matlab datenum.

  4. I ran this in debug mode (production = 0; all other debug things set to 1). The phase maps show reasonable phases to the middle x values then get short. I don’t know what to think about this.

Here is the code that I used:

%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear

stackName = 'testStack102210Duck.mat'; load(stackName)

% start by viewing the data as a movie to make sure it looks valid. pa = [30 2.5 400 30 2.5 500]; % define a pixel array to view wave motion [x,y,map] = findInterpMap2(xyz,[30 2.5 400 30 2.5 500], 1); figure(2); clf; colormap gray Nx = length(x); Ny = length(y); I = nan(Ny,Nx); % view the data as a movie for ii = 1: length(epoch) I = reshape(data(ii,map),Ny,Nx); imagesc(x,y,log(I)); axis xy; axis equal; axis tight pause(0.2) end

% the data looks OK, although longer period waves than I expected. % now do a cBathy. I ran this both in debug and non-debug mode. % In debug mode (production equal 0), I viewed all of the options (set them % to 1). epoch = matlab2Epoch(t'); % ensure time is a column, in epoch time good = find(var(data) > 0); % find and remove null data. It is odd to % even have these columns! data = data(:,good); xyz = xyz(good,:); % now run cBathy. eval('argus02b'); % this was my edited params file but you should % develop and name one for your beach. cam = ones(size(xyz,1),1); % I assume that you have only one camera % prepare bathy structure then run cBathy. bathy.epoch = num2str(epoch(1)); bathy.sName = stackName; bathy.params = params; bathy = analyzeBathyCollect(xyz, epoch, double(data), cam, bathy);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

I hope it works for you.

Rob Holman SECNAV/CNO Chair in Oceanography

104 Ocean Admin Bldg. CEOAS-OSU Corvallis, Oregon, USA 97331-5503 ph: 1-541-737-2914 @.*** http://cil-www.coas.oregonstate.edu

On Mar 20, 2021, at 6:46 AM, sivaiahborra @.***> wrote:

[This email originated from outside of OSU. Use caution with links and attachments.]

Dear @RobHolman

As I changed description of the World coordinate system that from worldCoord='WGS 84 / UTM zone 44N; meters'; to worldCoord='WGS 84 / UTM zone 44Q; meters'; in both C_singleExtrinsicSolution.m (line 112) and D_gridGenExampleRect.m (129) of QCIT run again and created pixelInstruments shown in file. Hope it useful and let me know if are there any errors in creation of pixelinstruments?

FixedSingle_pixInst (2).zip

Thank you.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

sivaiahborra commented 3 years ago

Dear @RobHolman, Thank you for the great info. I will go through your code and get back to you.

sivaiahborra commented 3 years ago

Dear @RobHolman, As I followed your suggestions and modified the code accordingly shown below. I am getting the following results.

Screenshot (8) Screenshot (9)

Here is my modified code. Hope it looks fine.

close all clear all %% stationStr = 'RKbeach' stackName = 'testStack102210Duck.mat'; % name of the stack file eval(stationStr) % createse the params load(stackName) % loading the stack data

%% epoch = matlab2Epoch(t'); % time vector in epoch cam = ones(size(xyz,1),1); good = find(var(data) > 0); % find and remove null data. It is odd to even have these columns! data = data(:,good); xyz = xyz(good,:); %% bathy structure bathy.epoch = num2str(epoch(1)); bathy.sName = stackName; bathy.params = params; %% Run cBathy bathy = analyzeBathyCollect(xyz, epoch, double(data), cam, bathy); %% Plot the results plotBathyCollect(bathy)

Here is my param file RKbeach.m params.stationStr = 'RKbeach'; params.dxm = 5; % analysis domain spacing in x params.dym = 10; % analysis domain spacing in y params.xyMinMax = [80 400 50 500]; % min, max of x, then y % default to [] for cBathy to choose % params.xyMinMax = [min(xyz(: ,1)) max(xyz(:,1)) min(xyz(:,2)) max(xyz(:,2))]; % params.tideFunction = 'cBathyTide'; % tide level function for evel %% Power user settings from here down %%%%%%% params.MINDEPTH = 0.25; % for initialization and final QC params.minValsForBathyEst = 4; % min num f-k pairs for bathy est. params.QTOL = 0.5; % reject skill below this in csm params.minLam = 10; % min normalized eigenvalue to proceed params.Lx = 3params.dxm; % tomographic domain smoothing params.Ly = 3params.dym; % params.kappa0 = 2; % increase in smoothing at outer xm params.DECIMATE = 1; % decimate pixels to reduce work load. params.maxNPix = 80; % max num pixels per tile (decimate excess) %% f-domain etc. params.fB = [1/18: 1/50: 1/4]; % frequencies for analysis (~40 dof) params.nKeep = 4; % number of frequencies to keep %% debugging options params.debug.production = 0; params.debug.DOPLOTSTACKANDPHASEMAPS = 0; % top level debug of phase params.debug.DOSHOWPROGRESS = 1; % show progress of tiles params.debug.DOPLOTPHASETILE = 1; % observed and EOF results per pt params.debug.TRANSECTX = 200; % for plotStacksAndPhaseMaps params.debug.TRANSECTY = 400; % for plotStacksAndPhaseMaps %% default offshore wave angle. For search seeds. params.offshoreRadCCWFromx = 0; params.nlinfit=1;

Please do have a look on it and let me know if anything seems tricky Hope I can go ahead with this script and results for comparison of my surveyed bathymetry.

Thank you for your time.

RobHolman commented 3 years ago

Your results look like what I saw.

Note that if you are in debug mode (as you were), the first plots will show phase maps for the entire domain for all of the possible frequencies (see below). You can think of the banding as maps of waves components at each frequency. They clearly show an increasing wavelength as you go deeper, as you expect for a deepening beach. But further offshore the wavelengths seem to shorten again, a surprise to me. That is born out with your batty plots. I don’t know why this is. Perhaps you need to try a different test case.

@.***

Rob Holman SECNAV/CNO Chair in Oceanography

104 Ocean Admin Bldg. CEOAS-OSU Corvallis, Oregon, USA 97331-5503 ph: 1-541-737-2914 @.**@.> http://cil-www.coas.oregonstate.edu

On Mar 24, 2021, at 8:50 AM, sivaiahborra @.**@.>> wrote:

[This email originated from outside of OSU. Use caution with links and attachments.]

Dear @RobHolman, As I followed your suggestions and modified the code accordingly shown below. I am getting the following results.

Here is my modified code. Hope it looks fine.

close all clear all %% stationStr = 'RKbeach' stackName = 'testStack102210Duck.mat'; % name of the stack file eval(stationStr) % createse the params load(stackName) % loading the stack data

%% epoch = matlab2Epoch(t'); % time vector in epoch cam = ones(size(xyz,1),1); good = find(var(data) > 0); % find and remove null data. It is odd to even have these columns! data = data(:,good); xyz = xyz(good,:); %% bathy structure bathy.epoch = num2str(epoch(1)); bathy.sName = stackName; bathy.params = params; %% Run cBathy bathy = analyzeBathyCollect(xyz, epoch, double(data), cam, bathy); %% Plot the results plotBathyCollect(bathy)

Here is my param file RKbeach.m params.stationStr = 'RKbeach'; params.dxm = 5; % analysis domain spacing in x params.dym = 10; % analysis domain spacing in y params.xyMinMax = [80 400 50 500]; % min, max of x, then y % default to [] for cBathy to choose % params.xyMinMax = [min(xyz(: ,1)) max(xyz(:,1)) min(xyz(:,2)) max(xyz(:,2))]; % params.tideFunction = 'cBathyTide'; % tide level function for evel %% Power user settings from here down %%%%%%% params.MINDEPTH = 0.25; % for initialization and final QC params.minValsForBathyEst = 4; % min num f-k pairs for bathy est. params.QTOL = 0.5; % reject skill below this in csm params.minLam = 10; % min normalized eigenvalue to proceed params.Lx = 3params.dxm; % tomographic domain smoothing params.Ly = 3params.dym; % params.kappa0 = 2; % increase in smoothing at outer xm params.DECIMATE = 1; % decimate pixels to reduce work load. params.maxNPix = 80; % max num pixels per tile (decimate excess) %% f-domain etc. params.fB = [1/18: 1/50: 1/4]; % frequencies for analysis (~40 dof) params.nKeep = 4; % number of frequencies to keep %% debugging options params.debug.production = 0; params.debug.DOPLOTSTACKANDPHASEMAPS = 0; % top level debug of phase params.debug.DOSHOWPROGRESS = 1; % show progress of tiles params.debug.DOPLOTPHASETILE = 1; % observed and EOF results per pt params.debug.TRANSECTX = 200; % for plotStacksAndPhaseMaps params.debug.TRANSECTY = 400; % for plotStacksAndPhaseMaps %% default offshore wave angle. For search seeds. params.offshoreRadCCWFromx = 0; params.nlinfit=1;

Please do have a look on it and let me know if anything seems tricky Hope I can go ahead with this script and results for comparison of my surveyed bathymetry.

Thank you for your time.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

sivaiahborra commented 3 years ago

Dear @RobHolman,, Thank you for your clarification. I will try with another test case and see whether this is continuing or not? I hope as of now, there are no any technical errors in entire code.

sivaiahborra commented 3 years ago

Dear @RobHolman, If I want to save my wave parameters (wave height, period, frequency, etc) while running cBathy, what extra little bit code I need to add to my above code. Thank you.

RobHolman commented 3 years ago

This seems to be a basic matlab question versus something tricky about cBathy. I get wave heights from other instruments. cBathy returns “dominant frequencies” but these are defined from coherence, not peak power, so are not normally used.

Rob Holman SECNAV/CNO Chair in Oceanography

104 Ocean Admin Bldg. CEOAS-OSU Corvallis, Oregon, USA 97331-5503 ph: 1-541-737-2914 @.*** http://cil-www.coas.oregonstate.edu

On Mar 24, 2021, at 10:25 PM, sivaiahborra @.***> wrote:

[This email originated from outside of OSU. Use caution with links and attachments.]

Dear @RobHolman, If I want to save my wave parameters (wave height, period, frequency, etc) while running cBathy, what extra little bit code I need to add to my above code. Thank you.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

sivaiahborra commented 3 years ago

Dear @RobHolman, Thank you for your clarification as I am also looking to incorporate wave components as well.