Wolfram Language

Processamento de imagens e sinais

Ondas no Grande Lago Salgado

Usando ImageMesh, você pode converter segmentos de imagens em objetos de BoundaryMeshRegion. Estas regiões de malha permitem que você utilize funções em outras áreas, tais como métodos de elementos finitos (FEM).

Para ilustrar esta conexão FEM, determine os principais modos de ondas de superfície no Grande Lago Salgado, em Utah.

In[1]:=
Click for copyable input
img = EntityValue[Entity["Lake", "GreatSaltLake::yw8cf"], "Image"]
Out[1]=

Regularize a imagem com um filtro de deslocamento médio.

In[2]:=
Click for copyable input
img2 = MeanShiftFilter[img, 3, 0.1]
Out[2]=

Obtenha uma segmentação através do crescimento de uma região.

In[3]:=
Click for copyable input
mask = RegionBinarize[img2, \!\(\* GraphicsBox[ TagBox[RasterBox[CompressedData[" 1:eJzt1jEKwkAQQNFdK0uv4C1sLW0VD6AYxSZCFMRzCJ7XiF3SzFb7lf8ggUCK D8MmM99f1sdJSuk67W/r3X3ZdbvHZtY/bNvr+dQ2h1V7a05Nt9h/Xnv21ytJ kiRJkiRJkn5H7tVuGLMqzqo4q+KsiuNW8bKsimNWfbNwXVbF5Yzuqp0xZFUB dBaui5kF/T5AsxJ1jNAsq0qgs3BlOSPDMrMLmvUBDcNnsbqov2x4FrWrdscA NIu6SjCzoEOEZlGniF5Ta0eMmVXCqjjmCJlV5KzaDWNWxXGreFnMKvAIazeM MUfIXEmtKsCs8hSWsCrOqjhmlSRJkiRJkvS/3tRrD1M= "], {{0, 147}, {150, 0}}, {0, 1}, ColorFunction->GrayLevel], BoxForm`ImageTag["Bit", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], DefaultBaseStyle->"ImageGraphics", ImageSizeRaw->{150, 147}, PlotRange->{{0, 150}, {0, 147}}]\), 1/5]
Out[3]=

Extraia um objeto de BoundaryMeshRegion da superfície do lago.

In[4]:=
Click for copyable input
\[ScriptCapitalR] = ImageMesh[mask]
Out[4]=

Crie uma malha da superfície do lago.

In[5]:=
Click for copyable input
\[CapitalOmega] = TriangulateMesh[\[ScriptCapitalR], MaxCellMeasure -> 8]
Out[5]=

Resolva a equação de onda da superfície do lago, determinando primeiro as funções próprias do laplaciano dentro da região do lago.

In[6]:=
Click for copyable input
\[ScriptCapitalL] = -\!\( \*SubsuperscriptBox[\(\[Del]\), \({x, y}\), \(2\)]\(\[CurlyPhi][x, y]\)\);

Usando condição de contorno.

In[7]:=
Click for copyable input
\[ScriptCapitalB] = DirichletCondition[\[CurlyPhi][x, y] == 0, True];

Gere uma base ortonormal de funções próprias Φ com valores próprios Λ.

In[8]:=
Click for copyable input
{\[CapitalLambda], \[CapitalPhi]} = NDEigensystem[{\[ScriptCapitalL], \[ScriptCapitalB]}, \[CurlyPhi][x, y], {x, y} \[Element] \[CapitalOmega], 64];

Mostre os primeiros seis modos de oscilações.

In[9]:=
Click for copyable input
GraphicsGrid[ Partition[ Table[ContourPlot[\[CapitalPhi][[ k]], {x, y} \[Element] \[CapitalOmega], PlotRange -> All, PlotLabel -> \[CapitalLambda][[k]], PlotTheme -> "Minimal"], {k, 6}], 3 ], ImageSize -> 512 ]
Out[9]=

A evolução temporal dos modos de oscilação descendente é dada conforme a seguir.

In[10]:=
Click for copyable input
\[CapitalTheta][\[Lambda]_, \[Xi]_, t_] = FullSimplify[ DSolveValue[Join[{ \!\( \*SubscriptBox[\(\[PartialD]\), \(t, t\)]\(\(TraditionalForm\`\[CurlyTheta]\)[ t]\)\) + \[Xi] \!\( \*SubscriptBox[\(\[PartialD]\), \(t\)]\(\(TraditionalForm\`\ \[CurlyTheta]\)[ t]\)\) == -\[Lambda] \!\(TraditionalForm\`\[CurlyTheta]\)[ t] }, {\!\(TraditionalForm\`\[CurlyTheta]\)[0] == 1, \[CurlyTheta]'[0] == 0} ], \!\(TraditionalForm\`\[CurlyTheta]\)[t], t], {\[Lambda] > 0, \[Xi] > 0, \[Xi]^2 < 4 \[Lambda], t \[Element] Reals} ]
Out[10]=

Expandindo uma perturbação inicial em funções próprias e deixando que estas evoluam no tempo, uma simulação da propagação de ondas em frente ao lago é obtida.

mostre o input completo da Wolfram Language
In[11]:=
Click for copyable input
n = 64; weights = Take[GaussianMatrix[{{n}, n/2}], -n - 1]; weights -= Last[weights]; weights = Most[weights]; weights *= 1/First[weights]; wave[t_] = (\[CapitalTheta][\[CapitalLambda], 0.005, t] weights (\[CapitalPhi] /. {x -> 50, y -> 60} )) . \[CapitalPhi]; waveColors = (Blend[{{-0.01, Purple}, {-0.005, Blue}, {0., Green}, {0.005, Orange}, {0.01, Yellow}}, #] &); anim = Table[ ContourPlot[ wave[t], {x, y} \[Element] \[CapitalOmega], PlotRange -> {-0.01, 0.012}, Contours -> Range[-0.01, 0.012, 0.0005], PlotTheme -> "Minimal", ColorFunctionScaling -> False, ContourStyle -> None, ColorFunction -> waveColors ], {t, 0, 255, 1} ]; ListAnimate[anim]
Reproduzir
Parar

Exemplos Relacionados

de en es fr ja ko ru zh