<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>astrophotography &amp;mdash; Marcin Modest Trzaska</title>
    <link>https://blog.argilus.online/czach/tag:astrophotography</link>
    <description>Piszę, co mi przyjdzie do głowy. Na tematy różne.</description>
    <pubDate>Fri, 11 Sep 2026 05:20:56 +0200</pubDate>
    <item>
      <title>Seestar Mosaic Coverage</title>
      <link>https://blog.argilus.online/czach/seestar-mosaic-coverage</link>
      <description>&lt;![CDATA[Tak coś mnie tknęło… dawno nie robiłem żadnej mozaiki Seestarem.&#xA;Nie robiłem, bo się zniechęciłem — jakoś nie wychodziło to najlepiej…&#xA;&#xA;No i coś mnie tknęło, żeby sprawdzić pokrycie na mapie/obrazku…&#xA;&#xA;I takie coś mam od Klaudiusza. ;-)&#xA;&#xA;!/usr/bin/env python3&#xA;&#34;&#34;&#34;&#xA;seestarmosaiccoverage.py&#xA;&#xA;Wczytuje pliki FIT (Seestar, tryb mozaiki) z podanego folderu i rysuje&#xA;mape pokrycia nieba: kolorem pokazuje, ile klatek pokrywa dany fragment.&#xA;&#xA;Wymagania:&#xA;    pip install astropy numpy matplotlib&#xA;&#xA;Uzycie:&#xA;    python seestarmosaiccoverage.py /sciezka/do/folderuzfit&#xA;    python seestarmosaiccoverage.py /sciezka --fov-w 0.75 --fov-h 1.33 --grid 400&#xA;&#34;&#34;&#34;&#xA;&#xA;import argparse&#xA;import glob&#xA;import os&#xA;import sys&#xA;&#xA;import numpy as np&#xA;from astropy.io import fits&#xA;from astropy.wcs import WCS&#xA;import matplotlib.pyplot as plt&#xA;from matplotlib.path import Path as MplPath&#xA;&#xA;---------- odczyt naglowkow ----------&#xA;&#xA;RAKEYS = [&#34;RA&#34;, &#34;OBJCTRA&#34;, &#34;CRVAL1&#34;]&#xA;DECKEYS = [&#34;DEC&#34;, &#34;OBJCTDEC&#34;, &#34;CRVAL2&#34;]&#xA;ROTKEYS = [&#34;ROTATION&#34;, &#34;PA&#34;, &#34;ROTATANG&#34;, &#34;ORIENTAT&#34;, &#34;ROT&#34;]&#xA;&#xA;def firstpresent(header, keys):&#xA;    for k in keys:&#xA;        if k in header:&#xA;            return header[k]&#xA;    return None&#xA;&#xA;def todecimalra(val):&#xA;    &#34;&#34;&#34;RA moze byc liczba (stopnie) albo string HH:MM:SS.&#34;&#34;&#34;&#xA;    if isinstance(val, (int, float)):&#xA;        return float(val)&#xA;    val = str(val).strip()&#xA;    if &#34;:&#34; in val:&#xA;        h, m, s = [float(x) for x in val.split(&#34;:&#34;)]&#xA;        return (h + m / 60 + s / 3600)  15.0&#xA;    return float(val)&#xA;&#xA;def todecimaldec(val):&#xA;    if isinstance(val, (int, float)):&#xA;        return float(val)&#xA;    val = str(val).strip()&#xA;    sign = -1.0 if val.startswith(&#34;-&#34;) else 1.0&#xA;    val = val.lstrip(&#34;+-&#34;)&#xA;    if &#34;:&#34; in val:&#xA;        d, m, s = [float(x) for x in val.split(&#34;:&#34;)]&#xA;        return sign  (d + m / 60 + s / 3600)&#xA;    return float(val)  sign&#xA;&#xA;def readframepointing(path):&#xA;    &#34;&#34;&#34;Zwraca (radeg, decdeg, rotationdeg, footprintlubNone) dla jednej klatki FIT.&#34;&#34;&#34;&#xA;    header = fits.getheader(path)&#xA;&#xA;    # Sciezka 1: pelne WCS (jesli plik byl plate-solved, np. przez ASTAP)&#xA;    if &#34;CTYPE1&#34; in header and &#34;CRVAL1&#34; in header:&#xA;        try:&#xA;            wcs = WCS(header)&#xA;            footprint = wcs.calcfootprint(header=header)  # 4x2 [ra,dec] w stopniach&#xA;            rac, decc = footprint.mean(axis=0)&#xA;            return rac, decc, 0.0, footprint&#xA;        except Exception:&#xA;            pass&#xA;&#xA;    # Sciezka 2: naglowek Seestara (RA/DEC srodka klatki + ewentualna rotacja)&#xA;    raraw = firstpresent(header, RAKEYS)&#xA;    decraw = firstpresent(header, DECKEYS)&#xA;    if raraw is None or decraw is None:&#xA;        raise ValueError(&#34;brak RA/DEC w naglowku&#34;)&#xA;&#xA;    radeg = todecimalra(raraw)&#xA;    decdeg = todecimaldec(decraw)&#xA;    rotraw = firstpresent(header, ROTKEYS)&#xA;    rotdeg = float(rotraw) if rotraw is not None else 0.0&#xA;&#xA;    return radeg, decdeg, rotdeg, None&#xA;&#xA;---------- projekcja i footprinty ----------&#xA;&#xA;def gnomonic(radeg, decdeg, ra0deg, dec0deg):&#xA;    &#34;&#34;&#34;Rzutuje RA/Dec na plaszczyzne styczna wzgledem (ra0, dec0). Zwraca stopnie.&#34;&#34;&#34;&#xA;    ra, dec = np.radians(radeg), np.radians(decdeg)&#xA;    ra0, dec0 = np.radians(ra0deg), np.radians(dec0deg)&#xA;    dra = ra - ra0&#xA;    denom = np.sin(dec0)  np.sin(dec) + np.cos(dec0)  np.cos(dec)  np.cos(dra)&#xA;    x = np.cos(dec)  np.sin(dra) / denom&#xA;    y = (np.cos(dec0)  np.sin(dec) - np.sin(dec0)  np.cos(dec)  np.cos(dra)) / denom&#xA;    return np.degrees(x), np.degrees(y)&#xA;&#xA;def framecornerstangent(rac, decc, rotdeg, fovw, fovh, ra0, dec0):&#xA;    &#34;&#34;&#34;Rogi klatki (prostokat obrocony o rotdeg) w ukladzie stycznym.&#34;&#34;&#34;&#xA;    xc, yc = gnomonic(rac, decc, ra0, dec0)&#xA;    hw, hh = fovw / 2, fovh / 2&#xA;    local = np.array([(-hw, -hh), (hw, -hh), (hw, hh), (-hw, hh)])&#xA;    theta = np.radians(rotdeg)&#xA;    rot = np.array([[np.cos(theta), -np.sin(theta)],&#xA;                    [np.sin(theta), np.cos(theta)]])&#xA;    rotated = local @ rot.T&#xA;    return rotated + np.array([xc, yc])&#xA;&#xA;def wcscornerstangent(footprintradec, ra0, dec0):&#xA;    x, y = gnomonic(footprintradec[:, 0], footprintradec[:, 1], ra0, dec0)&#xA;    return np.columnstack([x, y])&#xA;&#xA;---------- glowna logika ----------&#xA;&#xA;def buildcoverage(folder, fovw, fovh, gridn):&#xA;    files = sorted(glob.glob(os.path.join(folder, &#34;.fit&#34;)) +&#xA;                    glob.glob(os.path.join(folder, &#34;.fits&#34;)))&#xA;    if not files:&#xA;        sys.exit(f&#34;Nie znaleziono plikow .fit/.fits w: {folder}&#34;)&#xA;&#xA;    raw = []&#xA;    for f in files:&#xA;        try:&#xA;            rac, decc, rot, footprint = readframepointing(f)&#xA;            raw.append((f, rac, decc, rot, footprint))&#xA;        except Exception as e:&#xA;            print(f&#34;[pomijam] {os.path.basename(f)}: {e}&#34;)&#xA;&#xA;    if not raw:&#xA;        sys.exit(&#34;Nie udalo sie odczytac zadnej klatki - sprawdz nazwy kluczy w naglowku (patrz ponizej).&#34;)&#xA;&#xA;    ra0 = float(np.mean([r[1] for r in raw]))&#xA;    dec0 = float(np.mean([r[2] for r in raw]))&#xA;&#xA;    polygons = []&#xA;    for f, rac, decc, rot, footprint in raw:&#xA;        if footprint is not None:&#xA;            corners = wcscornerstangent(footprint, ra0, dec0)&#xA;        else:&#xA;            corners = framecornerstangent(rac, decc, rot, fovw, fovh, ra0, dec0)&#xA;        polygons.append(corners)&#xA;&#xA;    allpts = np.vstack(polygons)&#xA;    pad = 0.1  max(fovw, fovh)&#xA;    xmin, ymin = allpts.min(axis=0) - pad&#xA;    xmax, ymax = allpts.max(axis=0) + pad&#xA;&#xA;    xs = np.linspace(xmin, xmax, gridn)&#xA;    ys = np.linspace(ymin, ymax, gridn)&#xA;    XX, YY = np.meshgrid(xs, ys)&#xA;    pts = np.columnstack([XX.ravel(), YY.ravel()])&#xA;&#xA;    count = np.zeros(pts.shape[0], dtype=int)&#xA;    for corners in polygons:&#xA;        path = MplPath(corners)&#xA;        count += path.containspoints(pts)&#xA;&#xA;    count = count.reshape(XX.shape)&#xA;    return XX, YY, count, polygons, len(raw), ra0, dec0&#xA;&#xA;def plotcoverage(XX, YY, count, polygons, nframes, ra0, dec0, outpath):&#xA;    fig, ax = plt.subplots(figsize=(9, 8))&#xA;&#xA;    maxcount = max(1, int(count.max()))&#xA;    mesh = ax.pcolormesh(XX, YY, count, shading=&#34;auto&#34;,&#xA;                          cmap=&#34;viridis&#34;, vmin=0, vmax=maxcount)&#xA;    cbar = fig.colorbar(mesh, ax=ax)&#xA;    cbar.setlabel(&#34;Liczba nakladajacych sie klatek&#34;)&#xA;&#xA;    for corners in polygons:&#xA;        closed = np.vstack([corners, corners[0]])&#xA;        ax.plot(closed[:, 0], closed[:, 1], color=&#34;white&#34;, linewidth=0.4, alpha=0.6)&#xA;&#xA;    ax.setxlabel(f&#34;Odsuniecie RA [deg] wzgledem {ra0:.3f}&#34;)&#xA;    ax.setylabel(f&#34;Odsuniecie Dec [deg] wzgledem {dec0:.3f}&#34;)&#xA;    ax.settitle(f&#34;Pokrycie mozaiki - {nframes} klatek&#34;)&#xA;    ax.invertxaxis()  # konwencja: RA rosnie w lewo&#xA;    ax.setaspect(&#34;equal&#34;)&#xA;&#xA;    fig.tightlayout()&#xA;    fig.savefig(outpath, dpi=150)&#xA;    print(f&#34;Zapisano: {outpath}&#34;)&#xA;    plt.show()&#xA;&#xA;def main():&#xA;    ap = argparse.ArgumentParser(description=&#34;Mapa pokrycia mozaiki Seestar z plikow FIT.&#34;)&#xA;    ap.addargument(&#34;folder&#34;, help=&#34;Folder z plikami .fit/.fits&#34;)&#xA;    ap.addargument(&#34;--fov-w&#34;, type=float, default=0.75,&#xA;                    help=&#34;Szerokosc FOV w stopniach (domyslnie 0.75 - Seestar S50)&#34;)&#xA;    ap.addargument(&#34;--fov-h&#34;, type=float, default=1.33,&#xA;                    help=&#34;Wysokosc FOV w stopniach (domyslnie 1.33 - Seestar S50)&#34;)&#xA;    ap.addargument(&#34;--grid&#34;, type=int, default=300,&#xA;                    help=&#34;Rozdzielczosc siatki liczacej nakladki (domyslnie 300)&#34;)&#xA;    ap.addargument(&#34;--out&#34;, default=&#34;coverage.png&#34;, help=&#34;Plik wyjsciowy PNG&#34;)&#xA;    args = ap.parseargs()&#xA;&#xA;    XX, YY, count, polygons, n, ra0, dec0 = buildcoverage(&#xA;        args.folder, args.fovw, args.fovh, args.grid&#xA;    )&#xA;    plotcoverage(XX, YY, count, polygons, n, ra0, dec0, args.out)&#xA;&#xA;if name == &#34;main&#34;:&#xA;    main()&#xA;&#xA;Najpierw&#xA;$ python3 -m venv astro&#xA;$ source astro/bin/activate&#xA;a później, na przykład:&#xA;$ python seestarmosaiccoverage.py SeestarS50/Messier/M\ 31manualmosaic&#xA;&#xA;div class=&#34;galeria&#34; &#xA;       img src=&#34;https://blgpht.argilus.online/api/files/128/original/coverageIC1848.jpeg&#34; alt=&#34;pokrycie mozaiki&#34;&#xA;       img src=&#34;https://blgpht.argilus.online/api/files/126/original/coverageNGC1499.jpeg&#34; alt=&#34;pokrycie mozaiki&#34;&#xA;       /div&#xA;&#xA;div class=&#34;galeria&#34; &#xA;img src=&#34;https://blgpht.argilus.online/api/files/124/original/coverageIC443.jpeg&#34; alt=&#34;pokrycie mozaiki&#34;&#xA;img src=&#34;https://blgpht.argilus.online/api/files/125/original/coverageIC5070.jpeg&#34; alt=&#34;pokrycie mozaiki&#34;&#xA;/div&#xA;&#xA;pokrycie M31&#xA;pokrycie NGC700&#xA;&#xA;No i te dwa ostatnie obrazki pokazują mi dobitnie, dlaczego mozaiki były fallusowe*.&#xA;&#xA;: Claude AI&#xA;&#xA;#seestar #mosaic #mozaika #astrophotography #astrofotografia&#xA;&#xA;-- &#xD;&#xA;Marcin &#34;czach&#34; Trzaska&#xD;&#xA;reply-to: @czach@mastodon.argilus.online]]&gt;</description>
      <content:encoded><![CDATA[<p>Tak coś mnie tknęło… dawno nie robiłem żadnej mozaiki Seestarem.
Nie robiłem, bo się zniechęciłem — jakoś nie wychodziło to najlepiej…</p>

<p>No i coś mnie tknęło, żeby sprawdzić pokrycie na mapie/obrazku…</p>

<p>I takie coś mam od <em>Klaudiusza</em>[^1]. ;–)</p>

<pre><code class="language-python">#!/usr/bin/env python3
&#34;&#34;&#34;
seestar_mosaic_coverage.py

Wczytuje pliki FIT (Seestar, tryb mozaiki) z podanego folderu i rysuje
mape pokrycia nieba: kolorem pokazuje, ile klatek pokrywa dany fragment.

Wymagania:
    pip install astropy numpy matplotlib

Uzycie:
    python seestar_mosaic_coverage.py /sciezka/do/folderu_z_fit
    python seestar_mosaic_coverage.py /sciezka --fov-w 0.75 --fov-h 1.33 --grid 400
&#34;&#34;&#34;

import argparse
import glob
import os
import sys

import numpy as np
from astropy.io import fits
from astropy.wcs import WCS
import matplotlib.pyplot as plt
from matplotlib.path import Path as MplPath

# ---------- odczyt naglowkow ----------

RA_KEYS = [&#34;RA&#34;, &#34;OBJCTRA&#34;, &#34;CRVAL1&#34;]
DEC_KEYS = [&#34;DEC&#34;, &#34;OBJCTDEC&#34;, &#34;CRVAL2&#34;]
ROT_KEYS = [&#34;ROTATION&#34;, &#34;PA&#34;, &#34;ROTATANG&#34;, &#34;ORIENTAT&#34;, &#34;ROT&#34;]


def _first_present(header, keys):
    for k in keys:
        if k in header:
            return header[k]
    return None


def _to_decimal_ra(val):
    &#34;&#34;&#34;RA moze byc liczba (stopnie) albo string HH:MM:SS.&#34;&#34;&#34;
    if isinstance(val, (int, float)):
        return float(val)
    val = str(val).strip()
    if &#34;:&#34; in val:
        h, m, s = [float(x) for x in val.split(&#34;:&#34;)]
        return (h + m / 60 + s / 3600) * 15.0
    return float(val)


def _to_decimal_dec(val):
    if isinstance(val, (int, float)):
        return float(val)
    val = str(val).strip()
    sign = -1.0 if val.startswith(&#34;-&#34;) else 1.0
    val = val.lstrip(&#34;+-&#34;)
    if &#34;:&#34; in val:
        d, m, s = [float(x) for x in val.split(&#34;:&#34;)]
        return sign * (d + m / 60 + s / 3600)
    return float(val) * sign


def read_frame_pointing(path):
    &#34;&#34;&#34;Zwraca (ra_deg, dec_deg, rotation_deg, footprint_lub_None) dla jednej klatki FIT.&#34;&#34;&#34;
    header = fits.getheader(path)

    # Sciezka 1: pelne WCS (jesli plik byl plate-solved, np. przez ASTAP)
    if &#34;CTYPE1&#34; in header and &#34;CRVAL1&#34; in header:
        try:
            wcs = WCS(header)
            footprint = wcs.calc_footprint(header=header)  # 4x2 [ra,dec] w stopniach
            ra_c, dec_c = footprint.mean(axis=0)
            return ra_c, dec_c, 0.0, footprint
        except Exception:
            pass

    # Sciezka 2: naglowek Seestara (RA/DEC srodka klatki + ewentualna rotacja)
    ra_raw = _first_present(header, RA_KEYS)
    dec_raw = _first_present(header, DEC_KEYS)
    if ra_raw is None or dec_raw is None:
        raise ValueError(&#34;brak RA/DEC w naglowku&#34;)

    ra_deg = _to_decimal_ra(ra_raw)
    dec_deg = _to_decimal_dec(dec_raw)
    rot_raw = _first_present(header, ROT_KEYS)
    rot_deg = float(rot_raw) if rot_raw is not None else 0.0

    return ra_deg, dec_deg, rot_deg, None


# ---------- projekcja i footprinty ----------

def gnomonic(ra_deg, dec_deg, ra0_deg, dec0_deg):
    &#34;&#34;&#34;Rzutuje RA/Dec na plaszczyzne styczna wzgledem (ra0, dec0). Zwraca stopnie.&#34;&#34;&#34;
    ra, dec = np.radians(ra_deg), np.radians(dec_deg)
    ra0, dec0 = np.radians(ra0_deg), np.radians(dec0_deg)
    dra = ra - ra0
    denom = np.sin(dec0) * np.sin(dec) + np.cos(dec0) * np.cos(dec) * np.cos(dra)
    x = np.cos(dec) * np.sin(dra) / denom
    y = (np.cos(dec0) * np.sin(dec) - np.sin(dec0) * np.cos(dec) * np.cos(dra)) / denom
    return np.degrees(x), np.degrees(y)


def frame_corners_tangent(ra_c, dec_c, rot_deg, fov_w, fov_h, ra0, dec0):
    &#34;&#34;&#34;Rogi klatki (prostokat obrocony o rot_deg) w ukladzie stycznym.&#34;&#34;&#34;
    xc, yc = gnomonic(ra_c, dec_c, ra0, dec0)
    hw, hh = fov_w / 2, fov_h / 2
    local = np.array([(-hw, -hh), (hw, -hh), (hw, hh), (-hw, hh)])
    theta = np.radians(rot_deg)
    rot = np.array([[np.cos(theta), -np.sin(theta)],
                    [np.sin(theta), np.cos(theta)]])
    rotated = local @ rot.T
    return rotated + np.array([xc, yc])


def wcs_corners_tangent(footprint_radec, ra0, dec0):
    x, y = gnomonic(footprint_radec[:, 0], footprint_radec[:, 1], ra0, dec0)
    return np.column_stack([x, y])


# ---------- glowna logika ----------

def build_coverage(folder, fov_w, fov_h, grid_n):
    files = sorted(glob.glob(os.path.join(folder, &#34;*.fit&#34;)) +
                    glob.glob(os.path.join(folder, &#34;*.fits&#34;)))
    if not files:
        sys.exit(f&#34;Nie znaleziono plikow .fit/.fits w: {folder}&#34;)

    raw = []
    for f in files:
        try:
            ra_c, dec_c, rot, footprint = read_frame_pointing(f)
            raw.append((f, ra_c, dec_c, rot, footprint))
        except Exception as e:
            print(f&#34;[pomijam] {os.path.basename(f)}: {e}&#34;)

    if not raw:
        sys.exit(&#34;Nie udalo sie odczytac zadnej klatki - sprawdz nazwy kluczy w naglowku (patrz ponizej).&#34;)

    ra0 = float(np.mean([r[1] for r in raw]))
    dec0 = float(np.mean([r[2] for r in raw]))

    polygons = []
    for f, ra_c, dec_c, rot, footprint in raw:
        if footprint is not None:
            corners = wcs_corners_tangent(footprint, ra0, dec0)
        else:
            corners = frame_corners_tangent(ra_c, dec_c, rot, fov_w, fov_h, ra0, dec0)
        polygons.append(corners)

    all_pts = np.vstack(polygons)
    pad = 0.1 * max(fov_w, fov_h)
    xmin, ymin = all_pts.min(axis=0) - pad
    xmax, ymax = all_pts.max(axis=0) + pad

    xs = np.linspace(xmin, xmax, grid_n)
    ys = np.linspace(ymin, ymax, grid_n)
    XX, YY = np.meshgrid(xs, ys)
    pts = np.column_stack([XX.ravel(), YY.ravel()])

    count = np.zeros(pts.shape[0], dtype=int)
    for corners in polygons:
        path = MplPath(corners)
        count += path.contains_points(pts)

    count = count.reshape(XX.shape)
    return XX, YY, count, polygons, len(raw), ra0, dec0


def plot_coverage(XX, YY, count, polygons, n_frames, ra0, dec0, out_path):
    fig, ax = plt.subplots(figsize=(9, 8))

    max_count = max(1, int(count.max()))
    mesh = ax.pcolormesh(XX, YY, count, shading=&#34;auto&#34;,
                          cmap=&#34;viridis&#34;, vmin=0, vmax=max_count)
    cbar = fig.colorbar(mesh, ax=ax)
    cbar.set_label(&#34;Liczba nakladajacych sie klatek&#34;)

    for corners in polygons:
        closed = np.vstack([corners, corners[0]])
        ax.plot(closed[:, 0], closed[:, 1], color=&#34;white&#34;, linewidth=0.4, alpha=0.6)

    ax.set_xlabel(f&#34;Odsuniecie RA [deg] wzgledem {ra0:.3f}&#34;)
    ax.set_ylabel(f&#34;Odsuniecie Dec [deg] wzgledem {dec0:.3f}&#34;)
    ax.set_title(f&#34;Pokrycie mozaiki - {n_frames} klatek&#34;)
    ax.invert_xaxis()  # konwencja: RA rosnie w lewo
    ax.set_aspect(&#34;equal&#34;)

    fig.tight_layout()
    fig.savefig(out_path, dpi=150)
    print(f&#34;Zapisano: {out_path}&#34;)
    plt.show()


def main():
    ap = argparse.ArgumentParser(description=&#34;Mapa pokrycia mozaiki Seestar z plikow FIT.&#34;)
    ap.add_argument(&#34;folder&#34;, help=&#34;Folder z plikami .fit/.fits&#34;)
    ap.add_argument(&#34;--fov-w&#34;, type=float, default=0.75,
                    help=&#34;Szerokosc FOV w stopniach (domyslnie 0.75 - Seestar S50)&#34;)
    ap.add_argument(&#34;--fov-h&#34;, type=float, default=1.33,
                    help=&#34;Wysokosc FOV w stopniach (domyslnie 1.33 - Seestar S50)&#34;)
    ap.add_argument(&#34;--grid&#34;, type=int, default=300,
                    help=&#34;Rozdzielczosc siatki liczacej nakladki (domyslnie 300)&#34;)
    ap.add_argument(&#34;--out&#34;, default=&#34;coverage.png&#34;, help=&#34;Plik wyjsciowy PNG&#34;)
    args = ap.parse_args()

    XX, YY, count, polygons, n, ra0, dec0 = build_coverage(
        args.folder, args.fov_w, args.fov_h, args.grid
    )
    plot_coverage(XX, YY, count, polygons, n, ra0, dec0, args.out)


if __name__ == &#34;__main__&#34;:
    main()
</code></pre>

<p>Najpierw</p>

<pre><code>$ python3 -m venv astro
$ source astro/bin/activate
</code></pre>

<p>a później, na przykład:</p>

<pre><code>$ python seestar_mosaic_coverage.py SeestarS50/Messier/M\ 31_manual_mosaic
</code></pre>

<div class="galeria">
       <img src="https://blgpht.argilus.online/api/files/128/original/coverage_IC1848.jpeg" alt="pokrycie mozaiki">
       <img src="https://blgpht.argilus.online/api/files/126/original/coverage_NGC1499.jpeg" alt="pokrycie mozaiki">
       </div>

<div class="galeria">
<img src="https://blgpht.argilus.online/api/files/124/original/coverage_IC443.jpeg" alt="pokrycie mozaiki">
<img src="https://blgpht.argilus.online/api/files/125/original/coverage_IC5070.jpeg" alt="pokrycie mozaiki">
</div>

<p><img src="https://blgpht.argilus.online/api/files/127/original/coverage_M31.jpeg" alt="pokrycie M31">
<img src="https://blgpht.argilus.online/api/files/129/original/coverage_NGC7000.jpeg" alt="pokrycie NGC700"></p>

<p>No i te dwa ostatnie obrazki pokazują mi dobitnie, dlaczego mozaiki były <em>fallusowe</em>.</p>

<p>[^1]: Claude AI</p>

<p><a href="/czach/tag:seestar" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">seestar</span></a> <a href="/czach/tag:mosaic" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">mosaic</span></a> <a href="/czach/tag:mozaika" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">mozaika</span></a> <a href="/czach/tag:astrophotography" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">astrophotography</span></a> <a href="/czach/tag:astrofotografia" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">astrofotografia</span></a></p>

<p>—
Marcin “czach” Trzaska
reply-to: <a href="https://blog.argilus.online/@/czach@mastodon.argilus.online" class="u-url mention" rel="nofollow">@<span>czach@mastodon.argilus.online</span></a></p>
]]></content:encoded>
      <guid>https://blog.argilus.online/czach/seestar-mosaic-coverage</guid>
      <pubDate>Fri, 04 Sep 2026 15:59:15 +0000</pubDate>
    </item>
    <item>
      <title>Fajerwerk i Czarodziej, część 3</title>
      <link>https://blog.argilus.online/czach/fajerwerk-i-czarodziej-czesc-trzecia-druga</link>
      <description>&lt;![CDATA[Tym razem prognozy pogody się sprawdziły i noc z sierpnia na wrzesień ;-) była z (w miarę) czystym niebem. Tak w sam raz, aby dokończyć Galaktykę Fajerwerk i Mgławicę Czarodzieja.&#xA;Czarodziej&#xA;O ile z Czarodziejem nie miałem problemów i tak się prezentuje:&#xA;Mgławica Czarodzieja&#xA;div style=&#34;text-align: center; font-style: italic&#34;870x30 sek = 7h15m/div&#xA;&#xA;Fajerwerk&#xA;Tak z galaktyką coś mi nie pasowało i mam 4 wersje. Trzy pierwsze to efekt stackowania skryptem Naztronomy&#xA;div class=&#34;galeria&#34;&#xA;       img src=&#34;https://blgpht.argilus.online/api/files/121/original/NGC6946918x30.jpg&#34; alt=&#34;galaktyka Fajerwerk&#34;&#xA;       img src=&#34;https://blgpht.argilus.online/api/files/123/original/NGC6946918x30-2.jpg&#34; alt=&#34;galaktyka Fajerwerk&#34;&#xA;       img src=&#34;https://blgpht.argilus.online/api/files/119/original/NGC6946918x30-3.jpg&#34; alt=&#34;galaktyka Fajerwerk&#34;&#xA;/div&#xA;div style=&#34;text-align: center; font-style: italic&#34;918x30 sek = 7h39/div&#xA;A ostatni stackowany skryptem Seestara.&#xA;Galaktyka Fajerwerk &#xA;&#xA;div style=&#34;text-align: center; font-style: italic&#34;953x30 sek = 7h56m30s/div&#xA;&#xA;nav class=&#34;series-nav&#34;&#xA;    a href=&#34;https://blog.argilus.online/czach/galaktyka-fajerwerk-noc-2&#34; class=&#34;series-nav-item prev&#34;&#xA;        span class=&#34;series-nav-direction&#34;← Poprzedni w serii/span&#xA;        span class=&#34;series-nav-title&#34;Galaktyka Fajerwerk, noc 2./span&#xA;    /a&#xA;/nav&#xA;&#xA;#astrofotografia #astrophotography #Seestar #WizardNebula #FireworksGalaxy&#xA;&#xA;-- &#xD;&#xA;Marcin &#34;czach&#34; Trzaska&#xD;&#xA;reply-to: @czach@mastodon.argilus.online]]&gt;</description>
      <content:encoded><![CDATA[<p>Tym razem prognozy pogody się sprawdziły i noc z sierpnia na wrzesień ;–) była z (w miarę) czystym niebem. Tak w sam raz, aby dokończyć <em>Galaktykę Fajerwerk</em> i <em>Mgławicę Czarodzieja</em>.</p>

<h2 id="czarodziej"><em>Czarodziej</em></h2>

<p>O ile z <em>Czarodziejem</em> nie miałem problemów i tak się prezentuje:
<img src="https://blgpht.argilus.online/api/files/120/original/NGC_7380_870x30s.jpg" alt="Mgławica Czarodzieja" title="Mgławica Czarodzieja">
<div style="text-align: center; font-style: italic">870x30 sek = 7h15m</div></p>

<h2 id="fajerwerk"><em>Fajerwerk</em></h2>

<p>Tak z galaktyką coś mi nie pasowało i mam 4 wersje. Trzy pierwsze to efekt stackowania skryptem <em>Naztronomy</em>
<div class="galeria">
       <img src="https://blgpht.argilus.online/api/files/121/original/NGC_6946_918x30.jpg" alt="galaktyka Fajerwerk">
       <img src="https://blgpht.argilus.online/api/files/123/original/NGC_6946_918x30-2.jpg" alt="galaktyka Fajerwerk">
       <img src="https://blgpht.argilus.online/api/files/119/original/NGC_6946_918x30-3.jpg" alt="galaktyka Fajerwerk">
</div>
<div style="text-align: center; font-style: italic"><em>918x30 sek = 7h39</em></div>
A ostatni stackowany skryptem Seestara.
<img src="https://blgpht.argilus.online/api/files/122/original/NGC_6946_953x30s_v2-2.jpg" alt="Galaktyka Fajerwerk"></p>

<div style="text-align: center; font-style: italic">*953x30 sek = 7h56m30s*</div>


    <a href="https://blog.argilus.online/czach/galaktyka-fajerwerk-noc-2" class="series-nav-item prev" rel="nofollow">
        <span class="series-nav-direction">← Poprzedni w serii</span>
        <span class="series-nav-title">Galaktyka Fajerwerk, noc 2.</span>
    </a>


<p><a href="/czach/tag:astrofotografia" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">astrofotografia</span></a> <a href="/czach/tag:astrophotography" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">astrophotography</span></a> <a href="/czach/tag:Seestar" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Seestar</span></a> <a href="/czach/tag:WizardNebula" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">WizardNebula</span></a> <a href="/czach/tag:FireworksGalaxy" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">FireworksGalaxy</span></a></p>

<p>—
Marcin “czach” Trzaska
reply-to: <a href="https://blog.argilus.online/@/czach@mastodon.argilus.online" class="u-url mention" rel="nofollow">@<span>czach@mastodon.argilus.online</span></a></p>
]]></content:encoded>
      <guid>https://blog.argilus.online/czach/fajerwerk-i-czarodziej-czesc-trzecia-druga</guid>
      <pubDate>Tue, 01 Sep 2026 12:03:18 +0000</pubDate>
    </item>
    <item>
      <title>Galaktyka Fajerwerk, noc 2.</title>
      <link>https://blog.argilus.online/czach/galaktyka-fajerwerk-noc-2</link>
      <description>&lt;![CDATA[Chmurwy się trochę zlitowały i udało mi się zebrać dodatkowego materiału. Ponieważ nie miałem pewności, kiedy znów nadejdą, więc zbierałem tylko fajerwerka.&#xA;&#xA;A chmurwy zbliżały się.&#xA;Gdy zakończyłem zabawę miałem 902 klatki po 30 sekund, trochę odrzucił ASTAP a trochę Siril. Ostatecznie plik wynikowy jest złożony z 765 klatek.&#xA;&#xA;Dalsza obróbka zaowocowała czterema wersjami pliku JPG.&#xA;&#xA;table&#xA; th colspan=&#34;2&#34;Wersja emGeneralised Hyperbolic Stretch transformations (GHS)/em/th&#xA;&#xA;  tr&#xA;    td align=&#34;center&#34;&#xA;      a href=&#34;https://blgpht.argilus.online/api/files/107/original/NGC6946765x30s-2.jpg&#34;img src=&#34;https://blgpht.argilus.online/api/files/107/variants/ffmpeg-1280x1280-in/NGC6946765x30s-2.jpg&#34; alt=&#34;NGC 6946 765x30s 2&#34;/a&#xA;    /td&#xA;    td align=&#34;center&#34;&#xA;      a href=&#34;https://blgpht.argilus.online/api/files/109/original/NGC6946765x30s.jpg&#34;img src=&#34;https://blgpht.argilus.online/api/files/109/variants/ffmpeg-1280x1280-in/NGC6946765x30s.jpg&#34; alt=&#34;NGC 6946 765x30s&#34;/a&#xA;    /td&#xA;  /tr&#xA;trtd align=&#34;center&#34;bez ekstra wyostrzania w LR/tdtd align=&#34;center&#34;z wyostrzeniem w LR/td/tr&#xA;/table&#xA;&#xA;br&#xA;&#xA;table&#xA; th colspan=&#34;2&#34;Wersja emHistogram transformation/em/th&#xA;  tr&#xA;    td align=&#34;center&#34;&#xA;      a href=&#34;https://blgpht.argilus.online/api/files/108/original/NGC6946765x30sb-2.jpg&#34;img src=&#34;https://blgpht.argilus.online/api/files/108/variants/ffmpeg-1280x1280-in/NGC6946765x30sb-2.jpg&#34; alt=&#34;NGC 6946 765x30s b 2&#34;/a&#xA;    /td&#xA;    td align=&#34;center&#34;&#xA;      a href=&#34;https://blgpht.argilus.online/api/files/110/original/NGC6946765x30sb.jpg&#34;img src=&#34;https://blgpht.argilus.online/api/files/110/variants/ffmpeg-1280x1280-in/NGC6946765x30sb.jpg&#34; alt=&#34;NGC 6946 765x30s b&#34;/a&#xA;    /td&#xA;  /tr&#xA;trtd align=&#34;center&#34;bez ekstra wyostrzania w LR/tdtd align=&#34;center&#34;z wyostrzeniem w LR/td/tr&#xA;/table&#xA;&#xA;div style=&#34;text-align: center;&#34;em765x30 sek = 6h22m30s/em/div&#xA;&#xA;nav class=&#34;series-nav&#34;&#xA;    a href=&#34;https://blog.argilus.online/czach/galaktyka-fajerwerk-i-mglawica-czarodzieja&#34; class=&#34;series-nav-item prev&#34;&#xA;        span class=&#34;series-nav-direction&#34;← Poprzedni w serii/span&#xA;        span class=&#34;series-nav-title&#34; Fajerwerk i Czarodziej /span&#xA;    /a&#xA;/nav&#xA;&#xA;#astrofotografia #astrophotography #Seestar #FireworksGalaxy&#xA;&#xA;-- &#xD;&#xA;Marcin &#34;czach&#34; Trzaska&#xD;&#xA;reply-to: @czach@mastodon.argilus.online]]&gt;</description>
      <content:encoded><![CDATA[<p><em>Chmurwy</em> się trochę zlitowały i udało mi się zebrać dodatkowego materiału. Ponieważ nie miałem pewności, kiedy znów nadejdą, więc zbierałem tylko <em>fajerwerka</em>.</p>

<p>A <em>chmurwy</em> zbliżały się.
Gdy zakończyłem <em>zabawę</em> miałem 902 klatki po 30 sekund, trochę odrzucił <em>ASTAP</em> a trochę <em>Siril</em>. Ostatecznie plik wynikowy jest złożony z 765 klatek.</p>

<p>Dalsza obróbka zaowocowała czterema wersjami pliku <em>JPG</em>.</p>

<table>
 <th colspan="2">Wersja <em>Generalised Hyperbolic Stretch transformations (GHS)</em></th>

  <tr>
    <td align="center">
      <a href="https://blgpht.argilus.online/api/files/107/original/NGC_6946_765x30s-2.jpg" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/107/variants/ffmpeg-1280x1280-in/NGC_6946_765x30s-2.jpg" alt="NGC 6946 765x30s 2"></a>
    </td>
    <td align="center">
      <a href="https://blgpht.argilus.online/api/files/109/original/NGC_6946_765x30s.jpg" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/109/variants/ffmpeg-1280x1280-in/NGC_6946_765x30s.jpg" alt="NGC 6946 765x30s"></a>
    </td>
  </tr>
<tr><td align="center">bez ekstra wyostrzania w LR</td><td align="center">z wyostrzeniem w LR</td></tr>
</table>

<p><br></p>

<table>
 <th colspan="2">Wersja <em>Histogram transformation</em></th>
  <tr>
    <td align="center">
      <a href="https://blgpht.argilus.online/api/files/108/original/NGC_6946_765x30s_b-2.jpg" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/108/variants/ffmpeg-1280x1280-in/NGC_6946_765x30s_b-2.jpg" alt="NGC 6946 765x30s b 2"></a>
    </td>
    <td align="center">
      <a href="https://blgpht.argilus.online/api/files/110/original/NGC_6946_765x30s_b.jpg" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/110/variants/ffmpeg-1280x1280-in/NGC_6946_765x30s_b.jpg" alt="NGC 6946 765x30s b"></a>
    </td>
  </tr>
<tr><td align="center">bez ekstra wyostrzania w LR</td><td align="center">z wyostrzeniem w LR</td></tr>
</table>

<div style="text-align: center;"><em>765x30 sek = 6h22m30s</em></div>


    <a href="https://blog.argilus.online/czach/galaktyka-fajerwerk-i-mglawica-czarodzieja" class="series-nav-item prev" rel="nofollow">
        <span class="series-nav-direction">← Poprzedni w serii</span>
        <span class="series-nav-title"> Fajerwerk i Czarodziej </span>
    </a>


<p><a href="/czach/tag:astrofotografia" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">astrofotografia</span></a> <a href="/czach/tag:astrophotography" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">astrophotography</span></a> <a href="/czach/tag:Seestar" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Seestar</span></a> <a href="/czach/tag:FireworksGalaxy" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">FireworksGalaxy</span></a></p>

<p>—
Marcin “czach” Trzaska
reply-to: <a href="https://blog.argilus.online/@/czach@mastodon.argilus.online" class="u-url mention" rel="nofollow">@<span>czach@mastodon.argilus.online</span></a></p>
]]></content:encoded>
      <guid>https://blog.argilus.online/czach/galaktyka-fajerwerk-noc-2</guid>
      <pubDate>Sun, 30 Aug 2026 07:23:20 +0000</pubDate>
    </item>
    <item>
      <title>Plamy na Słońcu</title>
      <link>https://blog.argilus.online/czach/plamy-na-sloncu</link>
      <description>&lt;![CDATA[Chciałem zrobić/sprawdzić plamy na Słońcu. Jakieś tam zdjęcia zrobiłem a później coś sprawdziłem i okazało się, że szkło w teleskopie jest brudne jak… Generalnie różnice temperatur w nocy, kurz, mgła itp zrobiły swoje i zrobiła się taka skorupa. Może dlatego moje zdjęcia są takie kiepskie.&#xA;&#xA;IMG 3479&#xA;&#xA;IMG 3480&#xA;&#xA;IMG 3481&#xA;&#xA;div style=&#34;background: linear-gradient(135deg, #090a0f 0%, #1f0c24 50%, #2b0c0c 100%); border: 1px solid rgba(255, 107, 0, 0.4); border-radius: 16px; padding: 30px; color: #ffffff; font-family: system-ui, -apple-system, sans-serif; box-shadow: 0 12px 35px rgba(0,0,0,0.7), inset 0 0 25px rgba(255, 69, 0, 0.1); max-width: 650px; margin: 20px auto; box-sizing: border-box;&#34;&#xA;  &#xA;  !-- Górny pasek z odznaką --&#xA;  div style=&#34;display: flex; justify-content: space-between; align-items: center; margin-bottom: 25px;&#34;&#xA;    span style=&#34;background: rgba(255,69,0,0.15); color: #ff8c00; padding: 4px 10px; border-radius: 20px; font-weight: 600; font-size: 11px; letter-spacing: 1.5px; text-transform: uppercase; border: 1px solid rgba(255,140,0,0.3);&#34;☀️ Solar Track/span&#xA;    span style=&#34;letter-spacing: 3px; font-size: 16px;&#34;💽 🎸 🔭/span&#xA;  /div&#xA;  &#xA;  !-- Blok cytatu --&#xA;  blockquote style=&#34;margin: 0 0 20px 0; padding: 0; text-align: center;&#34;&#xA;    p style=&#34;font-size: 24px; font-weight: 800; font-style: italic; color: #ffeb3b; text-shadow: 0 0 15px rgba(255, 235, 59, 0.4); margin: 0 0 12px 0; line-height: 1.3;&#34;&#xA;      🎼Plamy na Słońcu, upał w okolicybr&#xA;      Cierpi tu z gorąca niemal pół dzielnicy🎶&#xA;    /p&#xA;  /blockquote&#xA;&#xA;  !-- Podpis po prawej stronie --&#xA;  div style=&#34;text-align: right; margin-bottom: 25px; padding-right: 5px;&#34;&#xA;    span style=&#34;font-size: 14px; font-weight: 600; color: #cbd5e1; font-style: italic; letter-spacing: 0.5px;&#34;&#xA;      &amp;mdash; Kult, span style=&#34;color: #ff8c00; font-weight: 700;&#34;Plamy na Słońcu/span&#xA;    /span&#xA;  /div&#xA;&#xA;  !-- Stopka z parametrami --&#xA;  div style=&#34;display: flex; justify-content: space-between; align-items: center; border-top: 1px solid rgba(255, 255, 255, 0.1); padding-top: 15px; font-size: 12px; color: #94a3b8;&#34;&#xA;    span🔥 Flare Level: X-Class/span&#xA;    span🎧 132 BPM/span&#xA;  /div&#xA;&#xA;/div&#xA;&#xA;#Seestar #S50 #BlackHoleSun #SunSpots #astrophotography&#xA;&#xA;-- &#xD;&#xA;Marcin &#34;czach&#34; Trzaska&#xD;&#xA;reply-to: @czach@mastodon.argilus.online]]&gt;</description>
      <content:encoded><![CDATA[<p>Chciałem zrobić/sprawdzić plamy na Słońcu. Jakieś tam zdjęcia zrobiłem a później coś sprawdziłem i okazało się, że szkło w teleskopie jest brudne jak… Generalnie różnice temperatur w nocy, kurz, mgła itp zrobiły swoje i zrobiła się taka skorupa. Może dlatego moje zdjęcia są takie kiepskie.</p>

<p><a href="https://blgpht.argilus.online/api/files/106/original/IMG_3479.JPG" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/106/variants/ffmpeg-1280x1280-in/IMG_3479.JPG" alt="IMG 3479"></a></p>

<p><a href="https://blgpht.argilus.online/api/files/104/original/IMG_3480.JPG" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/104/variants/ffmpeg-1280x1280-in/IMG_3480.JPG" alt="IMG 3480"></a></p>

<p><a href="https://blgpht.argilus.online/api/files/105/original/IMG_3481.JPG" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/105/variants/ffmpeg-1280x1280-in/IMG_3481.JPG" alt="IMG 3481"></a></p>

<div style="background: linear-gradient(135deg, #090a0f 0%, #1f0c24 50%, #2b0c0c 100%); border: 1px solid rgba(255, 107, 0, 0.4); border-radius: 16px; padding: 30px; color: #ffffff; font-family: system-ui, -apple-system, sans-serif; box-shadow: 0 12px 35px rgba(0,0,0,0.7), inset 0 0 25px rgba(255, 69, 0, 0.1); max-width: 650px; margin: 20px auto; box-sizing: border-box;">
  
  
  <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 25px;">
    <span style="background: rgba(255,69,0,0.15); color: #ff8c00; padding: 4px 10px; border-radius: 20px; font-weight: 600; font-size: 11px; letter-spacing: 1.5px; text-transform: uppercase; border: 1px solid rgba(255,140,0,0.3);">☀️ Solar Track</span>
    <span style="letter-spacing: 3px; font-size: 16px;">💽 🎸 🔭</span>
  </div>
  

<p>  
  <blockquote style="margin: 0 0 20px 0; padding: 0; text-align: center;">
    <p style="font-size: 24px; font-weight: 800; font-style: italic; color: #ffeb3b; text-shadow: 0 0 15px rgba(255, 235, 59, 0.4); margin: 0 0 12px 0; line-height: 1.3;">
      🎼Plamy na Słońcu, upał w okolicy<br>
      Cierpi tu z gorąca niemal pół dzielnicy🎶
    </p>
  </blockquote></p>

<p>  
  <div style="text-align: right; margin-bottom: 25px; padding-right: 5px;">
    <span style="font-size: 14px; font-weight: 600; color: #cbd5e1; font-style: italic; letter-spacing: 0.5px;">
      — Kult, <span style="color: #ff8c00; font-weight: 700;">Plamy na Słońcu</span>
    </span>
  </div></p>

<p>  
  <div style="display: flex; justify-content: space-between; align-items: center; border-top: 1px solid rgba(255, 255, 255, 0.1); padding-top: 15px; font-size: 12px; color: #94a3b8;">
    <span>🔥 Flare Level: X-Class</span>
    <span>🎧 132 BPM</span>
  </div></p>

<p></div></p>

<p><a href="/czach/tag:Seestar" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Seestar</span></a> <a href="/czach/tag:S50" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">S50</span></a> <a href="/czach/tag:BlackHoleSun" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">BlackHoleSun</span></a> <a href="/czach/tag:SunSpots" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">SunSpots</span></a> <a href="/czach/tag:astrophotography" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">astrophotography</span></a></p>

<p>—
Marcin “czach” Trzaska
reply-to: <a href="https://blog.argilus.online/@/czach@mastodon.argilus.online" class="u-url mention" rel="nofollow">@<span>czach@mastodon.argilus.online</span></a></p>
]]></content:encoded>
      <guid>https://blog.argilus.online/czach/plamy-na-sloncu</guid>
      <pubDate>Sat, 29 Aug 2026 16:06:18 +0000</pubDate>
    </item>
    <item>
      <title>Fajerwerk i Czarodziej</title>
      <link>https://blog.argilus.online/czach/galaktyka-fajerwerk-i-mglawica-czarodzieja</link>
      <description>&lt;![CDATA[Kolejne obiekty astrofoto trafiły na tapet. &#xA;Galaktyka Fajerwerk&#xA;Mgławica Czarodzieja&#xA;&#xA;Poprzednie wersje, są… Nie dość dobre, więc zbieram material od nowa.&#xA;Po pierwszej nocy wygląda to tak:&#xA;&#xA;Galaktyka Fajerwerk&#xA;div style=&#34;text-align: center;&#34;noc pierwsza: 228x30 sek = 1h46min/div&#xA;&#xA;Mgławica Czarodzieja&#xA;div style=&#34;text-align: center;&#34;noc pierwsza: 500x30 sek = 4h10min/div&#xA;&#xA;Niestety, prognozy pogody nie są optymistyczne. Następna sesja może w pierwszą noc września. Zobaczymy.&#xA;&#xA;#astrofotografia #astrophotography #Seestar #S50 #FireworksGalaxy #WizardNebula&#xA;&#xA;-- &#xD;&#xA;Marcin &#34;czach&#34; Trzaska&#xD;&#xA;reply-to: @czach@mastodon.argilus.online]]&gt;</description>
      <content:encoded><![CDATA[<p>Kolejne obiekty astrofoto trafiły na tapet.
* <a href="https://pl.wikipedia.org/wiki/NGC_6946" rel="nofollow"><em>Galaktyka Fajerwerk</em></a>
* <a href="https://pl.wikipedia.org/wiki/NGC_7380" rel="nofollow"><em>Mgławica Czarodzieja</em></a></p>

<p>Poprzednie wersje, są… Nie dość dobre, więc zbieram material od nowa.
Po pierwszej nocy wygląda to tak:</p>

<p><img src="https://blgpht.argilus.online/api/files/102/original/NGC_6946_228x30sec.jpg" alt="*Galaktyka Fajerwerk*" title="Galaktyka Fajerwerk">
<div style="text-align: center;"><em>noc pierwsza: 228x30 sek = 1h46min</em></div></p>

<p><img src="https://blgpht.argilus.online/api/files/103/original/NGC_7380_500x30sec.jpg" alt="*Mgławica Czarodzieja*" title="Mgławica Czarodzieja">
<div style="text-align: center;"><em>noc pierwsza: 500x30 sek = 4h10min</em></div></p>

<p>Niestety, prognozy pogody nie są optymistyczne. Następna sesja może w pierwszą noc września. Zobaczymy.</p>

<p><a href="/czach/tag:astrofotografia" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">astrofotografia</span></a> <a href="/czach/tag:astrophotography" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">astrophotography</span></a> <a href="/czach/tag:Seestar" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Seestar</span></a> <a href="/czach/tag:S50" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">S50</span></a> <a href="/czach/tag:FireworksGalaxy" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">FireworksGalaxy</span></a> <a href="/czach/tag:WizardNebula" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">WizardNebula</span></a></p>

<p>—
Marcin “czach” Trzaska
reply-to: <a href="https://blog.argilus.online/@/czach@mastodon.argilus.online" class="u-url mention" rel="nofollow">@<span>czach@mastodon.argilus.online</span></a></p>
]]></content:encoded>
      <guid>https://blog.argilus.online/czach/galaktyka-fajerwerk-i-mglawica-czarodzieja</guid>
      <pubDate>Fri, 28 Aug 2026 09:04:16 +0000</pubDate>
    </item>
  </channel>
</rss>