6

나는 이미지 분석 및 처리에 사용하기 위해 프로그래밍 언어 (코스를 가져 가라.)를 배워보고있다. 가능한 생물 정보학도. 어떤 언어를 사용해야합니까? C 또는 Java? 다른 언어는 나를위한 옵션이 아닙니다. 또한 왜 언어 중 하나가 제 신청에 더 나은 선택인지 설명하십시오.이미지 처리를위한 Java 또는 C

답변

4

원시 처리 능력과 개발자 시간의 균형을 유지해야합니다. Java는 매우 빨라지고 있습니다. 며칠 일찍 끝내면 데이터를 처리하는 데 더 많은 시간이 있습니다.

모두 용량에 따라 다릅니다.

더 중요한 것은, 이미 존재하는 라이브러리와 프레임 워크를 찾고, 수행해야 할 것에 가장 가까운 것을보고 라이브러리가 C, Java 또는 Fortran으로 작성된 언어를 선택하는 것이 좋습니다.

Java의 경우 시작 지점으로 BioJava.org을 발견했습니다.

4

Java가 이미지 처리에 적합하지 않습니다. 원본 개체를 적절하게 관리하면 타당한 성능을 얻을 수있는 기회가 생깁니다. 영상에 관한 내가 자바를 좋아하는 것들 중 일부 :

  1. 자바 고급 이미징
  2. 2D 그래픽 유틸리티는 JAMA 작동하도록하기 등
  3. ImageJ에,
  4. (BufferedImage의에서보세요)
3

당신이 (즉, 생물 정보학) 태양 이미지의 경우

, 대부분의에서 작업하는 현장에서 사람을 물어 작업은 IDL, Fortran, Matlab, Python, C 또는 Perl (PDL)에서 수행됩니다. IDL은 대다수의 교정 도구 소프트웨어가 IDL로 작성 되었기 때문에 IDL이 가장 먼저 나온다.

이 때문에 이미 해당 언어로 작성된 많은 툴킷이있다. 종종 대규모 참조 데이터 세트를 사용하여 PI는 데이터 형식을 해석/상호 작용하는 방법의 예로서 일부 소프트웨어 패키지를 출시합니다. Bioinformatics가 유사하다고 가정 할 수 있습니다.

나머지 필드와 다른 경로를 끝내면 코드를 쉽게 공유 할 수 없기 때문에 다른 과학자와 함께 작업하는 것이 훨씬 더 힘들어집니다.

주 - 우리 분야에서 발표 된 많은 시각화 도구가 Java로 작성되었지만 이미지가 이미 다른 프로세스에 의해 준비되어 있다고 가정합니다.

0

이상적으로 "높은 수준"의 물건에는 Java 또는 (더 나은) Python을 사용하고 Cython을 사용하는 등 많은 처리 능력이 필요한 루틴을 C에서 컴파일하십시오.

일부 과학 도서관은 Python (SciPy 및 NumPy) 용으로 제공되며 아직 시작하지 않았지만 Python과 C를 결합하는 것은 쉽지 않습니다 (약간 조정할 필요가 있음).

0

단지 내 두 펜스 가치 : 자바는 C/C++ 또는 C#과 반대되는 포인터의 사용을 허용하지 않습니다. 따라서 직접 픽셀을 조작하려는 경우, 즉 자신의 이미지 처리 함수를 작성하는 경우 C++의 해당 처리 기능보다 훨씬 느립니다. 반면에 C++은 Java에 비해 언어의 악몽입니다.해당 코드 비트를 C++로 작성하는 데 적어도 두 배의 시간이 소요됩니다. 그래서 모든 생산성 향상을 통해 런타임의 차이를 보완하는 컴퓨터를 구입할 수 있습니다 .-)

다른 언어는 옵션이 아니라는 것을 알고 있지만 개인적으로는 C# 처리 또는 컴퓨터 비전 : 그것은 포인터를 허용하므로 C#에서 IP 기능은 C++에서의 절반 정도의 속도가 느리고 (받아 들일 수있는 트레이드 오프라고 생각합니다), openCv 용 네이티브 C++ 및 래퍼 라이브러리와의 뛰어난 통합 기능을 제공합니다.

0

면책 조항 : TunaCode 근무하고 있습니다.

이미지 처리를 시작하기 위해 다른 언어를 선택해야하는 경우 C++로 시작하는 것이 좋습니다. 개개의 픽셀을 조작하고 싶다면 반드시 필요한 원시 포인터 액세스가 가능합니다.

다음으로 어떤 종류의 이미징에 관심이 있습니까? 재미있는 이미지 필터 나 움직임 추정, 추적 및 탐지 등과 같은 무거운 것들을 위해서? 이를 위해서는 나중에 CUVILib을보기 바란다. Imaging 기능에 대한 성능이 필요하며 CUVI가 제공하는 기능이다. 독립 실행 형으로 사용할 수도 있고, Intel IPP, ITK, OpenCV 등의 다른 라이브러리와 연결할 수도 있습니다.

1

가장 많이 사용되는 컴퓨터 비전 (이미지 처리, 이미지 분석) 라이브러리는 OpenCV으로 작성되었습니다. C++에서 사용할 수 있지만 Python과 Java (공식 OpenCV4Android 및 비공식 JavaCV)와 함께 사용할 수도 있습니다.

기본적으로 이미지 처리 인 Bioinformatic 응용 프로그램이 있으므로 OpenCV가 처리합니다. 그러나 그렇지 않은 것들도 있습니다. 예를 들어 기계 학습을 기반으로합니다. 따라서 이미지/비디오 이외의 것이 필요하다면 다른 Bioinformatic 지향 라이브러리가 필요합니다. Opencv는 또한 기계 학습 모듈을 가지고 있지만 컴퓨터 비전에 더 초점을 맞추고 있습니다.

C 언어와 Java 언어에 대해서는 대부분 다른 답변에서 말한 내용입니다. 이 라이브러리는 이제 C++ 기반이고 C 언어가 아니라는 점을 추가해야합니다. 응용 프로그램에 실시간 처리가 필요한 경우 C++이 더 좋을 것입니다. 그렇지 않은 경우 Java는 더 친숙 할 정도로 충분합니다.

관련 문제