Usuwanie pikseli z obrazka

Odpowiedz Nowy wątek
2019-06-23 23:28
0

7 minut temu
ryszard
Dzień dobry! Proszę o pomoc. Napisałem sobie programik który usuwa mi z zeskanowanych obrazków "śmieci" w postaci pojedynczych pikseli i pikseli które stykają się jednym bokiem z innymi. Chciałbym znaleźć i usunąć plamki wielo-pikselowe. Chodzi mi o algorytm wyszukiwania. Zaczyna od 3 pikseli, wyszukuje, usuwa. Jeśli nie znajdzie 3, szuka większej ilości itd. Nie wiem jak się do tego zabrać.
pozdrawiam

Pozostało 580 znaków

2019-06-24 01:00
2019-06-24 15:13
0

Dziękuję za tyle i proszę o więcej. Nie mam prawie żadnego doświadczenia w programowaniu a liczba w moim loginie to mój rok urodzenia.

Pozostało 580 znaków

2019-06-24 15:20
0

To może poszukaj gotowych aplikacji zamiast samemu to kodować?

https://www.pcworld.pl/news/O[...]-ode-mnie-GIMP-2-0,89138.html

Pozostało 580 znaków

2019-06-24 19:34
0

Niestety nie da się. Skanuję dokumentację techniczną szerokość 10 15 20 a nawet 30 kilo pikseli wysokość 5 10 15 kilo pikseli. Często dokumentacja ma inną jasność w różnych miejscach. Program dołączony do skanera nie daję rady jest tylko jedna wartość w progowania. Zmuszony jestem do napisania programu po przetworzeniu aby rysunki jakoś wyglądały. Każdy rysunek inny więc muszę ustawić kilka wartości przetwarzania. Bardziej czytelny rysunek więcej śmieci. Muszę je jakoś usunąć. skanów mam dziennie kilka kilkanaście kilkadziesiąt. I właśnie potrzebuję programu algorytmu który będzie usuwał te śmieci. Szybkość nie jest szczególnie ważna. Mogę skanować następny będzie poprawiał poprzedni. Piszę sobie to wszystko BlitzMax NG. Jestem prawie u mety. Kończę kodować algorytm progowania No i zostanie mi właśnie to usuwanie śmieci. Na razie usuwam pojedyncze piksele i piksele które jednym bokiem przylegają do rysunku. Co dalej na razie nie mam pomysłu ale myślę że coś znajdę.

Pozostało 580 znaków

2019-06-24 22:53
1
Ryszard1960 napisał(a):

te śmieci. Szybkość nie jest szczególnie ważna. Mogę skanować następny będzie poprawiał poprzedni. Piszę sobie to wszystko BlitzMax NG. Jestem prawie u mety. Kończę kodować algorytm progowania No i zostanie mi właśnie to usuwanie śmieci.

Co to w ogóle jest BlitzMax NG? I dlaczego w tym piszesz?

Proponowałbym jakieś bardziej standardowe narzędzie do przetwarzania obrazów, typu Python + OpenCV lub SciPy, albo Octave. W każdym z nich to czego potrzebujesz powinieneś być w stanie napisać w kilku linijkach, nawet bez kodowania algorytmów, bo funkcje do filtrowania obrazu są dane.
Sprawdź np.:
https://scipy-lectures.org/ad[...].html#mathematical-morphology

poniżej jak to zrobić z opencv
https://stackoverflow.com/que[...]oising-binary-image-in-python

"SciPY" ha ha ha - au7h 2019-06-25 22:16

Pozostało 580 znaków

2019-06-25 22:10
0

Próbowałem używać programu ImageJ. Nie potrafił poradzić sobie z niektórymi rysunkami. Myślałem o open CV. Kupiłem nawet ebooka na ten temat poczytałem o opcjach który by mnie interesowały wydawało mi się że biblioteka nie ogarnia moich rysunków. Tym bardziej że musiałbym się od podstaw tego uczyć. Kodując w Blitz Basic Max NG którego już trochę znam wydaje mi się że będę miał większe panowanie nad kodem program zrobi to co ja chcę. Nie mam za dużo czasu na zabawę spieszy mi się trochę z tym. I tak na razie nic nie kumam na temat erozji o której kolega kilka postów wcześniej napisał. Jestem absolutnie początkującym programistą jeśli można nazwać mnie programistą. Nie mam żadnych podstaw. Zaistniała potrzeba próbuję jej sprostać dziękuję za uwagę

Pozostało 580 znaków

2019-06-25 22:11
0

No to nie bądź Januszem programowania, tylko zatrudnij kogoś, kto Ci to zrobi ;)

edytowany 1x, ostatnio: Spine, 2019-06-25 22:11

Pozostało 580 znaków

2019-06-25 22:18
1

Do filtrowania obrazów jest multum gotowych narzędzi w różnych edytorach.

Gdybyś się jednak chciał bawić w robienie własnych algorytmów to opisany problem przypomina mi trochę zabawy z grą w życie. Jej domyślny algorytm akurat ci się nie przyda, ale pamiętam, że bawiłam się przed laty w generowanie kontynentów w oparciu o kaszę losowych pikseli i odpowiednio dobierając reguły i liczbę operacji dawało się wydobyć z tego chaosu jakieś gładkie kształty.


Pozostało 580 znaków

2019-06-25 22:24
0

Jak napisałem jestem prawie u mety więc po co mam kogoś zatrudniać. po drugie jaka to satysfakcja napisać sobie coś samemu. Przepraszam za niezbyt gramatyczny tekst ale nie chce mi się pisać więc dyktuję.

Pozostało 580 znaków

2019-06-25 22:46
1
Ryszard1960 napisał(a):

Myślałem o open CV. Kupiłem nawet ebooka na ten temat poczytałem o opcjach który by mnie interesowały wydawało mi się że biblioteka nie ogarnia moich rysunków.

Co to znaczy "nie ogarnia moich rysunków"??? W jakim formacie masz te rysunki?

Tym bardziej że musiałbym się od podstaw tego uczyć. Kodując w Blitz Basic Max NG którego już trochę znam wydaje mi się że będę miał większe panowanie nad kodem program zrobi to co ja chcę.

Do takiego zadania wystarczą podstawy programowania, które opanuje w 10 minut.

Nie mam za dużo czasu na zabawę spieszy mi się trochę z tym. I tak na razie nic nie kumam na temat erozji o której kolega kilka postów wcześniej napisał.

Nie musisz kumać erozji. Wystarczy, że wiesz jak ją użyć. W tym wypadku lepsza będzie chyba operacja zamknięcia.
Poniżej masz efekt tej operacji na jakimś znalezionym w internecie skanie
screenshot-20190625224525.png
screenshot-20190625224538.png

coś takiego można osiągnąć w 4 linijkach w darmowym Octave:

im = imread('obrazek.jpg');
imlog = im > 128;
im2 = bwmorph(imlog,'close');
imwrite(im2,'closed.jpg');

Powyższy efekt może nie jest najlepszy, ale w prosty sposób można go poprawić, np. dobierając odpowiednie elementy strukturalne. Np. Zamiast powyższej linijki

im2 = bwmorph(imlog,'close');

można użyć:

se = strel("diamond",1);
im2 = imclose(imlog,se);

Dla powyższego obrazka efekt będzie trochę lepszy:
screenshot-20190625230137.png

edytowany 2x, ostatnio: GutekSan, 2019-06-25 23:02

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0