カテゴリー: プログラミング

プログラミングについて

  • Hono

    話題の炎を使ってみた。Web Standardsというものを理解する必要があるようだ。

    アドベントカレンダーが真っ盛りのようです。

    アドベントカレンダーとは、クリスマスを待ち望む期間を楽しむためのカレンダーであり、通常は12月1日から始まり、クリスマスイブまでの24日間をカウントダウンする形式を取る。各日には小さな窓があり、開けるとお菓子やプレゼントが入っていることが多い。また、最近ではデジタル形式のアドベントカレンダーも存在し、様々な内容を提供する。クリスマスの楽しみを増やすための文化的なアイテム。

  • Cursor

    他の環境でも実現できるのか試してみたい。

  • 【学外】セミナー情報

    学生(日本)の参加料は50ドルです。

  • 女子ハッカソン

    男女を分けるのは意味がない派というか、KKLabの構成員、半分以上が女性です。

    レビーのハッカーズは本物の名著です。この書籍の内容を通じて、UCバークレーのBrian Harvey大先生のことを知りました。大先生は教育者として非常に影響力があり、彼が開発したプログラミング環境であるUCBLogoやSnapは、多くの学生や愛好者にプログラミングの楽しさを教える手助けをしています。

    Scratchもいいけど、Snapもね、それぞれ異なるアプローチでクリエイティブな表現を可能にしており、どちらも私たちの思考力を育む素晴らしいツールです。

    このように、レビーのハッカーズはただの技術書ではなく、コンピュータサイエンスの思考法を学ぶきっかけを提供してくれる一冊だと感じています。

  • 画像の背景を抜く

    #Python

    rembgを使います。

    from rembg import remove
    from PIL import Image
    
    # 画像を読み込む
    input_path = "input_image.png"
    output_path = "output_image.png"
    
    input_image = Image.open(input_path)
    
    # 背景を取り除く
    output_image = remove(input_image)
    
    # 結果を保存
    output_image.save(output_path)
    

  • 画像の類似度

    scikit-imageを使い、2つの画像の類似度を測ってみます。OpenCVなども使うことができると思います。

    画面がソフトラップしてくれないので見にくいですね。対策を考えなくては

    from skimage.metrics import structural_similarity as ssim
    from skimage import io, transform
    import os
    import numpy as np # Import numpy
    
    # 画像を読み込む
    # Get the current working directory
    current_directory = os.getcwd()
    
    # Load the images using the full path
    image1 = io.imread("/content/image1.png")
    image2 = io.imread("/content/image2.png")
    
    # Resize image2 to match the dimensions of image1
    image2 = transform.resize(image2, image1.shape, anti_aliasing=True)
    
    # SSIMを計算
    # Dynamically adjust win_size based on image dimensions, ensuring it's odd
    win_size = min(7, min(image1.shape[0], image1.shape[1]) - 1)
    win_size = win_size if win_size % 2 != 0 else win_size - 1
    
    # Further reduce win_size if still too large
    # This loop iteratively reduces win_size until it fits within the image dimensions.
    while win_size > 1 and np.any((np.asarray(image1.shape) - win_size) < 0):
        win_size -= 2
    
    # Calculate SSIM with the adjusted win_size and actual data range
    ssim_score = ssim(image1, image2, multichannel=True, win_size=win_size, data_range=image1.max() - image1.min())
    
    # 0から100の指標に変換
    similarity_score = (ssim_score + 1) * 50
    
    print(f"類似度: {similarity_score:.2f}")
    

    構造的類似性指標 (SSIM):

    • 画像の輝度、コントラスト、構造を考慮して類似度を評価します。
    • 人間の視覚 perception に近い評価ができます。

    上のサンプルコードは、Google の Colab で簡単に試すことが可能です。画像の準備が必要です。

    https://colab.research.google.com